From d915b25b47274ff96849b4d49ad6d4b9c47f402e Mon Sep 17 00:00:00 2001
From: AlphaX-Qortal
Date: Tue, 11 Feb 2025 20:29:22 +0100
Subject: [PATCH] Various updates
- Add display private messages from Qortal-Hub
- Re-add accidentally deleted qortal request SAVE_FILE
- Reworked decoding Qortal-Hub messages
- Update languages files
---
core/language/de.json | 3 +-
core/language/es.json | 3 +-
core/language/et.json | 3 +-
core/language/fi.json | 3 +-
core/language/fr.json | 3 +-
core/language/hindi.json | 3 +-
core/language/hr.json | 3 +-
core/language/hu.json | 3 +-
core/language/it.json | 3 +-
core/language/jp.json | 3 +-
core/language/ko.json | 3 +-
core/language/nl.json | 3 +-
core/language/no.json | 3 +-
core/language/pl.json | 3 +-
core/language/pt.json | 3 +-
core/language/ro.json | 3 +-
core/language/rs.json | 3 +-
core/language/ru.json | 3 +-
core/language/us.json | 3 +-
core/language/zhc.json | 3 +-
core/language/zht.json | 3 +-
crypto/api/deps/Base64Message.js | 87 ++++++---------
.../plugins/core/components/ChatScroller.js | 27 +++--
.../plugins/core/components/plugins-css.js | 20 +++-
.../core/components/qdn-action-constants.js | 6 +-
.../components/webworkerDecodeMessages.js | 87 ++++++---------
plugins/plugins/core/q-chat/q-chat.src.js | 4 +-
.../plugins/core/qdn/browser/browser.src.js | 104 +++++++++++++++++-
28 files changed, 242 insertions(+), 156 deletions(-)
diff --git a/core/language/de.json b/core/language/de.json
index dacd55c6..1885f833 100644
--- a/core/language/de.json
+++ b/core/language/de.json
@@ -1417,6 +1417,7 @@
"mpchange83": "ABGELEHNT",
"mpchange84": "FEHLER",
"mpchange85": "ERFOLGREICH",
- "mpchange86": "Immer automatisches Abrufen des Wallet-Guthabens zulassen"
+ "mpchange86": "Immer automatisches Abrufen des Wallet-Guthabens zulassen",
+ "mpchange87": "Bitte geben Sie die Gruppen-ID ein"
}
}
diff --git a/core/language/es.json b/core/language/es.json
index af48f747..a7924a9b 100644
--- a/core/language/es.json
+++ b/core/language/es.json
@@ -1417,6 +1417,7 @@
"mpchange83": "RECHAZADO",
"mpchange84": "ERROR",
"mpchange85": "ÉXITO",
- "mpchange86": "Permitir siempre obtener el saldo de la billetera automáticamente"
+ "mpchange86": "Permitir siempre obtener el saldo de la billetera automáticamente",
+ "mpchange87": "Por favor, introduzca el ID del grupo"
}
}
diff --git a/core/language/et.json b/core/language/et.json
index 86b12aa6..73beeeeb 100644
--- a/core/language/et.json
+++ b/core/language/et.json
@@ -1417,6 +1417,7 @@
"mpchange83": "DECLINED",
"mpchange84": "FAILURE",
"mpchange85": "EDU",
- "mpchange86": "Luba alati rahakoti saldo automaatne hankimine"
+ "mpchange86": "Luba alati rahakoti saldo automaatne hankimine",
+ "mpchange87": "Palun sisestage grupi ID"
}
}
diff --git a/core/language/fi.json b/core/language/fi.json
index b112ce0b..2602e3d0 100644
--- a/core/language/fi.json
+++ b/core/language/fi.json
@@ -1417,6 +1417,7 @@
"mpchange83": "hylätty",
"mpchange84": "FAILURE",
"mpchange85": "SUCCESS",
- "mpchange86": "Salli aina saada lompakon saldo automaattisesti"
+ "mpchange86": "Salli aina saada lompakon saldo automaattisesti",
+ "mpchange87": "Anna ryhmän tunnus"
}
}
diff --git a/core/language/fr.json b/core/language/fr.json
index 230082c3..d469ac46 100644
--- a/core/language/fr.json
+++ b/core/language/fr.json
@@ -1417,6 +1417,7 @@
"mpchange83": "REFUSÉ",
"mpchange84": "ÉCHEC",
"mpchange85": "SUCCÈS",
- "mpchange86": "Toujours autoriser l'obtention automatique du solde du portefeuille"
+ "mpchange86": "Toujours autoriser l'obtention automatique du solde du portefeuille",
+ "mpchange87": "Veuillez saisir l'ID du groupe"
}
}
diff --git a/core/language/hindi.json b/core/language/hindi.json
index b0a5d56a..260f227c 100644
--- a/core/language/hindi.json
+++ b/core/language/hindi.json
@@ -1417,6 +1417,7 @@
"mpchange83": "अस्वीकृत",
"mpchange84": "विफल",
"mpchange85": "सफल",
- "mpchange86": "हमेशा वॉलेट बैलेंस को स्वचालित रूप से प्राप्त करने की अनुमति दें"
+ "mpchange86": "हमेशा वॉलेट बैलेंस को स्वचालित रूप से प्राप्त करने की अनुमति दें",
+ "mpchange87": "कृपया ग्रुप आईडी दर्ज करें"
}
}
diff --git a/core/language/hr.json b/core/language/hr.json
index a250954b..4255c9e5 100644
--- a/core/language/hr.json
+++ b/core/language/hr.json
@@ -1417,6 +1417,7 @@
"mpchange83": "ODBIJENO",
"mpchange84": "GREŠKA",
"mpchange85": "USPJEH",
- "mpchange86": "Uvijek dopusti automatsko dobivanje stanja novčanika"
+ "mpchange86": "Uvijek dopusti automatsko dobivanje stanja novčanika",
+ "mpchange87": "Molimo unesite ID grupe"
}
}
diff --git a/core/language/hu.json b/core/language/hu.json
index e160715b..638e73de 100644
--- a/core/language/hu.json
+++ b/core/language/hu.json
@@ -1417,6 +1417,7 @@
"mpchange83": "Elutasítva",
"mpchange84": "FAILURE",
"mpchange85": "SIKER",
- "mpchange86": "Mindig engedélyezze a pénztárcaegyenleg automatikus lekérését"
+ "mpchange86": "Mindig engedélyezze a pénztárcaegyenleg automatikus lekérését",
+ "mpchange87": "Kérjük, adja meg a csoport azonosítóját"
}
}
diff --git a/core/language/it.json b/core/language/it.json
index 1151d6db..ad818b9c 100644
--- a/core/language/it.json
+++ b/core/language/it.json
@@ -1417,6 +1417,7 @@
"mpchange83": "RIFIUTATO",
"mpchange84": "FALLITO",
"mpchange85": "RIUSCITO",
- "mpchange86": "Consenti sempre di ottenere automaticamente il saldo del portafoglio"
+ "mpchange86": "Consenti sempre di ottenere automaticamente il saldo del portafoglio",
+ "mpchange87": "Inserisci l'ID del gruppo"
}
}
diff --git a/core/language/jp.json b/core/language/jp.json
index c78bea3f..11194383 100644
--- a/core/language/jp.json
+++ b/core/language/jp.json
@@ -1417,6 +1417,7 @@
"mpchange83": "拒否されました",
"mpchange84": "失敗",
"mpchange85": "成功",
- "mpchange86": "ウォレット残高の自動取得を常に許可する"
+ "mpchange86": "ウォレット残高の自動取得を常に許可する",
+ "mpchange87": "グループ ID を入力してください"
}
}
diff --git a/core/language/ko.json b/core/language/ko.json
index 6d2569db..109b8a8c 100644
--- a/core/language/ko.json
+++ b/core/language/ko.json
@@ -1417,6 +1417,7 @@
"mpchange83": "거부됨",
"mpchange84": "실패",
"mpchange85": "성공",
- "mpchange86": "항상 지갑 잔액을 자동으로 가져오도록 허용"
+ "mpchange86": "항상 지갑 잔액을 자동으로 가져오도록 허용",
+ "mpchange87": "그룹 ID를 입력하세요"
}
}
diff --git a/core/language/nl.json b/core/language/nl.json
index 5606d115..092016cd 100644
--- a/core/language/nl.json
+++ b/core/language/nl.json
@@ -1417,6 +1417,7 @@
"mpchange83": "GEWEIGERD",
"mpchange84": "MISLUKT",
"mpchange85": "SUCCES",
- "mpchange86": "Altijd toestaan om automatisch saldo in portemonnee op te halen"
+ "mpchange86": "Altijd toestaan om automatisch saldo in portemonnee op te halen",
+ "mpchange87": "Voer de groeps-ID in"
}
}
diff --git a/core/language/no.json b/core/language/no.json
index 75004ffc..6108dff5 100644
--- a/core/language/no.json
+++ b/core/language/no.json
@@ -1417,6 +1417,7 @@
"mpchange83": "AVSLAGT",
"mpchange84": "FEIL",
"mpchange85": "SUKSESS",
- "mpchange86": "Tillat alltid få lommeboksaldo automatisk"
+ "mpchange86": "Tillat alltid få lommeboksaldo automatisk",
+ "mpchange87": "Vennligst skriv inn gruppe-ID"
}
}
diff --git a/core/language/pl.json b/core/language/pl.json
index 9c2a84ba..6a2fad25 100644
--- a/core/language/pl.json
+++ b/core/language/pl.json
@@ -1417,6 +1417,7 @@
"mpchange83": "ODRZUCONE",
"mpchange84": "NIEPOWODZENIE",
"mpchange85": "POWODZENIE",
- "mpchange86": "Zawsze zezwalaj na automatyczne pobieranie salda portfela"
+ "mpchange86": "Zawsze zezwalaj na automatyczne pobieranie salda portfela",
+ "mpchange87": "Wprowadź identyfikator grupy"
}
}
diff --git a/core/language/pt.json b/core/language/pt.json
index 4b7c9657..255b1193 100644
--- a/core/language/pt.json
+++ b/core/language/pt.json
@@ -1417,6 +1417,7 @@
"mpchange83": "RECLINADO",
"mpchange84": "FALHA",
"mpchange85": "SUCESSO",
- "mpchange86": "Permitir sempre obter saldo da carteira automaticamente"
+ "mpchange86": "Permitir sempre obter saldo da carteira automaticamente",
+ "mpchange87": "Por favor introduza o ID do grupo"
}
}
diff --git a/core/language/ro.json b/core/language/ro.json
index 5d2d41f6..2df1152f 100644
--- a/core/language/ro.json
+++ b/core/language/ro.json
@@ -1417,6 +1417,7 @@
"mpchange83": "RESFUS",
"mpchange84": "Eșec",
"mpchange85": "SUCCES",
- "mpchange86": "Permiteți întotdeauna obținerea automată a soldului portofelului"
+ "mpchange86": "Permiteți întotdeauna obținerea automată a soldului portofelului",
+ "mpchange87": "Vă rugăm să introduceți ID-ul grupului"
}
}
diff --git a/core/language/rs.json b/core/language/rs.json
index d1bf2ba7..bc58e4d9 100644
--- a/core/language/rs.json
+++ b/core/language/rs.json
@@ -1417,6 +1417,7 @@
"mpchange83": "ODBIJENO",
"mpchange84": "GREŠKA",
"mpchange85": "USPEH",
- "mpchange86": "Uvek dozvoli automatsko dobijanje stanja novčanika"
+ "mpchange86": "Uvek dozvoli automatsko dobijanje stanja novčanika",
+ "mpchange87": "Unesite ID grupe"
}
}
diff --git a/core/language/ru.json b/core/language/ru.json
index f95411ae..00c7e278 100644
--- a/core/language/ru.json
+++ b/core/language/ru.json
@@ -1417,6 +1417,7 @@
"mpchange83": "ОТКЛОНЕНО",
"mpchange84": "НЕУДАЧА",
"mpchange85": "УСПЕШНО",
- "mpchange86": "Всегда разрешать автоматически получать баланс кошелька"
+ "mpchange86": "Всегда разрешать автоматически получать баланс кошелька",
+ "mpchange87": "Пожалуйста, введите идентификатор группы"
}
}
diff --git a/core/language/us.json b/core/language/us.json
index 8f619c65..be7d6b2e 100644
--- a/core/language/us.json
+++ b/core/language/us.json
@@ -1417,6 +1417,7 @@
"mpchange83": "DECLINED",
"mpchange84": "FAILURE",
"mpchange85": "SUCCESS",
- "mpchange86": "Always allow get wallet balance automatically"
+ "mpchange86": "Always allow get wallet balance automatically",
+ "mpchange87": "Please Enter The Group ID"
}
}
diff --git a/core/language/zhc.json b/core/language/zhc.json
index 1bacf2e5..455e4d03 100644
--- a/core/language/zhc.json
+++ b/core/language/zhc.json
@@ -1417,6 +1417,7 @@
"mpchange83": "拒绝",
"mpchange84": "失败",
"mpchange85": "成功",
- "mpchange86": "始终允许自动获取钱包余额"
+ "mpchange86": "始终允许自动获取钱包余额",
+ "mpchange87": "请输入群组ID"
}
}
diff --git a/core/language/zht.json b/core/language/zht.json
index 65adf665..96c3b989 100644
--- a/core/language/zht.json
+++ b/core/language/zht.json
@@ -1417,6 +1417,7 @@
"mpchange83": "拒絕",
"mpchange84": "失敗",
"mpchange85": "成功",
- "mpchange86": "隨時允許自動取得錢包餘額"
+ "mpchange86": "隨時允許自動取得錢包餘額",
+ "mpchange87": "請輸入群組 ID"
}
}
diff --git a/crypto/api/deps/Base64Message.js b/crypto/api/deps/Base64Message.js
index f74c282f..bd6adef0 100644
--- a/crypto/api/deps/Base64Message.js
+++ b/crypto/api/deps/Base64Message.js
@@ -14,6 +14,15 @@ import {
const Base64Message = {}
Base64Message.decode = function (string, keys, ref) {
+ let repliedToStr = ''
+ let hubSpecialId = ''
+ let hubMessageStr = ''
+ let newMessageObject = ''
+ let messageUseEmbed = {}
+ let isHubReaction = false
+ let editStr = false
+ let embedFileStr = '"images":[""]'
+
const binaryString = atob(string)
const binaryLength = binaryString.length
const bytes = new Uint8Array(binaryLength)
@@ -34,88 +43,54 @@ Base64Message.decode = function (string, keys, ref) {
return decodedString
}
} else {
- let repliedToStr = ''
- let addedFileStr = ''
- let messageStr = ''
- let hubString = ''
- let messageRep = ''
- let messageUseEmbed = {}
-
const res = decryptSingle(string, keys, false)
if (res === 'noKey' || res === 'decryptionFailed') {
- return '{"messageText":{"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"This message could not be decrypted"}]}]}' + addedFileStr + ',"repliedTo":"","version":3,"isFromHub":true}'
+ return '{"specialId":"","message":"This message could not be decrypted
","repliedTo":"","isEdited":false,"isFromHub":true,"isReaction":false,"version": 3}'
}
const decryptToUnit8Array = base64ToUint8Array(res)
const responseData = uint8ArrayToObject(decryptToUnit8Array)
if (responseData.type === "notification") {
- const messageStrRaw = responseData.data.message
- messageStr = messageStrRaw.trim()
+ hubMessageStr = responseData.data.message
}
if (ref !== "noref") {
if (responseData.type === "reaction") {
+ isHubReaction = true
repliedToStr = ref
- messageStr = responseData.content
+ hubMessageStr = responseData.content
}
}
- if (responseData.hasOwnProperty('message') && typeof responseData['message'] === 'string' && responseData['message'].length) {
- if (responseData.message.includes('qortal://use-embed/')) {
- const useEmbed1 = extensionToPointer(responseData.message)
- const useEmbed2 = /(.*?)<\/newpointer>/g.exec(useEmbed1)
- const useEmbed3 = encodedToChar(useEmbed2[1])
-
- messageUseEmbed = parseQortalLink(useEmbed3)
- addedFileStr = embedToString(messageUseEmbed)
-
- const useEmbed4 = responseData.message.split(useEmbed2[1]).join('')
-
- if (useEmbed4 === "") {
- messageRep = useEmbed4.split('').join('Qortal-Hub embed link
')
- } else {
- messageRep = useEmbed4
- }
- } else {
- messageRep = responseData.message
- addedFileStr = ',"images":[""]'
- }
-
- const messageRep1 = messageRep.split('"').join('')
- 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":"')
- const messageRep4 = messageRep3.split('
').join('"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"text","text":"')
- const messageRep5 = messageRep4.replace('
', '')
- const messageRep6 = messageRep5.replace('
', '')
- const messageRep7 = messageRep6.replace('', '')
- const messageRep8 = messageRep7.replace('
', '')
- const messageRep9 = messageRep8.replace('', '')
- const messageRep10 = messageRep9.trim()
- const messageRep11 = messageRep10.split('
').join('"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"text","text":"')
- const messageRep12 = messageRep11.split('
').join('"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"text","text":"')
- const messageRep13 = messageRep12.split('
').join('"},{"type":"hardBreak"},{"type":"hardBreak"},{"type":"text","text":"')
- const messageRep14 = messageRep13.split('
').join('"},{"type":"hardBreak"},{"type":"text","text":"')
- messageStr = messageRep14
+ if (responseData.type === "edit") {
+ editStr = true
}
if (responseData.repliedTo) {
repliedToStr = responseData.repliedTo
}
- if (responseData.type === "edit") {
- 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 + '"}]}]}' + addedFileStr + ',"repliedTo":"' + repliedToStr + '","version":3,"isReaction":true,"isFromHub":true}'
- } else {
- hubString = '{"messageText":{"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"' + messageStr + '"}]}]}' + addedFileStr + ',"repliedTo":"' + repliedToStr + '","version":3,"isFromHub":true}'
+ if (responseData.specialId) {
+ hubSpecialId = responseData.specialId
}
- const preparedString = hubString.split('').join('\\"')
- const finalString = preparedString.replace(/<\/?[^>]+(>|$)/g, '')
+ if (responseData.message.includes('qortal://use-embed/')) {
+ const useEmbed1 = extensionToPointer(responseData.message)
+ const useEmbed2 = /(.*?)<\/newpointer>/g.exec(useEmbed1)
+ const useEmbed3 = encodedToChar(useEmbed2[1])
- return finalString
+ messageUseEmbed = parseQortalLink(useEmbed3)
+ embedFileStr = embedToString(messageUseEmbed)
+ hubMessageStr = responseData.message.split(useEmbed2[1]).join('')
+ } else {
+ hubMessageStr = responseData.message
+ }
+
+ newMessageObject = '{"specialId":"' + hubSpecialId + '","message":"' + hubMessageStr + '",' + embedFileStr + ',"repliedTo":"' + repliedToStr + '","isEdited":' + editStr + ',"isFromHub":true,"isReaction":' + isHubReaction + ',"version": 3}'
+
+ return newMessageObject
}
}
diff --git a/plugins/plugins/core/components/ChatScroller.js b/plugins/plugins/core/components/ChatScroller.js
index 4d10a4a7..7438e0e3 100644
--- a/plugins/plugins/core/components/ChatScroller.js
+++ b/plugins/plugins/core/components/ChatScroller.js
@@ -1081,17 +1081,22 @@ class MessageTemplate extends LitElement {
let version = 0
let isForwarded = false
let isEdited = false
- let isFromHub = false
+ let isEncrypted = false
try {
const parsedMessageObj = JSON.parse(this.messageObj.decodedMessage)
- if (+parsedMessageObj.version > 1 && parsedMessageObj.messageText) {
+ if (parsedMessageObj.version > 1 && parsedMessageObj.messageText) {
messageVersion2 = generateHTML(parsedMessageObj.messageText, [StarterKit, Underline, Highlight, Mention])
messageVersion2WithLink = processText(messageVersion2)
}
- message = parsedMessageObj.messageText
+ if (parsedMessageObj.version > 1 && parsedMessageObj.message) {
+ messageVersion2 = parsedMessageObj.message
+ messageVersion2WithLink = processText(messageVersion2)
+ }
+
+ message = parsedMessageObj.messageText ? parsedMessageObj.messageText : parsedMessageObj.message
repliedToData = this.messageObj.repliedToData
isImageDeleted = parsedMessageObj.isImageDeleted
isGifDeleted = parsedMessageObj.isGifDeleted
@@ -1101,7 +1106,7 @@ class MessageTemplate extends LitElement {
version = parsedMessageObj.version
isForwarded = parsedMessageObj.type === 'forward'
isEdited = parsedMessageObj.isEdited && true
- isFromHub = parsedMessageObj.isFromHub && true
+ isEncrypted = parsedMessageObj.isFromHub || parsedMessageObj.message ? true : false
if (parsedMessageObj.images && Array.isArray(parsedMessageObj.images) && parsedMessageObj.images.length > 0) {
image = parsedMessageObj.images[0]
@@ -1133,8 +1138,8 @@ class MessageTemplate extends LitElement {
let hideit = hidemsg.includes(this.messageObj.sender)
let forwarded = ''
let edited = ''
- let fromHubOk = ''
- let fromHubNo = ''
+ let encrypted = ''
+ let decrypted = ''
levelFounder = html``
@@ -1250,9 +1255,9 @@ class MessageTemplate extends LitElement {
`
- fromHubOk = html` key `
+ encrypted = html` key `
- fromHubNo = html` key_off `
+ decrypted = html` key_off `
if (repliedToData) {
try {
@@ -1672,7 +1677,7 @@ class MessageTemplate extends LitElement {
` : this.isAgo ? html`
- ${isFromHub ? html`${fromHubOk}` : html`${fromHubNo}`}
+ ${isEncrypted ? html`${encrypted}` : html`${decrypted}`}