')
const messageRep2 = messageRep1.split('').join('"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"text","text":"')
const messageRep3 = messageRep2.split('
').join('"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"text","text":"')
@@ -2833,11 +2858,11 @@ const decode = (string, keys, ref) => {
}
if (responseData.type === "edit") {
- hubString = '{"messageText":{"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"' + messageStr + '"}]}]},"images":[""],"repliedTo":"' + repliedToStr + '","version":3,"isEdited":true}'
+ hubString = '{"messageText":{"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"' + messageStr + '"}]}]}' + addedFileStr + ',"repliedTo":"' + repliedToStr + '","version":3,"isEdited":true,"isFromHub":true}'
} else if (responseData.type === "reaction") {
- hubString = '{"messageText":{"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"' + messageStr + '"}]}]},"images":[""],"repliedTo":"' + repliedToStr + '","version":3,"isReaction":true}'
+ hubString = '{"messageText":{"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"' + messageStr + '"}]}]}' + addedFileStr + ',"repliedTo":"' + repliedToStr + '","version":3,"isReaction":true,"isFromHub":true}'
} else {
- hubString = '{"messageText":{"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"' + messageStr + '"}]}]},"images":[""],"repliedTo":"' + repliedToStr + '","version":3}'
+ hubString = '{"messageText":{"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"' + messageStr + '"}]}]}' + addedFileStr + ',"repliedTo":"' + repliedToStr + '","version":3,"isFromHub":true}'
}
const preparedString = hubString.split('').join('\\"')
diff --git a/plugins/plugins/core/qdn/browser/browser.src.js b/plugins/plugins/core/qdn/browser/browser.src.js
index d7c7f20f..c49dbbb5 100644
--- a/plugins/plugins/core/qdn/browser/browser.src.js
+++ b/plugins/plugins/core/qdn/browser/browser.src.js
@@ -1,29 +1,30 @@
-import { html, LitElement } from 'lit'
-import { Epml } from '../../../../epml'
+import {html, LitElement} from 'lit'
+import {Epml} from '../../../../epml'
+import {Sha256} from 'asmcrypto.js'
import {
- Loader,
- publishData,
- getPublishesFromAdmins,
- getGroupAdmins,
- getPublishesFromAdminsAdminSpace,
- isUsingPublicNode,
- createBuyOrderTx,
- requestQueueGetAtAddresses,
- getUserWalletFunc,
- tradeBotCreateRequest,
cancelTradeOfferTradeBot,
- processTransactionV2
+ createBuyOrderTx,
+ getGroupAdmins,
+ getPublishesFromAdmins,
+ getPublishesFromAdminsAdminSpace,
+ getUserWalletFunc,
+ isUsingPublicNode,
+ Loader,
+ processTransactionV2,
+ publishData,
+ requestQueueGetAtAddresses,
+ tradeBotCreateRequest
} from '../../../utils/classes'
-import { appendBuffer } from '../../../utils/utilities'
-import { QORT_DECIMALS } from '../../../../../crypto/api/constants'
-import { mimeToExtensionMap, listOfAllQortalRequests } from '../../components/qdn-action-constants'
+import {appendBuffer} from '../../../utils/utilities'
+import {QORT_DECIMALS} from '../../../../../crypto/api/constants'
+import {listOfAllQortalRequests} from '../../components/qdn-action-constants'
import {
- uint8ArrayToObject,
- validateSecretKey,
- encryptSingle,
- decryptSingle,
createSymmetricKeyAndNonce,
- decryptGroupEncryptionWithSharingKey
+ decryptGroupEncryptionWithSharingKey,
+ decryptSingle,
+ encryptSingle,
+ uint8ArrayToObject,
+ validateSecretKey
} from '../../components/GroupEncryption'
import {
base64ToUint8Array,
@@ -33,28 +34,28 @@ import {
encryptDataGroup,
encryptDataGroupNew,
fileToBase64,
- uint8ArrayStartsWith,
- uint8ArrayToBase64,
- base64ToBlobUrl,
groupSecretkeys,
objectToBase64,
- roundUpToDecimals
+ roundUpToDecimals,
+ uint8ArrayStartsWith,
+ uint8ArrayToBase64
} from '../../components/qdn-action-encryption'
-import { webBrowserStyles, webBrowserModalStyles } from '../../components/plugins-css'
+import {webBrowserModalStyles, webBrowserStyles} from '../../components/plugins-css'
import * as actions from '../../components/qdn-action-types'
import isElectron from 'is-electron'
import ShortUniqueId from 'short-unique-id'
-import FileSaver from 'file-saver'
import WebWorker from 'web-worker:./computePowWorkerFile.js'
import WebWorkerChat from 'web-worker:./computePowWorker.js'
import Base58 from '../../../../../crypto/api/deps/Base58'
+import ed2curve from '../../../../../crypto/api/deps/ed2curve'
import nacl from '../../../../../crypto/api/deps/nacl-fast'
import '@material/mwc-button'
import '@material/mwc-icon'
import '@material/mwc-checkbox'
// Multi language support
-import { get, registerTranslateConfig, translate, use } from '../../../../../core/translate'
+import {get, registerTranslateConfig, translate, use} from '../../../../../core/translate'
+
registerTranslateConfig({
loader: lang => fetch(`/language/${lang}.json`).then(res => res.json())
})
@@ -148,11 +149,11 @@ class WebBrowser extends LitElement {
} else {
displayUrl = 'qortal://' + this.service + '/' + this.name
- if (this.identifier && this.identifier != 'null' && this.identifier != 'default') {
+ if (this.identifier && this.identifier !== 'null' && this.identifier !== 'default') {
displayUrl = displayUrl.concat('/' + this.identifier)
}
- if (this.path != null && this.path != '/') {
+ if (this.path != null && this.path !== '/') {
displayUrl = displayUrl.concat(this.path)
}
}
@@ -192,7 +193,7 @@ class WebBrowser extends LitElement {
this.url = `${this.link}`
} else {
// Normal mode
- this.url = `${nodeUrl}/render/${this.service}/${this.name}${this.path != null ? this.path : ''}?theme=${this.theme}&identifier=${(this.identifier != null && this.identifier != 'null') ? this.identifier : ''}`
+ this.url = `${nodeUrl}/render/${this.service}/${this.name}${this.path != null ? this.path : ''}?theme=${this.theme}&identifier=${(this.identifier != null && this.identifier !== 'null') ? this.identifier : ''}`
}
}
@@ -252,7 +253,7 @@ class WebBrowser extends LitElement {
this.goBackToList()} title="${translate('browserpage.bchange3')}" class="address-bar-button">
home
-
+
${this.renderFullScreen()}
this.delete()} title="${translate('browserpage.bchange4')} ${this.service} ${this.name} ${translate('browserpage.bchange5')}" class="address-bar-button float-right">
delete
@@ -305,7 +306,7 @@ class WebBrowser extends LitElement {
}
window.addEventListener('message', async (event) => {
- if (event == null || event.data == null || event.data.length == 0 || event.data.action == null) {
+ if (event == null || event.data == null || event.data.length === 0 || event.data.action == null) {
return
}
@@ -314,10 +315,9 @@ class WebBrowser extends LitElement {
switch (data.action) {
case actions.IS_USING_PUBLIC_NODE: {
- const res = await isUsingPublicNode()
- response = res
- break
+ response = await isUsingPublicNode()
}
+ break
case actions.ADMIN_ACTION: {
let type = data.type
@@ -375,7 +375,8 @@ class WebBrowser extends LitElement {
includeValueInBody = true
break
default:
- throw new Error(`Unknown admin action type: ${type}`)
+ console.error(`Unknown admin action type: ${type}`)
+ break
}
// Set up options for the API call
let options = {
@@ -402,13 +403,13 @@ class WebBrowser extends LitElement {
data['error'] = `User declined admin action: ${type}`
response = JSON.stringify(data)
}
- break
}
+ break
case actions.SHOW_ACTIONS: {
response = listOfAllQortalRequests
- break
}
+ break
case actions.GET_USER_ACCOUNT: {
let skip = false
@@ -436,9 +437,9 @@ class WebBrowser extends LitElement {
const data = {}
data['error'] = "User declined to share account details"
response = JSON.stringify(data)
- break
}
}
+ break
case actions.ENCRYPT_DATA: {
try {
@@ -469,9 +470,9 @@ class WebBrowser extends LitElement {
const data = {}
data['error'] = error.message || "Error in encrypting data"
response = JSON.stringify(data)
- break
}
}
+ break
case actions.DECRYPT_DATA: {
const { encryptedData, publicKey } = data
@@ -510,12 +511,12 @@ class WebBrowser extends LitElement {
const data = {}
data['error'] = error.message || "Error in decrypting data"
response = JSON.stringify(data)
- break
}
}
+ break
case actions.ENCRYPT_QORTAL_GROUP_DATA: {
- let data64 = data.data64 || data.base64
+ let data64 = data.data64 ? data.data64 : data.base64
let groupId = data.groupId
let isAdmins = data.isAdmins
let dataSentBack = {}
@@ -542,7 +543,6 @@ class WebBrowser extends LitElement {
) {
secretKeyObject = groupSecretkeys[groupId].secretKeyObject
}
-
if(!secretKeyObject) {
const { names } = await getGroupAdmins(groupId)
const publish = await getPublishesFromAdmins(names, groupId)
@@ -551,10 +551,10 @@ class WebBrowser extends LitElement {
response = JSON.stringify(dataSentBack)
break
}
- const res = await parentEpml.request('apiCall', {
+ const resData = await parentEpml.request('apiCall', {
+ type: 'api',
url: `/arbitrary/DOCUMENT_PRIVATE/${publish.name}/${publish.identifier}?encoding=base64`
})
- const resData = await res.text()
const decryptedKey = await this.decryptResourceQDN(resData)
const dataint8Array = base64ToUint8Array(decryptedKey.data)
const decryptedKeyToObject = uint8ArrayToObject(dataint8Array)
@@ -564,7 +564,8 @@ class WebBrowser extends LitElement {
break
}
secretKeyObject = decryptedKeyToObject
- groupSecretkeys[groupId] = {
+ let groupSecretkeys = {}
+ groupSecretkeys[`${groupId}`] = {
secretKeyObject,
timestamp: Date.now()
}
@@ -586,10 +587,10 @@ class WebBrowser extends LitElement {
response = JSON.stringify(dataSentBack)
break
}
- const res = await parentEpml.request('apiCall', {
+ const resData = await parentEpml.request('apiCall', {
+ type: 'api',
url: `/arbitrary/DOCUMENT_PRIVATE/${publish.name}/${publish.identifier}?encoding=base64`
})
- const resData = await res.text()
const decryptedKey = await this.decryptResourceQDN(resData)
const dataint8Array = base64ToUint8Array(decryptedKey.data)
const decryptedKeyToObject = uint8ArrayToObject(dataint8Array)
@@ -599,26 +600,25 @@ class WebBrowser extends LitElement {
break
}
secretKeyObject = decryptedKeyToObject
+ let groupSecretkeys = {}
groupSecretkeys[`admins-${groupId}`] = {
secretKeyObject,
timestamp: Date.now()
}
}
}
- const resGroupEncryptedResource = encryptSingle({
- data64, secretKeyObject: secretKeyObject
- })
+ const resGroupEncryptedResource = encryptSingle(data64, secretKeyObjec)
if (resGroupEncryptedResource) {
- return resGroupEncryptedResource
+ response = resGroupEncryptedResource
} else {
dataSentBack['error'] = "Unable to encrypt"
response = JSON.stringify(dataSentBack)
- break
}
}
+ break
case actions.DECRYPT_QORTAL_GROUP_DATA: {
- let data64 = data.data64 || data.base64
+ let data64 = data.daat64 ? data.daat64 : data.base64
let groupId = data.groupId
let isAdmins = data.isAdmins
let dataSentBack = {}
@@ -642,7 +642,6 @@ class WebBrowser extends LitElement {
) {
secretKeyObject = groupSecretkeys[groupId].secretKeyObject
}
-
if (!secretKeyObject) {
const { names } = await getGroupAdmins(groupId)
const publish = await getPublishesFromAdmins(names, groupId)
@@ -651,10 +650,10 @@ class WebBrowser extends LitElement {
response = JSON.stringify(dataSentBack)
break
}
- const res = await parentEpml.request('apiCall', {
+ const resData = await parentEpml.request('apiCall', {
+ type: 'api',
url: `/arbitrary/DOCUMENT_PRIVATE/${publish.name}/${publish.identifier}?encoding=base64`
})
- const resData = await res.text()
const decryptedKey = await this.decryptResourceQDN(resData)
const dataint8Array = base64ToUint8Array(decryptedKey.data)
const decryptedKeyToObject = uint8ArrayToObject(dataint8Array)
@@ -664,7 +663,8 @@ class WebBrowser extends LitElement {
break
}
secretKeyObject = decryptedKeyToObject
- groupSecretkeys[groupId] = {
+ let groupSecretkeys ={}
+ groupSecretkeys[`${groupId}`] = {
secretKeyObject,
timestamp: Date.now()
}
@@ -686,10 +686,10 @@ class WebBrowser extends LitElement {
response = JSON.stringify(dataSentBack)
break
}
- const res = await parentEpml.request('apiCall', {
+ const resData = await parentEpml.request('apiCall', {
+ type: 'api',
url: `/arbitrary/DOCUMENT_PRIVATE/${publish.name}/${publish.identifier}?encoding=base64`
})
- const resData = await res.text()
const decryptedKey = await this.decryptResourceQDN(resData)
const dataint8Array = base64ToUint8Array(decryptedKey.data)
const decryptedKeyToObject = uint8ArrayToObject(dataint8Array)
@@ -699,23 +699,22 @@ class WebBrowser extends LitElement {
break
}
secretKeyObject = decryptedKeyToObject
+ let groupSecretkeys ={}
groupSecretkeys[`admins-${groupId}`] = {
secretKeyObject,
timestamp: Date.now()
}
}
}
- const resGroupDecryptResource = decryptSingle({
- data64, secretKeyObject: secretKeyObject, skipDecodeBase64: true
- })
+ const resGroupDecryptResource = decryptSingle(data64, secretKeyObject, false)
if (resGroupDecryptResource) {
- return resGroupDecryptResource
+ response = resGroupDecryptResource
} else {
dataSentBack['error'] = "Unable to decrypt"
response = JSON.stringify(dataSentBack)
- break
}
}
+ break
case actions.ENCRYPT_DATA_WITH_SHARING_KEY: {
let data64 = data.data64 || data.base64
@@ -749,9 +748,9 @@ class WebBrowser extends LitElement {
} else {
dataSentBack['error'] = "Unable to encrypt"
response = JSON.stringify(dataSentBack)
- break
}
}
+ break
case actions.DECRYPT_DATA_WITH_SHARING_KEY: {
let dataSentBack = {}
@@ -771,9 +770,82 @@ class WebBrowser extends LitElement {
} else {
dataSentBack['error'] = "No data in the decrypted resource"
response = JSON.stringify(dataSentBack)
- break
}
}
+ break
+
+ case actions.DECRYPT_AESGCM: {
+ const requiredFields = ["encryptedData", "iv", "senderPublicKey"]
+ const missingFields = []
+ let dataSentBack = {}
+ requiredFields.forEach((field) => {
+ if (!data[field]) {
+ missingFields.push(field)
+ }
+ })
+ if (missingFields.length > 0) {
+ const missingFieldsString = missingFields.join(', ')
+ const tryAgain = get("walletpage.wchange44")
+ await showErrorAndWait(
+ "MISSING_FIELDS",
+ {
+ id1: missingFieldsString,
+ id2: tryAgain
+ }
+ )
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
+ response = JSON.stringify(dataSentBack)
+ break
+ }
+ const encryptedData = data.encryptedData
+ const iv = data.iv
+ const senderPublicKeyBase58 = data.senderPublicKey
+ // Decode keys and IV
+ const senderPublicKey = Base58.decode(senderPublicKeyBase58)
+ const uint8PrivateKey = window.parent.reduxStore.getState().app.selectedAddress.keyPair.privateKey
+ // Convert ed25519 keys to Curve25519
+ const convertedPrivateKey = ed2curve.convertSecretKey(uint8PrivateKey)
+ const convertedPublicKey = ed2curve.convertPublicKey(senderPublicKey)
+ // Generate shared secret
+ const sharedSecret = new Uint8Array(32)
+ nacl.lowlevel.crypto_scalarmult(sharedSecret, convertedPrivateKey, convertedPublicKey)
+ // Derive encryption key
+ let encryptionKey = new Uint8Array(32)
+ encryptionKey = new Sha256().process(sharedSecret).finish().result
+ // Convert IV and ciphertext from Base64
+ const base64ToUint8Array = (base64) => Uint8Array.from(atob(base64), c => c.charCodeAt(0))
+ const ivUint8Array = base64ToUint8Array(iv)
+ const ciphertext = base64ToUint8Array(encryptedData)
+ // Validate IV and key lengths
+ if (ivUint8Array.length !== 12) {
+ let myMsg1 = get("managegroup.mg58")
+ let myMsg2 = get("walletpage.wchange44")
+ await showErrorAndWait("ACTION_FAILED", { id1: myMsg1, id2: myMsg2 })
+ response = '{"error": "Invalid IV: AES-GCM requires a 12-byte IV."}'
+ break
+ }
+ if (encryptionKey.length !== 32) {
+ let myMsg1 = get("managegroup.mg58")
+ let myMsg2 = get("walletpage.wchange44")
+ await showErrorAndWait("ACTION_FAILED", { id1: myMsg1, id2: myMsg2 })
+ response = '{"error": "Invalid key: AES-GCM requires a 256-bit key."}'
+ break
+ }
+ try {
+ // Decrypt data
+ const algorithm = { name: "AES-GCM", iv: ivUint8Array }
+ const cryptoKey = await crypto.subtle.importKey("raw", encryptionKey, algorithm, false, ["decrypt"])
+ const decryptedArrayBuffer = await crypto.subtle.decrypt(algorithm, cryptoKey, ciphertext)
+ // Return decrypted data as Base64
+ return uint8ArrayToBase64(new Uint8Array(decryptedArrayBuffer))
+ } catch (error) {
+ let myMsg1 = get("managegroup.mg58")
+ let myMsg2 = get("walletpage.wchange44")
+ await showErrorAndWait("ACTION_FAILED", { id1: myMsg1, id2: myMsg2 })
+ response = '{"error": "Failed to decrypt the message. Ensure the data and keys are correct."}'
+ }
+ }
+ break
case actions.CREATE_TRADE_BUY_ORDER: {
const node = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node]
@@ -796,8 +868,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -809,7 +880,6 @@ class WebBrowser extends LitElement {
const url = `${nodeUrl}/crosschain/trade/${atAddress}`
const resAddress = await fetch(url)
const resData = await resAddress.json()
-
if (foreignBlockchain !== resData.foreignBlockchain) {
let myMsg1 = get("modals.mpchange1")
let myMsg2 = get("walletpage.wchange44")
@@ -817,7 +887,6 @@ class WebBrowser extends LitElement {
response = '{"error": "All requested ATs need to be of the same foreign Blockchain."}'
throw new Error("All requested ATs need to be of the same foreign Blockchain.")
}
-
return resData
})
)
@@ -873,6 +942,7 @@ class WebBrowser extends LitElement {
break
}
}
+ break
case actions.CREATE_TRADE_SELL_ORDER: {
const requiredFields = ["qortAmount", "foreignBlockchain", "foreignAmount"]
@@ -893,8 +963,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -952,6 +1021,7 @@ class WebBrowser extends LitElement {
break
}
}
+ break
case actions.CANCEL_TRADE_SELL_ORDER: {
const requiredFields = ["atAddress"]
@@ -972,8 +1042,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -1038,6 +1107,7 @@ class WebBrowser extends LitElement {
break
}
}
+ break
case actions.GET_LIST_ITEMS: {
const requiredFields = ['list_name']
@@ -1058,8 +1128,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -1083,6 +1152,7 @@ class WebBrowser extends LitElement {
url: `/lists/${data.list_name}?apiKey=${this.getApiKey()}`
})
response = JSON.stringify(list)
+ break
} catch (error) {
let myMsg1 = get("modals.mpchange16")
let myMsg2 = get("walletpage.wchange44")
@@ -1090,7 +1160,6 @@ class WebBrowser extends LitElement {
const data = {}
data['error'] = "Error in retrieving list."
response = JSON.stringify(data)
- } finally {
break
}
} else {
@@ -1098,9 +1167,9 @@ class WebBrowser extends LitElement {
let myMsg2 = get("walletpage.wchange44")
await showErrorAndWait("DECLINED_REQUEST", { id1: myMsg1, id2: myMsg2 })
response = '{"error": "User declined request"}'
- break
}
}
+ break
case actions.ADD_LIST_ITEMS: {
const requiredFields = ['list_name', 'items']
@@ -1121,8 +1190,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -1150,6 +1218,7 @@ class WebBrowser extends LitElement {
'Content-Type': 'application/json'
}
})
+ break
} catch (error) {
let myMsg1 = get("modals.mpchange17")
let myMsg2 = get("walletpage.wchange44")
@@ -1157,7 +1226,6 @@ class WebBrowser extends LitElement {
const data = {}
data['error'] = "Error in adding to list."
response = JSON.stringify(data)
- } finally {
break
}
} else {
@@ -1165,9 +1233,9 @@ class WebBrowser extends LitElement {
let myMsg2 = get("walletpage.wchange44")
await showErrorAndWait("DECLINED_REQUEST", { id1: myMsg1, id2: myMsg2 })
response = '{"error": "User declined request"}'
- break
}
}
+ break
case actions.DELETE_LIST_ITEM: {
const requiredFields = ['list_name', 'item']
@@ -1188,8 +1256,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -1217,6 +1284,7 @@ class WebBrowser extends LitElement {
'Content-Type': 'application/json'
}
})
+ break
} catch (error) {
let myMsg1 = get("modals.mpchange18")
let myMsg2 = get("walletpage.wchange44")
@@ -1224,7 +1292,6 @@ class WebBrowser extends LitElement {
const data = {}
data['error'] = "Error in delete list."
response = JSON.stringify(data)
- } finally {
break
}
} else {
@@ -1232,9 +1299,9 @@ class WebBrowser extends LitElement {
let myMsg2 = get("walletpage.wchange44")
await showErrorAndWait("DECLINED_REQUEST", { id1: myMsg1, id2: myMsg2 })
response = '{"error": "User declined request"}'
- break
}
}
+ break
case actions.GET_FRIENDS_LIST: {
let skip = false
@@ -1252,6 +1319,7 @@ class WebBrowser extends LitElement {
let list = JSON.parse(localStorage.getItem('friends-my-friend-list') || "[]")
list = list.map((friend) => friend.name || "")
response = JSON.stringify(list)
+ break
} catch (error) {
let myMsg1 = get("modals.mpchange19")
let myMsg2 = get("walletpage.wchange44")
@@ -1259,7 +1327,6 @@ class WebBrowser extends LitElement {
const data = {}
data['error'] = "Error in retrieving friends list."
response = JSON.stringify(data)
- } finally {
break
}
} else {
@@ -1267,9 +1334,9 @@ class WebBrowser extends LitElement {
let myMsg2 = get("walletpage.wchange44")
await showErrorAndWait("DECLINED_REQUEST", { id1: myMsg1, id2: myMsg2 })
response = '{"error": "User declined request"}'
- break
}
}
+ break
case actions.LINK_TO_QDN_RESOURCE:
case actions.QDN_RESOURCE_DISPLAYED:
@@ -1277,14 +1344,14 @@ class WebBrowser extends LitElement {
// Note: don't update this.url here, as we don't want to force reload the iframe each time.
if (this.preview != null && this.preview.length > 0) {
this.displayUrl = translate("appspage.schange40")
- return
+ break
}
let url = 'qortal://' + data.service + '/' + data.name
this.path = data.path != null ? (data.path.startsWith('/') ? '' : '/') + data.path : null
- if (data.identifier != null && data.identifier != '' && data.identifier != 'default') {
+ if (data.identifier != null && data.identifier !== '' && data.identifier !== 'default') {
url = url.concat('/' + data.identifier)
}
- if (this.path != null && this.path != '/') {
+ if (this.path != null && this.path !== '/') {
url = url.concat(this.path)
}
this.name = data.name
@@ -1304,7 +1371,7 @@ class WebBrowser extends LitElement {
service: data.service,
id: tabId ? tabId : ''
}))
- return
+ break
case actions.SET_TAB_NOTIFICATIONS: {
const { count } = data
@@ -1327,8 +1394,8 @@ class WebBrowser extends LitElement {
count: count
}))
response = true
- break
}
+ break
case actions.PUBLISH_QDN_RESOURCE: {
// optional fields: encrypt:boolean recipientPublicKey:string
@@ -1350,8 +1417,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -1422,7 +1488,6 @@ class WebBrowser extends LitElement {
response = JSON.stringify(obj)
break
}
-
}
const res2 = await showModalAndWait(
actions.PUBLISH_QDN_RESOURCE,
@@ -1489,8 +1554,8 @@ class WebBrowser extends LitElement {
// TODO: prompt user for publish. If they confirm, call `POST /arbitrary/{service}/{name}/{identifier}/base64` and sign+process transaction
// then set the response string from the core to the `response` variable (defined above)
// If they decline, send back JSON that includes an `error` key, such as `{"error": "User declined request"}`
- break
}
+ break
case actions.PUBLISH_MULTIPLE_QDN_RESOURCES: {
const requiredFields = ['resources']
@@ -1512,8 +1577,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -1591,7 +1655,6 @@ class WebBrowser extends LitElement {
})
continue
}
-
const service = resource.service
const name = resource.name
let identifier = resource.identifier
@@ -1699,8 +1762,8 @@ class WebBrowser extends LitElement {
break
}
response = true
- break
}
+ break
case actions.VOTE_ON_POLL: {
const requiredFields = ['pollName', 'optionIndex']
@@ -1721,8 +1784,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -1768,8 +1830,8 @@ class WebBrowser extends LitElement {
} finally {
this.loader.hide()
}
- break
}
+ break
case actions.CREATE_POLL: {
const requiredFields = ['pollName', 'pollDescription', 'pollOptions', 'pollOwnerAddress']
@@ -1790,8 +1852,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -1813,8 +1874,8 @@ class WebBrowser extends LitElement {
} finally {
this.loader.hide()
}
- break
}
+ break
case actions.OPEN_NEW_TAB: {
if (!data.qortalLink) {
@@ -1837,9 +1898,9 @@ class WebBrowser extends LitElement {
const obj = {}
obj['error'] = "Invalid qortal link."
response = JSON.stringify(obj)
- break
}
}
+ break
case actions.NOTIFICATIONS_PERMISSION: {
try {
@@ -1858,16 +1919,25 @@ class WebBrowser extends LitElement {
break
}
} catch (error) {
- break
+ console.error(error)
}
}
+ break
case actions.SEND_LOCAL_NOTIFICATION: {
const { title, url, icon, message } = data
try {
const id = `appNotificationList-${this.selectedAddress.address}`
const checkData = localStorage.getItem(id) ? JSON.parse(localStorage.getItem(id)) : null
- if (!checkData || !checkData[this.name]) throw new Error('App not on permission list')
+ if (!checkData || !checkData[this.name]) {
+ let myMsg1 = get("modals.mpchange34")
+ let myMsg2 = get("walletpage.wchange44")
+ await showErrorAndWait("ACTION_FAILED", { id1: myMsg1, id2: myMsg2 })
+ const obj = {}
+ obj['error'] = "App not on permission list"
+ response = JSON.stringify(obj)
+ break
+ }
const appInfo = checkData[this.name]
const lastNotification = appInfo.lastNotification
const interval = appInfo.interval
@@ -1881,7 +1951,13 @@ class WebBrowser extends LitElement {
this.updateLastNotification(id, this.name)
break
} else {
- throw new Error(`invalid data`)
+ let myMsg1 = get("modals.mpchange34")
+ let myMsg2 = get("walletpage.wchange44")
+ await showErrorAndWait("ACTION_FAILED", { id1: myMsg1, id2: myMsg2 })
+ const obj = {}
+ obj['error'] = "Invalid data"
+ response = JSON.stringify(obj)
+ break
}
} else if (!lastNotification) {
parentEpml.request('showNotification', {
@@ -1891,11 +1967,13 @@ class WebBrowser extends LitElement {
this.updateLastNotification(id)
break
} else {
- let myMsg1 = get("modals.mpchange27")
+ let myMsg1 = get("modals.mpchange34")
let myMsg2 = get("walletpage.wchange44")
await showErrorAndWait("ACTION_FAILED", { id1: myMsg1, id2: myMsg2 })
- throw new Error(`invalid data.`)
- }
+ const obj = {}
+ obj['error'] = "Invalid data"
+ response = JSON.stringify(obj)
+ break }
} catch (error) {
let myMsg1 = get("modals.mpchange35")
let myMsg2 = get("walletpage.wchange44")
@@ -1903,9 +1981,9 @@ class WebBrowser extends LitElement {
const obj = {}
obj['error'] = error.message ? error.message : get("modals.mpchange35")
response = JSON.stringify(obj)
- break
}
}
+ break
case actions.SEND_CHAT_MESSAGE: {
const message = data.message
@@ -2073,8 +2151,8 @@ class WebBrowser extends LitElement {
// TODO: prompt user to send chat message. If they confirm, sign+process a CHAT transaction
// then set the response string from the core to the `response` variable (defined above)
// If they decline, send back JSON that includes an `error` key, such as `{"error": "User declined request"}`
- break
}
+ break
case actions.JOIN_GROUP: {
const requiredFields = ['groupId']
@@ -2095,8 +2173,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -2173,118 +2250,7 @@ class WebBrowser extends LitElement {
break
}
}
-
- case actions.SAVE_FILE: {
- try {
- const requiredFields = ['filename', 'blob']
- const missingFields = []
- let dataSentBack = {}
- requiredFields.forEach((field) => {
- if (!data[field]) {
- missingFields.push(field)
- }
- })
- if (missingFields.length > 0) {
- const missingFieldsString = missingFields.join(', ')
- const tryAgain = get("walletpage.wchange44")
- await showErrorAndWait(
- "MISSING_FIELDS",
- {
- id1: missingFieldsString,
- id2: tryAgain
- }
- )
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
- response = JSON.stringify(dataSentBack)
- break
- }
- const filename = data.filename
- const blob = data.blob
- const res = await showModalAndWait(
- actions.SAVE_FILE,
- {
- filename
- }
- )
- if (res.action === 'reject') {
- let myMsg1 = get("transactions.declined")
- let myMsg2 = get("walletpage.wchange44")
- await showErrorAndWait("DECLINED_REQUEST", { id1: myMsg1, id2: myMsg2 })
- response = '{"error": "User declined request"}'
- break
- }
- const mimeType = blob.type || data.mimeType
- let backupExention = filename.split('.').pop()
- if (backupExention) {
- backupExention = '.' + backupExention
- }
- const fileExtension = mimeToExtensionMap[mimeType] || backupExention
- let fileHandleOptions = {}
- if (!mimeType) {
- let myMsg1 = get("modals.mpchange45")
- let myMsg2 = get("walletpage.wchange44")
- await showErrorAndWait("ACTION_FAILED", { id1: myMsg1, id2: myMsg2 })
- const obj = {}
- obj['error'] = 'A mime type could not be derived.'
- response = JSON.stringify(obj)
- break
- }
- if (!fileExtension) {
- let myMsg1 = get("modals.mpchange46")
- let myMsg2 = get("walletpage.wchange44")
- await showErrorAndWait("ACTION_FAILED", { id1: myMsg1, id2: myMsg2 })
- const obj = {}
- obj['error'] = 'A file extension could not be derived.'
- response = JSON.stringify(obj)
- break
- }
- if (fileExtension && mimeType) {
- fileHandleOptions = {
- accept: {
- [mimeType]: [fileExtension]
- }
- }
- }
- try {
- const fileHandle = await self.showSaveFilePicker({
- suggestedName: filename,
- types: [
- {
- description: mimeType,
- ...fileHandleOptions
- }
- ]
- })
- const writeFile = async (fileHandle, contents) => {
- const writable = await fileHandle.createWritable()
- await writable.write(contents)
- await writable.close()
- }
- writeFile(fileHandle, blob).then(() => console.log("FILE SAVED"))
- } catch (error) {
- if (error.name === 'AbortError') {
- let myMsg1 = get("modals.mpchange47")
- let myMsg2 = get("walletpage.wchange44")
- await showErrorAndWait("ACTION_FAILED", { id1: myMsg1, id2: myMsg2 })
- const obj = {}
- obj['error'] = 'User declined the download.'
- response = JSON.stringify(obj)
- break
- }
- FileSaver.saveAs(blob, filename)
- }
- response = JSON.stringify(true)
- } catch (error) {
- let myMsg1 = get("modals.mpchange48")
- let myMsg2 = get("walletpage.wchange44")
- await showErrorAndWait("ACTION_FAILED", { id1: myMsg1, id2: myMsg2 })
- const obj = {}
- obj['error'] = error.message ? error.message : get("modals.mpchange48")
- response = JSON.stringify(obj)
- }
break
- }
case actions.DEPLOY_AT: {
const requiredFields = ['name', 'description', 'tags', 'creationBytes', 'amount', 'assetId', 'type']
@@ -2305,8 +2271,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -2314,18 +2279,19 @@ class WebBrowser extends LitElement {
this.loader.show()
const resDeployAt = await this._deployAt(data.name, data.description, data.tags, data.creationBytes, data.amount, data.assetId, data.type)
response = JSON.stringify(resDeployAt)
+ this.loader.hide()
+ break
} catch (error) {
+ this.loader.hide()
let myMsg1 = get("modals.mpchange49")
let myMsg2 = get("walletpage.wchange44")
await showErrorAndWait("ACTION_FAILED", { id1: myMsg1, id2: myMsg2 })
const obj = {}
obj['error'] = error.message ? error.message : get("modals.mpchange49")
response = JSON.stringify(obj)
- } finally {
- this.loader.hide()
}
- break
}
+ break
case actions.GET_PROFILE_DATA: {
const defaultProperties = ['tagline', 'bio', 'wallets']
@@ -2347,8 +2313,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -2421,9 +2386,9 @@ class WebBrowser extends LitElement {
const obj = {}
obj['error'] = error.message ? error.message : get("modals.mpchange52")
response = JSON.stringify(obj)
- break
}
}
+ break
case actions.SET_PROFILE_DATA: {
const requiredFields = ['property', 'data']
@@ -2444,8 +2409,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -2511,8 +2475,8 @@ class WebBrowser extends LitElement {
obj['error'] = error.message ? error.message : get("modals.mpchange53")
response = JSON.stringify(obj)
}
- break
}
+ break
case actions.OPEN_PROFILE: {
const requiredFields = ['name']
@@ -2533,8 +2497,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -2552,9 +2515,9 @@ class WebBrowser extends LitElement {
const obj = {}
obj['error'] = error.message ? error.message : get("modals.mpchange54")
response = JSON.stringify(obj)
- break
}
}
+ break
case actions.GET_USER_WALLET: {
const requiredFields = ['coin']
@@ -2575,8 +2538,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -2635,6 +2597,7 @@ class WebBrowser extends LitElement {
break
}
}
+ break
case actions.GET_WALLET_BALANCE: {
const requiredFields = ['coin']
@@ -2657,8 +2620,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -2683,16 +2645,16 @@ class WebBrowser extends LitElement {
response = await parentEpml.request('apiCall', {
url: `/addresses/balance/${qortAddress}?apiKey=${this.getApiKey()}`
})
+ this.loader.hide()
+ break
} catch (error) {
this.loader.hide()
let myMsg1 = get("browserpage.bchange21")
let myMsg2 = get("walletpage.wchange44")
- await showErrorAndWait("ACTION_FAILED", { id1: myMsg1, id2: myMsg2 })
+ await showErrorAndWait("ACTION_FAILED", {id1: myMsg1, id2: myMsg2})
const data = {}
data['error'] = error.message ? error.message : get("browserpage.bchange21")
response = JSON.stringify(data)
- } finally {
- this.loader.hide()
}
} else {
let _url = ``
@@ -2740,9 +2702,11 @@ class WebBrowser extends LitElement {
const data = {}
data['error'] = get("browserpage.bchange21")
response = JSON.stringify(data)
- return
+ break
} else {
+ this.loader.hide()
response = (Number(res) / 1e8).toFixed(8)
+ break
}
} catch (error) {
this.loader.hide()
@@ -2752,9 +2716,7 @@ class WebBrowser extends LitElement {
const data = {}
data['error'] = error.message ? error.message : get("browserpage.bchange21")
response = JSON.stringify(data)
- return
- } finally {
- this.loader.hide()
+ break
}
}
} else if (res3.action === 'reject') {
@@ -2762,9 +2724,10 @@ class WebBrowser extends LitElement {
let myMsg2 = get("walletpage.wchange44")
await showErrorAndWait("DECLINED_REQUEST", { id1: myMsg1, id2: myMsg2 })
response = '{"error": "User declined request"}'
+ break
}
- break
}
+ break
case actions.GET_USER_WALLET_INFO: {
const requiredFields = ['coin']
@@ -2785,8 +2748,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -2829,8 +2791,8 @@ class WebBrowser extends LitElement {
await showErrorAndWait("DECLINED_REQUEST", { id1: myMsg1, id2: myMsg2 })
response = '{"error": "User declined request"}'
}
- break
}
+ break
case actions.GET_CROSSCHAIN_SERVER_INFO: {
const requiredFields = ['coin']
@@ -2851,8 +2813,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -2879,8 +2840,8 @@ class WebBrowser extends LitElement {
} finally {
this.loader.hide()
}
- break
}
+ break
case actions.GET_TX_ACTIVITY_SUMMARY: {
const requiredFields = ['coin']
@@ -2901,8 +2862,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -2917,6 +2877,7 @@ class WebBrowser extends LitElement {
'Content-Type': 'application/json'
}
})
+ break
} catch (error) {
let myMsg1 = get("modals.mpchange56")
let myMsg2 = get("walletpage.wchange44")
@@ -2924,10 +2885,9 @@ class WebBrowser extends LitElement {
const data = {}
data['error'] = error.message ? error.message : get("modals.mpchange56")
response = JSON.stringify(data)
- } finally {
- break
}
}
+ break
case actions.GET_FOREIGN_FEE: {
const requiredFields = ['coin','type']
@@ -2948,13 +2908,12 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
try {
- let coin = data.coin
+ let coin = data.coin.toLowerCase()
let type = data.type
response = await parentEpml.request('apiCall', {
type: 'api',
@@ -2965,6 +2924,7 @@ class WebBrowser extends LitElement {
'Content-Type': 'application/json'
},
})
+ break
} catch (error) {
let myMsg1 = get("modals.mpchange57")
let myMsg2 = get("walletpage.wchange44")
@@ -2972,10 +2932,9 @@ class WebBrowser extends LitElement {
const data = {}
data['error'] = error.message ? error.message : get("modals.mpchange57")
response = JSON.stringify(data)
- } finally {
- break
}
}
+ break
case actions.UPDATE_FOREIGN_FEE: {
const requiredFields = ['coin','type']
@@ -2996,13 +2955,12 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
try {
- let coin = data.coin
+ let coin = data.coin.toLowerCase()
let type = data.type
let value = data.value
response = await parentEpml.request('apiCall', {
@@ -3015,6 +2973,7 @@ class WebBrowser extends LitElement {
},
body: `${value}`
})
+ break
} catch (error) {
let myMsg1 = get("modals.mpchange58")
let myMsg2 = get("walletpage.wchange44")
@@ -3022,10 +2981,9 @@ class WebBrowser extends LitElement {
const data = {}
data['error'] = error.message ? error.message : get("modals.mpchange58")
response = JSON.stringify(data)
- } finally {
- break
}
}
+ break
case actions.GET_SERVER_CONNECTION_HISTORY: {
const requiredFields = ['coin']
@@ -3046,8 +3004,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -3062,6 +3019,7 @@ class WebBrowser extends LitElement {
'Content-Type': 'application/json'
},
})
+ break
} catch (error) {
let myMsg1 = get("modals.mpchange59")
let myMsg2 = get("walletpage.wchange44")
@@ -3069,10 +3027,9 @@ class WebBrowser extends LitElement {
const data = {}
data['error'] = error.message ? error.message : get("modals.mpchange59")
response = JSON.stringify(data)
- } finally {
- break
}
}
+ break
case actions.SET_CURRENT_FOREIGN_SERVER: {
const requiredFields = ['coin']
@@ -3093,13 +3050,12 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
try {
- let coin = data.coin
+ let coin = data.coin.toLowerCase()
let host = data.host
let port = data.port
let type = data.type
@@ -3119,6 +3075,7 @@ class WebBrowser extends LitElement {
},
body: `${bodyToString}`
})
+ break
} catch (error) {
let myMsg1 = get("modals.mpchange60")
let myMsg2 = get("walletpage.wchange44")
@@ -3126,10 +3083,9 @@ class WebBrowser extends LitElement {
const data = {}
data['error'] = error.message ? error.message : get("modals.mpchange60")
response = JSON.stringify(data)
- } finally {
- break
}
}
+ break
case actions.ADD_FOREIGN_SERVER: {
const requiredFields = ['coin']
@@ -3150,13 +3106,12 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
try {
- let coin = data.coin
+ let coin = data.coin.toLowerCase()
let host = data.host
let port = data.port
let type = data.type
@@ -3176,6 +3131,7 @@ class WebBrowser extends LitElement {
},
body: `${bodyToString}`
})
+ break
} catch (error) {
let myMsg1 = get("modals.mpchange61")
let myMsg2 = get("walletpage.wchange44")
@@ -3183,10 +3139,9 @@ class WebBrowser extends LitElement {
const data = {}
data['error'] = error.message ? error.message : get("modals.mpchange61")
response = JSON.stringify(data)
- } finally {
- break
}
}
+ break
case actions.REMOVE_FOREIGN_SERVER: {
const requiredFields = ['coin']
@@ -3207,13 +3162,12 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
try {
- let coin = data.coin
+ let coin = data.coin.toLowerCase()
let host = data.host
let port = data.port
let type = data.type
@@ -3233,6 +3187,7 @@ class WebBrowser extends LitElement {
},
body: `${bodyToString}`
})
+ break
} catch (error) {
let myMsg1 = get("modals.mpchange62")
let myMsg2 = get("walletpage.wchange44")
@@ -3240,10 +3195,9 @@ class WebBrowser extends LitElement {
const data = {}
data['error'] = error.message ? error.message : get("modals.mpchange62")
response = JSON.stringify(data)
- } finally {
- break
}
}
+ break
case actions.GET_DAY_SUMMARY: {
try {
@@ -3251,6 +3205,7 @@ class WebBrowser extends LitElement {
type: 'api',
url: `/admin/summary?apiKey=${this.getApiKey()}`
})
+ break
} catch (error) {
let myMsg1 = get("modals.mpchange63")
let myMsg2 = get("walletpage.wchange44")
@@ -3258,10 +3213,9 @@ class WebBrowser extends LitElement {
const data = {}
data['error'] = error.message ? error.message : get("modals.mpchange63")
response = JSON.stringify(data)
- } finally {
- break
}
}
+ break
case actions.SIGN_TRANSACTION: {
const signNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node]
@@ -3284,8 +3238,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -3380,9 +3333,9 @@ class WebBrowser extends LitElement {
let myMsg2 = get("walletpage.wchange44")
await showErrorAndWait("DECLINED_REQUEST", { id1: myMsg1, id2: myMsg2 })
response = '{"error": "User declined request"}'
- break
}
}
+ break
case actions.SEND_COIN: {
const requiredFields = ['coin', 'amount']
@@ -3403,8 +3356,7 @@ class WebBrowser extends LitElement {
id2: tryAgain
}
)
- const errorMsg = `Missing fields: ${missingFieldsString}`
- dataSentBack['error'] = errorMsg
+ dataSentBack['error'] = `Missing fields: ${missingFieldsString}`
response = JSON.stringify(dataSentBack)
break
}
@@ -3577,7 +3529,7 @@ class WebBrowser extends LitElement {
this.loader.hide()
let myMsg1 = txnResponse.message
let myMsg2 = get("walletpage.wchange44")
- showErrorAndWait("ACTION_FAILED", { id1: myMsg1, id2: myMsg2 })
+ showErrorAndWait("ACTION_FAILED", { id1: myMsg1, id2: myMsg2 })
throw new Error(txnResponse.message)
} else if (txnResponse.success === true && !txnResponse.data.error) {
this.loader.hide()
@@ -4201,10 +4153,11 @@ class WebBrowser extends LitElement {
break
}
}
- break
+ break
+
default:
console.log('Unhandled message: ' + JSON.stringify(data))
- return
+ break
}
// Parse response
let responseObj
@@ -4234,7 +4187,7 @@ class WebBrowser extends LitElement {
}
renderFullScreen() {
- if (window.innerHeight == screen.height) {
+ if (window.innerHeight === screen.height) {
return html`
this.exitFullScreen()}
@@ -4862,7 +4815,7 @@ class WebBrowser extends LitElement {
}
goBackToList() {
- if (this.service == "APP") {
+ if (this.service === "APP") {
this.exitFullScreen()
window.location = '../../q-app/index.html'
}
@@ -4908,7 +4861,7 @@ class WebBrowser extends LitElement {
// Remove it first by filtering the list - doing it this way ensures the UI updates
// immediately, as apposed to only adding if it doesn't already exist
this.followedNames = this.followedNames.filter(
- (item) => item != name
+ (item) => item !== name
)
this.followedNames.push(name)
} else {
@@ -4932,7 +4885,7 @@ class WebBrowser extends LitElement {
if (ret === true) {
// Successfully unfollowed - remove from local list
this.followedNames = this.followedNames.filter(
- (item) => item != name
+ (item) => item !== name
)
} else {
let err2string = get('browserpage.bchange12')
@@ -4957,7 +4910,7 @@ class WebBrowser extends LitElement {
// Remove it first by filtering the list - doing it this way ensures the UI updates
// immediately, as apposed to only adding if it doesn't already exist
this.blockedNames = this.blockedNames.filter(
- (item) => item != name
+ (item) => item !== name
)
this.blockedNames.push(name)
} else {
@@ -4980,7 +4933,7 @@ class WebBrowser extends LitElement {
})
if (ret === true) {
// Successfully unblocked - remove from local list
- this.blockedNames = this.blockedNames.filter((item) => item != name)
+ this.blockedNames = this.blockedNames.filter((item) => item !== name)
} else {
let err4string = get('browserpage.bchange14')
parentEpml.request('showSnackBar', `${err4string}`)
@@ -4989,13 +4942,13 @@ class WebBrowser extends LitElement {
}
async deleteCurrentResource() {
- if (this.followedNames.indexOf(this.name) != -1) {
+ if (this.followedNames.indexOf(this.name) !== -1) {
// Following name - so deleting won't work
let err5string = get('browserpage.bchange15')
parentEpml.request('showSnackBar', `${err5string}`)
return
}
- let identifier = (this.identifier == null || this.identifier.length == 0) ? 'default' : this.identifier
+ let identifier = (this.identifier == null || this.identifier.length === 0) ? 'default' : this.identifier
let ret = await parentEpml.request('apiCall', {
url: `/arbitrary/resource/${this.service}/${this.name}/${identifier}?apiKey=${this.getApiKey()}`,
method: 'DELETE'
diff --git a/plugins/plugins/utils/classes.js b/plugins/plugins/utils/classes.js
index 605f28b8..751c7194 100644
--- a/plugins/plugins/utils/classes.js
+++ b/plugins/plugins/utils/classes.js
@@ -1105,6 +1105,19 @@ export const publishData = async ({
}
}
+export async function getNameInfo(address) {
+ const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node]
+ const nodeUrl = `${myNode.protocol}://${myNode.domain}:${myNode.port}`
+ const response = await fetch(`${nodeUrl}/names/address/` + address)
+ const nameData = await response.json()
+
+ if (nameData.length > 0) {
+ return nameData[0].name
+ } else {
+ return ""
+ }
+}
+
export const getPublishesFromAdmins = async (admins, groupId) => {
const queryString = admins.map((name) => `name=${name}`).join("&")
const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node]
@@ -1113,7 +1126,7 @@ export const getPublishesFromAdmins = async (admins, groupId) => {
const response = await fetch(url)
if (!response.ok) {
- consoöe.error("network error")
+ console.error("network error")
return false
}
@@ -1178,7 +1191,7 @@ export const getPublishesFromAdminsAdminSpace = async (admins, groupId) => {
const response = await fetch(url)
if (!response.ok) {
- consoöe.error("network error")
+ console.error("network error")
return false
}
From 72ec9fc0923cd5658ba19387d0da14f0aebaba87 Mon Sep 17 00:00:00 2001
From: AlphaX-Qortal
Date: Sun, 9 Feb 2025 19:47:15 +0100
Subject: [PATCH 2/8] Update dependencies
---
package-lock.json | 244 ++++++++++++++++++++++++----------------------
package.json | 6 +-
2 files changed, 129 insertions(+), 121 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index f9bd82e7..5d306830 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -53,7 +53,7 @@
"xhr2": "0.2.1"
},
"devDependencies": {
- "@babel/core": "7.26.7",
+ "@babel/core": "7.26.8",
"@electron/packager": "18.3.6",
"@material/mwc-button": "0.27.0",
"@material/mwc-checkbox": "0.27.0",
@@ -107,7 +107,7 @@
"@vaadin/tooltip": "24.2.9",
"@zip.js/zip.js": "2.7.57",
"axios": "1.7.9",
- "electron": "34.1.0",
+ "electron": "34.1.1",
"electron-builder": "25.1.8",
"epml": "0.3.3",
"file-saver": "2.0.5",
@@ -119,7 +119,7 @@
"pwa-helpers": "0.9.1",
"redux": "5.0.1",
"redux-thunk": "3.1.0",
- "rollup": "4.34.4",
+ "rollup": "4.34.6",
"rollup-plugin-node-globals": "1.4.0",
"rollup-plugin-progress": "1.1.2",
"rollup-plugin-scss": "3.0.0",
@@ -169,22 +169,23 @@
}
},
"node_modules/@babel/core": {
- "version": "7.26.7",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.7.tgz",
- "integrity": "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==",
+ "version": "7.26.8",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.8.tgz",
+ "integrity": "sha512-l+lkXCHS6tQEc5oUpK28xBOZ6+HwaH7YwoYQbLFiYb4nS2/l1tKnZEtEWkD0GuiYdvArf9qBS0XlQGXzPMsNqQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.26.2",
- "@babel/generator": "^7.26.5",
+ "@babel/generator": "^7.26.8",
"@babel/helper-compilation-targets": "^7.26.5",
"@babel/helper-module-transforms": "^7.26.0",
"@babel/helpers": "^7.26.7",
- "@babel/parser": "^7.26.7",
- "@babel/template": "^7.25.9",
- "@babel/traverse": "^7.26.7",
- "@babel/types": "^7.26.7",
+ "@babel/parser": "^7.26.8",
+ "@babel/template": "^7.26.8",
+ "@babel/traverse": "^7.26.8",
+ "@babel/types": "^7.26.8",
+ "@types/gensync": "^1.0.0",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -200,14 +201,14 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.26.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz",
- "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==",
+ "version": "7.26.8",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.8.tgz",
+ "integrity": "sha512-ef383X5++iZHWAXX0SXQR6ZyQhw/0KtTkrTz61WXRhFM6dhpHulO/RJz79L8S6ugZHJkOOkUrUdxgdF2YiPFnA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.26.5",
- "@babel/types": "^7.26.5",
+ "@babel/parser": "^7.26.8",
+ "@babel/types": "^7.26.8",
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^3.0.2"
@@ -310,13 +311,13 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.26.7",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz",
- "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==",
+ "version": "7.26.8",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.8.tgz",
+ "integrity": "sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.26.7"
+ "@babel/types": "^7.26.8"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -326,32 +327,32 @@
}
},
"node_modules/@babel/template": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz",
- "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==",
+ "version": "7.26.8",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.8.tgz",
+ "integrity": "sha512-iNKaX3ZebKIsCvJ+0jd6embf+Aulaa3vNBqZ41kM7iTWjx5qzWKXGHiJUW3+nTpQ18SG11hdF8OAzKrpXkb96Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.25.9",
- "@babel/parser": "^7.25.9",
- "@babel/types": "^7.25.9"
+ "@babel/code-frame": "^7.26.2",
+ "@babel/parser": "^7.26.8",
+ "@babel/types": "^7.26.8"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.26.7",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.7.tgz",
- "integrity": "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==",
+ "version": "7.26.8",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.8.tgz",
+ "integrity": "sha512-nic9tRkjYH0oB2dzr/JoGIm+4Q6SuYeLEiIiZDwBscRMYFJ+tMAz98fuel9ZnbXViA2I0HVSSRRK8DW5fjXStA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.26.2",
- "@babel/generator": "^7.26.5",
- "@babel/parser": "^7.26.7",
- "@babel/template": "^7.25.9",
- "@babel/types": "^7.26.7",
+ "@babel/generator": "^7.26.8",
+ "@babel/parser": "^7.26.8",
+ "@babel/template": "^7.26.8",
+ "@babel/types": "^7.26.8",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
@@ -360,9 +361,9 @@
}
},
"node_modules/@babel/types": {
- "version": "7.26.7",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz",
- "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==",
+ "version": "7.26.8",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.8.tgz",
+ "integrity": "sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3069,9 +3070,9 @@
}
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.34.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.4.tgz",
- "integrity": "sha512-gGi5adZWvjtJU7Axs//CWaQbQd/vGy8KGcnEaCWiyCqxWYDxwIlAHFuSe6Guoxtd0SRvSfVTDMPd5H+4KE2kKA==",
+ "version": "4.34.6",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.6.tgz",
+ "integrity": "sha512-+GcCXtOQoWuC7hhX1P00LqjjIiS/iOouHXhMdiDSnq/1DGTox4SpUvO52Xm+div6+106r+TcvOeo/cxvyEyTgg==",
"cpu": [
"arm"
],
@@ -3083,9 +3084,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.34.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.4.tgz",
- "integrity": "sha512-1aRlh1gqtF7vNPMnlf1vJKk72Yshw5zknR/ZAVh7zycRAGF2XBMVDAHmFQz/Zws5k++nux3LOq/Ejj1WrDR6xg==",
+ "version": "4.34.6",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.6.tgz",
+ "integrity": "sha512-E8+2qCIjciYUnCa1AiVF1BkRgqIGW9KzJeesQqVfyRITGQN+dFuoivO0hnro1DjT74wXLRZ7QF8MIbz+luGaJA==",
"cpu": [
"arm64"
],
@@ -3097,9 +3098,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.34.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.4.tgz",
- "integrity": "sha512-drHl+4qhFj+PV/jrQ78p9ch6A0MfNVZScl/nBps5a7u01aGf/GuBRrHnRegA9bP222CBDfjYbFdjkIJ/FurvSQ==",
+ "version": "4.34.6",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.6.tgz",
+ "integrity": "sha512-z9Ib+OzqN3DZEjX7PDQMHEhtF+t6Mi2z/ueChQPLS/qUMKY7Ybn5A2ggFoKRNRh1q1T03YTQfBTQCJZiepESAg==",
"cpu": [
"arm64"
],
@@ -3111,9 +3112,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.34.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.4.tgz",
- "integrity": "sha512-hQqq/8QALU6t1+fbNmm6dwYsa0PDD4L5r3TpHx9dNl+aSEMnIksHZkSO3AVH+hBMvZhpumIGrTFj8XCOGuIXjw==",
+ "version": "4.34.6",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.6.tgz",
+ "integrity": "sha512-PShKVY4u0FDAR7jskyFIYVyHEPCPnIQY8s5OcXkdU8mz3Y7eXDJPdyM/ZWjkYdR2m0izD9HHWA8sGcXn+Qrsyg==",
"cpu": [
"x64"
],
@@ -3125,9 +3126,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.34.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.4.tgz",
- "integrity": "sha512-/L0LixBmbefkec1JTeAQJP0ETzGjFtNml2gpQXA8rpLo7Md+iXQzo9kwEgzyat5Q+OG/C//2B9Fx52UxsOXbzw==",
+ "version": "4.34.6",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.6.tgz",
+ "integrity": "sha512-YSwyOqlDAdKqs0iKuqvRHLN4SrD2TiswfoLfvYXseKbL47ht1grQpq46MSiQAx6rQEN8o8URtpXARCpqabqxGQ==",
"cpu": [
"arm64"
],
@@ -3139,9 +3140,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.34.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.4.tgz",
- "integrity": "sha512-6Rk3PLRK+b8L/M6m/x6Mfj60LhAUcLJ34oPaxufA+CfqkUrDoUPQYFdRrhqyOvtOKXLJZJwxlOLbQjNYQcRQfw==",
+ "version": "4.34.6",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.6.tgz",
+ "integrity": "sha512-HEP4CgPAY1RxXwwL5sPFv6BBM3tVeLnshF03HMhJYCNc6kvSqBgTMmsEjb72RkZBAWIqiPUyF1JpEBv5XT9wKQ==",
"cpu": [
"x64"
],
@@ -3153,9 +3154,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.34.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.4.tgz",
- "integrity": "sha512-kmT3x0IPRuXY/tNoABp2nDvI9EvdiS2JZsd4I9yOcLCCViKsP0gB38mVHOhluzx+SSVnM1KNn9k6osyXZhLoCA==",
+ "version": "4.34.6",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.6.tgz",
+ "integrity": "sha512-88fSzjC5xeH9S2Vg3rPgXJULkHcLYMkh8faix8DX4h4TIAL65ekwuQMA/g2CXq8W+NJC43V6fUpYZNjaX3+IIg==",
"cpu": [
"arm"
],
@@ -3167,9 +3168,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.34.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.4.tgz",
- "integrity": "sha512-3iSA9tx+4PZcJH/Wnwsvx/BY4qHpit/u2YoZoXugWVfc36/4mRkgGEoRbRV7nzNBSCOgbWMeuQ27IQWgJ7tRzw==",
+ "version": "4.34.6",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.6.tgz",
+ "integrity": "sha512-wM4ztnutBqYFyvNeR7Av+reWI/enK9tDOTKNF+6Kk2Q96k9bwhDDOlnCUNRPvromlVXo04riSliMBs/Z7RteEg==",
"cpu": [
"arm"
],
@@ -3181,9 +3182,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.34.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.4.tgz",
- "integrity": "sha512-7CwSJW+sEhM9sESEk+pEREF2JL0BmyCro8UyTq0Kyh0nu1v0QPNY3yfLPFKChzVoUmaKj8zbdgBxUhBRR+xGxg==",
+ "version": "4.34.6",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.6.tgz",
+ "integrity": "sha512-9RyprECbRa9zEjXLtvvshhw4CMrRa3K+0wcp3KME0zmBe1ILmvcVHnypZ/aIDXpRyfhSYSuN4EPdCCj5Du8FIA==",
"cpu": [
"arm64"
],
@@ -3195,9 +3196,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.34.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.4.tgz",
- "integrity": "sha512-GZdafB41/4s12j8Ss2izofjeFXRAAM7sHCb+S4JsI9vaONX/zQ8cXd87B9MRU/igGAJkKvmFmJJBeeT9jJ5Cbw==",
+ "version": "4.34.6",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.6.tgz",
+ "integrity": "sha512-qTmklhCTyaJSB05S+iSovfo++EwnIEZxHkzv5dep4qoszUMX5Ca4WM4zAVUMbfdviLgCSQOu5oU8YoGk1s6M9Q==",
"cpu": [
"arm64"
],
@@ -3209,9 +3210,9 @@
]
},
"node_modules/@rollup/rollup-linux-loongarch64-gnu": {
- "version": "4.34.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.4.tgz",
- "integrity": "sha512-uuphLuw1X6ur11675c2twC6YxbzyLSpWggvdawTUamlsoUv81aAXRMPBC1uvQllnBGls0Qt5Siw8reSIBnbdqQ==",
+ "version": "4.34.6",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.6.tgz",
+ "integrity": "sha512-4Qmkaps9yqmpjY5pvpkfOerYgKNUGzQpFxV6rnS7c/JfYbDSU0y6WpbbredB5cCpLFGJEqYX40WUmxMkwhWCjw==",
"cpu": [
"loong64"
],
@@ -3223,9 +3224,9 @@
]
},
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
- "version": "4.34.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.4.tgz",
- "integrity": "sha512-KvLEw1os2gSmD6k6QPCQMm2T9P2GYvsMZMRpMz78QpSoEevHbV/KOUbI/46/JRalhtSAYZBYLAnT9YE4i/l4vg==",
+ "version": "4.34.6",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.6.tgz",
+ "integrity": "sha512-Zsrtux3PuaxuBTX/zHdLaFmcofWGzaWW1scwLU3ZbW/X+hSsFbz9wDIp6XvnT7pzYRl9MezWqEqKy7ssmDEnuQ==",
"cpu": [
"ppc64"
],
@@ -3237,9 +3238,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.34.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.4.tgz",
- "integrity": "sha512-wcpCLHGM9yv+3Dql/CI4zrY2mpQ4WFergD3c9cpRowltEh5I84pRT/EuHZsG0In4eBPPYthXnuR++HrFkeqwkA==",
+ "version": "4.34.6",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.6.tgz",
+ "integrity": "sha512-aK+Zp+CRM55iPrlyKiU3/zyhgzWBxLVrw2mwiQSYJRobCURb781+XstzvA8Gkjg/hbdQFuDw44aUOxVQFycrAg==",
"cpu": [
"riscv64"
],
@@ -3251,9 +3252,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.34.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.4.tgz",
- "integrity": "sha512-nLbfQp2lbJYU8obhRQusXKbuiqm4jSJteLwfjnunDT5ugBKdxqw1X9KWwk8xp1OMC6P5d0WbzxzhWoznuVK6XA==",
+ "version": "4.34.6",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.6.tgz",
+ "integrity": "sha512-WoKLVrY9ogmaYPXwTH326+ErlCIgMmsoRSx6bO+l68YgJnlOXhygDYSZe/qbUJCSiCiZAQ+tKm88NcWuUXqOzw==",
"cpu": [
"s390x"
],
@@ -3265,9 +3266,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.34.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.4.tgz",
- "integrity": "sha512-JGejzEfVzqc/XNiCKZj14eb6s5w8DdWlnQ5tWUbs99kkdvfq9btxxVX97AaxiUX7xJTKFA0LwoS0KU8C2faZRg==",
+ "version": "4.34.6",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.6.tgz",
+ "integrity": "sha512-Sht4aFvmA4ToHd2vFzwMFaQCiYm2lDFho5rPcvPBT5pCdC+GwHG6CMch4GQfmWTQ1SwRKS0dhDYb54khSrjDWw==",
"cpu": [
"x64"
],
@@ -3279,9 +3280,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.34.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.4.tgz",
- "integrity": "sha512-/iFIbhzeyZZy49ozAWJ1ZR2KW6ZdYUbQXLT4O5n1cRZRoTpwExnHLjlurDXXPKEGxiAg0ujaR9JDYKljpr2fDg==",
+ "version": "4.34.6",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.6.tgz",
+ "integrity": "sha512-zmmpOQh8vXc2QITsnCiODCDGXFC8LMi64+/oPpPx5qz3pqv0s6x46ps4xoycfUiVZps5PFn1gksZzo4RGTKT+A==",
"cpu": [
"x64"
],
@@ -3293,9 +3294,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.34.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.4.tgz",
- "integrity": "sha512-qORc3UzoD5UUTneiP2Afg5n5Ti1GAW9Gp5vHPxzvAFFA3FBaum9WqGvYXGf+c7beFdOKNos31/41PRMUwh1tpA==",
+ "version": "4.34.6",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.6.tgz",
+ "integrity": "sha512-3/q1qUsO/tLqGBaD4uXsB6coVGB3usxw3qyeVb59aArCgedSF66MPdgRStUd7vbZOsko/CgVaY5fo2vkvPLWiA==",
"cpu": [
"arm64"
],
@@ -3307,9 +3308,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.34.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.4.tgz",
- "integrity": "sha512-5g7E2PHNK2uvoD5bASBD9aelm44nf1w4I5FEI7MPHLWcCSrR8JragXZWgKPXk5i2FU3JFfa6CGZLw2RrGBHs2Q==",
+ "version": "4.34.6",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.6.tgz",
+ "integrity": "sha512-oLHxuyywc6efdKVTxvc0135zPrRdtYVjtVD5GUm55I3ODxhU/PwkQFD97z16Xzxa1Fz0AEe4W/2hzRtd+IfpOA==",
"cpu": [
"ia32"
],
@@ -3321,9 +3322,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.34.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.4.tgz",
- "integrity": "sha512-p0scwGkR4kZ242xLPBuhSckrJ734frz6v9xZzD+kHVYRAkSUmdSLCIJRfql6H5//aF8Q10K+i7q8DiPfZp0b7A==",
+ "version": "4.34.6",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.6.tgz",
+ "integrity": "sha512-0PVwmgzZ8+TZ9oGBmdZoQVXflbvuwzN/HRclujpl4N/q3i+y0lqLw8n1bXA8ru3sApDjlmONaNAuYr38y1Kr9w==",
"cpu": [
"x64"
],
@@ -3893,6 +3894,13 @@
"@types/node": "*"
}
},
+ "node_modules/@types/gensync": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@types/gensync/-/gensync-1.0.4.tgz",
+ "integrity": "sha512-C3YYeRQWp2fmq9OryX+FoDy8nXS6scQ7dPptD8LnFDAUNcKWJjXQKDNJD3HVm+kOUsXhTOkpi69vI4EuAr95bA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/http-cache-semantics": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
@@ -6185,9 +6193,9 @@
}
},
"node_modules/electron": {
- "version": "34.1.0",
- "resolved": "https://registry.npmjs.org/electron/-/electron-34.1.0.tgz",
- "integrity": "sha512-ZUid8XrGPA0dfes97PPADc8ecWOUX/qYRNp1glze9coZLEYc+PsMvgjVDCHSvjfHfiI+V3unwngSVpBouX71YQ==",
+ "version": "34.1.1",
+ "resolved": "https://registry.npmjs.org/electron/-/electron-34.1.1.tgz",
+ "integrity": "sha512-1aDYk9Gsv1/fFeClMrxWGoVMl7uCUgl1pe26BiTnLXmAoqEXCa3f3sCKFWV+cuDzUjQGAZcpkWhGYTgWUSQrLA==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -9876,9 +9884,9 @@
}
},
"node_modules/rollup": {
- "version": "4.34.4",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.4.tgz",
- "integrity": "sha512-spF66xoyD7rz3o08sHP7wogp1gZ6itSq22SGa/IZTcUDXDlOyrShwMwkVSB+BUxFRZZCUYqdb3KWDEOMVQZxuw==",
+ "version": "4.34.6",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.6.tgz",
+ "integrity": "sha512-wc2cBWqJgkU3Iz5oztRkQbfVkbxoz5EhnCGOrnJvnLnQ7O0WhQUYyv18qQI79O8L7DdHrrlJNeCHd4VGpnaXKQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9892,25 +9900,25 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.34.4",
- "@rollup/rollup-android-arm64": "4.34.4",
- "@rollup/rollup-darwin-arm64": "4.34.4",
- "@rollup/rollup-darwin-x64": "4.34.4",
- "@rollup/rollup-freebsd-arm64": "4.34.4",
- "@rollup/rollup-freebsd-x64": "4.34.4",
- "@rollup/rollup-linux-arm-gnueabihf": "4.34.4",
- "@rollup/rollup-linux-arm-musleabihf": "4.34.4",
- "@rollup/rollup-linux-arm64-gnu": "4.34.4",
- "@rollup/rollup-linux-arm64-musl": "4.34.4",
- "@rollup/rollup-linux-loongarch64-gnu": "4.34.4",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.34.4",
- "@rollup/rollup-linux-riscv64-gnu": "4.34.4",
- "@rollup/rollup-linux-s390x-gnu": "4.34.4",
- "@rollup/rollup-linux-x64-gnu": "4.34.4",
- "@rollup/rollup-linux-x64-musl": "4.34.4",
- "@rollup/rollup-win32-arm64-msvc": "4.34.4",
- "@rollup/rollup-win32-ia32-msvc": "4.34.4",
- "@rollup/rollup-win32-x64-msvc": "4.34.4",
+ "@rollup/rollup-android-arm-eabi": "4.34.6",
+ "@rollup/rollup-android-arm64": "4.34.6",
+ "@rollup/rollup-darwin-arm64": "4.34.6",
+ "@rollup/rollup-darwin-x64": "4.34.6",
+ "@rollup/rollup-freebsd-arm64": "4.34.6",
+ "@rollup/rollup-freebsd-x64": "4.34.6",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.34.6",
+ "@rollup/rollup-linux-arm-musleabihf": "4.34.6",
+ "@rollup/rollup-linux-arm64-gnu": "4.34.6",
+ "@rollup/rollup-linux-arm64-musl": "4.34.6",
+ "@rollup/rollup-linux-loongarch64-gnu": "4.34.6",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.34.6",
+ "@rollup/rollup-linux-riscv64-gnu": "4.34.6",
+ "@rollup/rollup-linux-s390x-gnu": "4.34.6",
+ "@rollup/rollup-linux-x64-gnu": "4.34.6",
+ "@rollup/rollup-linux-x64-musl": "4.34.6",
+ "@rollup/rollup-win32-arm64-msvc": "4.34.6",
+ "@rollup/rollup-win32-ia32-msvc": "4.34.6",
+ "@rollup/rollup-win32-x64-msvc": "4.34.6",
"fsevents": "~2.3.2"
}
},
diff --git a/package.json b/package.json
index ffc6614a..a276870e 100644
--- a/package.json
+++ b/package.json
@@ -74,7 +74,7 @@
"xhr2": "0.2.1"
},
"devDependencies": {
- "@babel/core": "7.26.7",
+ "@babel/core": "7.26.8",
"@electron/packager": "18.3.6",
"@material/mwc-button": "0.27.0",
"@material/mwc-checkbox": "0.27.0",
@@ -128,7 +128,7 @@
"@vaadin/tooltip": "24.2.9",
"@zip.js/zip.js": "2.7.57",
"axios": "1.7.9",
- "electron": "34.1.0",
+ "electron": "34.1.1",
"electron-builder": "25.1.8",
"epml": "0.3.3",
"file-saver": "2.0.5",
@@ -140,7 +140,7 @@
"pwa-helpers": "0.9.1",
"redux": "5.0.1",
"redux-thunk": "3.1.0",
- "rollup": "4.34.4",
+ "rollup": "4.34.6",
"rollup-plugin-node-globals": "1.4.0",
"rollup-plugin-progress": "1.1.2",
"rollup-plugin-scss": "3.0.0",
From 137dc4d0b3fa513847f085eb7612a9cdea72e8b0 Mon Sep 17 00:00:00 2001
From: AlphaX-Qortal
Date: Mon, 10 Feb 2025 16:37:01 +0100
Subject: [PATCH 3/8] Fix key icon
---
.../plugins/core/components/ChatScroller.js | 56 ++++++++++---------
1 file changed, 30 insertions(+), 26 deletions(-)
diff --git a/plugins/plugins/core/components/ChatScroller.js b/plugins/plugins/core/components/ChatScroller.js
index 42b803e8..4d10a4a7 100644
--- a/plugins/plugins/core/components/ChatScroller.js
+++ b/plugins/plugins/core/components/ChatScroller.js
@@ -1250,17 +1250,9 @@ class MessageTemplate extends LitElement {