diff --git a/qortal-ui-core/language/cn.json b/qortal-ui-core/language/cn.json index 97c961bd..2912614f 100644 --- a/qortal-ui-core/language/cn.json +++ b/qortal-ui-core/language/cn.json @@ -388,5 +388,28 @@ "dchange19": "Error occurred when trying to unfollow this registered name. Please try again!", "dchange20": "Error occurred when trying to unblock this registered name. Please try again!", "dchange21": "Error occurred when trying to delete this resource. Please try again!" + }, + "chatpage": { + "cchange1": "New Private Message", + "cchange2": "Loading...", + "cchange3": "Blocked Users", + "cchange4": "New Message", + "cchange5": "(Click to scroll down)", + "cchange6": "Type the name or address of who you want to chat with to send a private message!", + "cchange7": "Name / Address", + "cchange8": "Message...", + "cchange9": "Send", + "cchange10": "Blocked Users List", + "cchange11": "Name", + "cchange12": "Owner", + "cchange13": "Action", + "cchange14": "This account has not blocked any users.", + "cchange15": "No registered name", + "cchange16": "Successfully unblocked this user.", + "cchange17": "Error occurred when trying to unblock this user. Please try again!", + "cchange18": "unblock", + "cchange19": "Invalid Name / Address, Check the name / address and retry...", + "cchange20": "Message Sent Successfully!", + "cchange21": "Sending failed, Please retry..." } } \ No newline at end of file diff --git a/qortal-ui-core/language/de.json b/qortal-ui-core/language/de.json index ca9140f4..40cc1673 100644 --- a/qortal-ui-core/language/de.json +++ b/qortal-ui-core/language/de.json @@ -388,5 +388,28 @@ "dchange19": "Beim Versuch, diesem registrierten Namen nicht mehr zu folgen, ist ein Fehler aufgetreten. Bitte versuche es erneut!", "dchange20": "Beim Versuch, diesen registrierten Namen zu entsperren, ist ein Fehler aufgetreten. Bitte versuche es erneut!", "dchange21": "Beim Versuch, diese Ressource zu löschen, ist ein Fehler aufgetreten. Bitte versuche es erneut!" + }, + "chatpage": { + "cchange1": "Neue private Nachricht", + "cchange2": "Lade...", + "cchange3": "Blockierte Benutzer", + "cchange4": "Neue Nachricht", + "cchange5": "(Klicken um nach unten zu scrollen)", + "cchange6": "Geben Sie den Namen oder die Adresse der Person ein, mit der Sie chatten möchten, um eine private Nachricht zu senden!", + "cchange7": "Name / Adresse", + "cchange8": "Nachricht...", + "cchange9": "Sende", + "cchange10": "Liste blockierter Benutzer", + "cchange11": "Name", + "cchange12": "Eigentümer", + "cchange13": "Aktion", + "cchange14": "Dieses Konto hat keine Benutzer blockiert!", + "cchange15": "Kein registrierter Name", + "cchange16": "Dieser Benutzer wurde erfolgreich entsperrt!", + "cchange17": "Beim Versuch, diesen Benutzer zu entsperren, ist ein Fehler aufgetreten. Bitte versuche es erneut!", + "cchange18": "entsperren", + "cchange19": "Ungültiger Name / Adresse, überprüfen Sie den Namen / die Adresse und versuchen Sie es erneut...", + "cchange20": "Nachricht erfolgreich gesendet!", + "cchange21": "Senden fehlgeschlagen, bitte erneut versuchen..." } } \ No newline at end of file diff --git a/qortal-ui-core/language/fr.json b/qortal-ui-core/language/fr.json index 6885caf0..56e0a3ba 100644 --- a/qortal-ui-core/language/fr.json +++ b/qortal-ui-core/language/fr.json @@ -388,5 +388,28 @@ "dchange19": "Error occurred when trying to unfollow this registered name. Please try again!", "dchange20": "Error occurred when trying to unblock this registered name. Please try again!", "dchange21": "Error occurred when trying to delete this resource. Please try again!" + }, + "chatpage": { + "cchange1": "New Private Message", + "cchange2": "Loading...", + "cchange3": "Blocked Users", + "cchange4": "New Message", + "cchange5": "(Click to scroll down)", + "cchange6": "Type the name or address of who you want to chat with to send a private message!", + "cchange7": "Name / Address", + "cchange8": "Message...", + "cchange9": "Send", + "cchange10": "Blocked Users List", + "cchange11": "Name", + "cchange12": "Owner", + "cchange13": "Action", + "cchange14": "This account has not blocked any users.", + "cchange15": "No registered name", + "cchange16": "Successfully unblocked this user.", + "cchange17": "Error occurred when trying to unblock this user. Please try again!", + "cchange18": "unblock", + "cchange19": "Invalid Name / Address, Check the name / address and retry...", + "cchange20": "Message Sent Successfully!", + "cchange21": "Sending failed, Please retry..." } } \ No newline at end of file diff --git a/qortal-ui-core/language/pl.json b/qortal-ui-core/language/pl.json index 97259e88..d86f8d87 100644 --- a/qortal-ui-core/language/pl.json +++ b/qortal-ui-core/language/pl.json @@ -388,5 +388,28 @@ "dchange19": "Error occurred when trying to unfollow this registered name. Please try again!", "dchange20": "Error occurred when trying to unblock this registered name. Please try again!", "dchange21": "Error occurred when trying to delete this resource. Please try again!" + }, + "chatpage": { + "cchange1": "New Private Message", + "cchange2": "Loading...", + "cchange3": "Blocked Users", + "cchange4": "New Message", + "cchange5": "(Click to scroll down)", + "cchange6": "Type the name or address of who you want to chat with to send a private message!", + "cchange7": "Name / Address", + "cchange8": "Message...", + "cchange9": "Send", + "cchange10": "Blocked Users List", + "cchange11": "Name", + "cchange12": "Owner", + "cchange13": "Action", + "cchange14": "This account has not blocked any users.", + "cchange15": "No registered name", + "cchange16": "Successfully unblocked this user.", + "cchange17": "Error occurred when trying to unblock this user. Please try again!", + "cchange18": "unblock", + "cchange19": "Invalid Name / Address, Check the name / address and retry...", + "cchange20": "Message Sent Successfully!", + "cchange21": "Sending failed, Please retry..." } } diff --git a/qortal-ui-core/language/sp.json b/qortal-ui-core/language/sp.json index 5ab728b5..6562cc6d 100644 --- a/qortal-ui-core/language/sp.json +++ b/qortal-ui-core/language/sp.json @@ -388,5 +388,28 @@ "dchange19": "Error occurred when trying to unfollow this registered name. Please try again!", "dchange20": "Error occurred when trying to unblock this registered name. Please try again!", "dchange21": "Error occurred when trying to delete this resource. Please try again!" + }, + "chatpage": { + "cchange1": "New Private Message", + "cchange2": "Loading...", + "cchange3": "Blocked Users", + "cchange4": "New Message", + "cchange5": "(Click to scroll down)", + "cchange6": "Type the name or address of who you want to chat with to send a private message!", + "cchange7": "Name / Address", + "cchange8": "Message...", + "cchange9": "Send", + "cchange10": "Blocked Users List", + "cchange11": "Name", + "cchange12": "Owner", + "cchange13": "Action", + "cchange14": "This account has not blocked any users.", + "cchange15": "No registered name", + "cchange16": "Successfully unblocked this user.", + "cchange17": "Error occurred when trying to unblock this user. Please try again!", + "cchange18": "unblock", + "cchange19": "Invalid Name / Address, Check the name / address and retry...", + "cchange20": "Message Sent Successfully!", + "cchange21": "Sending failed, Please retry..." } } \ No newline at end of file diff --git a/qortal-ui-core/language/us.json b/qortal-ui-core/language/us.json index fb0e1430..13cd6c58 100644 --- a/qortal-ui-core/language/us.json +++ b/qortal-ui-core/language/us.json @@ -388,5 +388,28 @@ "dchange19": "Error occurred when trying to unfollow this registered name. Please try again!", "dchange20": "Error occurred when trying to unblock this registered name. Please try again!", "dchange21": "Error occurred when trying to delete this resource. Please try again!" + }, + "chatpage": { + "cchange1": "New Private Message", + "cchange2": "Loading...", + "cchange3": "Blocked Users", + "cchange4": "New Message", + "cchange5": "(Click to scroll down)", + "cchange6": "Type the name or address of who you want to chat with to send a private message!", + "cchange7": "Name / Address", + "cchange8": "Message...", + "cchange9": "Send", + "cchange10": "Blocked Users List", + "cchange11": "Name", + "cchange12": "Owner", + "cchange13": "Action", + "cchange14": "This account has not blocked any users.", + "cchange15": "No registered name", + "cchange16": "Successfully unblocked this user.", + "cchange17": "Error occurred when trying to unblock this user. Please try again!", + "cchange18": "unblock", + "cchange19": "Invalid Name / Address, Check the name / address and retry...", + "cchange20": "Message Sent Successfully!", + "cchange21": "Sending failed, Please retry..." } } \ No newline at end of file diff --git a/qortal-ui-plugins/plugins/core/messaging/q-chat/q-chat.src.js b/qortal-ui-plugins/plugins/core/messaging/q-chat/q-chat.src.js index 409b379c..703a98c8 100644 --- a/qortal-ui-plugins/plugins/core/messaging/q-chat/q-chat.src.js +++ b/qortal-ui-plugins/plugins/core/messaging/q-chat/q-chat.src.js @@ -1,6 +1,11 @@ import { LitElement, html, css } from 'lit' import { render } from 'lit/html.js' import { Epml } from '../../../../epml.js' +import { use, get, translate, translateUnsafeHTML, registerTranslateConfig } from 'lit-translate' + +registerTranslateConfig({ + loader: lang => fetch(`/language/${lang}.json`).then(res => res.json()) +}) import '../../components/ChatWelcomePage.js' import '../../components/ChatHead.js' @@ -326,22 +331,22 @@ class Chat extends LitElement {
- this.shadowRoot.querySelector('#blockedUserDialog').show()}> + this.shadowRoot.querySelector('#blockedUserDialog').show()}>
this.scrollToBottom()}> - New Message - (Click to scroll down) keyboard_arrow_down + ${translate("chatpage.cchange4")} + ${translate("chatpage.cchange5")} keyboard_arrow_down
${window.parent.location.pathname !== "/app/q-chat" ? html`${this.renderChatPage(this.chatId)}` : html`${this.renderChatWelcomePage()}`} @@ -351,15 +356,15 @@ class Chat extends LitElement {
-

New Private Message

+

${translate("chatpage.cchange1")}


-

Type the name or address of who you want to chat with to send a private message!

+

${translate("chatpage.cchange6")}

- +

- +

- ${this.isLoading === false ? "Send" : html``} + ${this.isLoading === false ? this.renderSendText() : html``} - Close + ${translate("general.close")}
-

Blocked Users List

+

${translate("chatpage.cchange10")}



- - - { + + + { render(html`${this.renderUnblockButton(data.item)}`, root); }}> ${this.isEmptyArray(this.blockedUserList) ? html` - This account has not blocked any users. + ${translate("chatpage.cchange14")} `: ''} - Close + ${translate("general.close")}
@@ -419,10 +424,7 @@ class Chat extends LitElement { }, 1000) this.changeTheme() - - setInterval(() => { - this.changeTheme() - }, 100) + this.changeLanguage() const getBlockedUsers = async () => { let blockedUsers = await parentEpml.request('apiCall', { @@ -474,23 +476,33 @@ class Chat extends LitElement { let runFunctionsAfterPageLoadInterval = setInterval(runFunctionsAfterPageLoad, 100); window.addEventListener("contextmenu", (event) => { - - event.preventDefault(); + event.preventDefault() this._textMenu(event) - }); + }) window.addEventListener("click", () => { - parentEpml.request('closeCopyTextMenu', null) parentEpml.request('closeFramePasteMenu', null) - }); + }) + + window.addEventListener('storage', () => { + const checkLanguage = localStorage.getItem('qortalLanguage') + const checkTheme = localStorage.getItem('qortalTheme') + + use(checkLanguage) + + if (checkTheme === 'dark') { + this.theme = 'dark' + } else { + this.theme = 'light' + } + document.querySelector('html').setAttribute('theme', this.theme) + }) window.onkeyup = (e) => { if (e.keyCode === 27) { - parentEpml.request('closeCopyTextMenu', null) parentEpml.request('closeFramePasteMenu', null) - } } @@ -530,6 +542,14 @@ class Chat extends LitElement { parentEpml.imReady() } + renderLoadingText() { + return html`${translate("chatpage.cchange2")}` + } + + renderSendText() { + return html`${translate("chatpage.cchange9")}` + } + getChatBlockedList() { const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node] const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port @@ -543,8 +563,9 @@ class Chat extends LitElement { return response.json() }).then(data => { return data.map(item => { + let err1string = get("chatpage.cchange15") const noName = { - name: 'No registered name', + name: `${err1string}`, owner: item } fetch(`${nodeUrl}/names/address/${item}?limit=0&reverse=true`).then(res => { @@ -585,14 +606,16 @@ class Chat extends LitElement { this.blockedUsers = this.blockedUsers.filter(item => item != owner) this.getChatBlockedList() this.blockedUserList = JSON.parse(localStorage.getItem("ChatBlockedAddresses") || "[]") + let err2string = get("chatpage.cchange16") snackbar.add({ - labelText: `Successfully unblocked this user.`, + labelText: `${err2string}`, dismiss: true }) } else { + let err3string = get("chatpage.cchange17") snackbar.add({ - labelText: `Error occurred when trying to unblock this user. Please try again.`, + labelText: `${err3string}`, dismiss: true }) } @@ -600,7 +623,7 @@ class Chat extends LitElement { } renderUnblockButton(websiteObj) { - return html`` + return html`` } changeTheme() { @@ -613,6 +636,17 @@ class Chat extends LitElement { document.querySelector('html').setAttribute('theme', this.theme); } + changeLanguage() { + const checkLanguage = localStorage.getItem('qortalLanguage') + + if (checkLanguage === null || checkLanguage.length === 0) { + localStorage.setItem('qortalLanguage', 'us') + use('us') + } else { + use(checkLanguage) + } + } + renderChatWelcomePage() { return html`` } @@ -706,7 +740,6 @@ class Chat extends LitElement { } else { myRes = myNameRes } - return myRes } @@ -737,7 +770,8 @@ class Chat extends LitElement { if (addressPublicKey.error === 102) { _publicKey = false - parentEpml.request('showSnackBar', "Invalid Name / Address, Check the name / address and retry...") + let err4string = get("chatpage.cchange19") + parentEpml.request('showSnackBar', `${err4string}`) this.isLoading = false } else if (addressPublicKey !== false) { isEncrypted = 1 @@ -774,18 +808,16 @@ class Chat extends LitElement { const _chatBytesArray = Object.keys(chatBytes).map(function (key) { return chatBytes[key]; }); const chatBytesArray = new Uint8Array(_chatBytesArray) - - const chatBytesHash = new window.parent.Sha256().process(chatBytesArray).finish().result - const hashPtr = window.parent.sbrk(32, window.parent.heap); - const hashAry = new Uint8Array(window.parent.memory.buffer, hashPtr, 32); + const hashAry = new Uint8Array(window.parent.memory.buffer, hashPtr, 32) + hashAry.set(chatBytesHash); - const difficulty = this.balance === 0 ? 14 : 8; + const difficulty = this.balance === 0 ? 14 : 8 const workBufferLength = 8 * 1024 * 1024; - const workBufferPtr = window.parent.sbrk(workBufferLength, window.parent.heap); + const workBufferPtr = window.parent.sbrk(workBufferLength, window.parent.heap) let nonce = window.parent.computePow(hashPtr, workBufferPtr, workBufferLength, difficulty) @@ -802,13 +834,15 @@ class Chat extends LitElement { if (response === true) { messageBox.value = "" - parentEpml.request('showSnackBar', "Message Sent Successfully!") + let err5string = get("chatpage.cchange20") + parentEpml.request('showSnackBar', `${err5string}`) this.isLoading = false } else if (response.error) { parentEpml.request('showSnackBar', response.message) this.isLoading = false } else { - parentEpml.request('showSnackBar', "Sending failed, Please retry...") + let err6string = get("chatpage.cchange21") + parentEpml.request('showSnackBar', `${err6string}`) this.isLoading = false } }