From 950d0982498a5824ed4c75b5e4df2fb167c7d85b Mon Sep 17 00:00:00 2001 From: AlphaX-Qortal Date: Fri, 24 Jan 2025 23:35:08 +0100 Subject: [PATCH] Try 10 times to download keys --- .../group-management/group-management.src.js | 22 +++++++++++++++- plugins/plugins/core/q-chat/q-chat.src.js | 26 +++++++++++++++++-- 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/plugins/plugins/core/group-management/group-management.src.js b/plugins/plugins/core/group-management/group-management.src.js index 454c7809..2df62b99 100644 --- a/plugins/plugins/core/group-management/group-management.src.js +++ b/plugins/plugins/core/group-management/group-management.src.js @@ -2870,6 +2870,10 @@ class GroupManagement extends LitElement { let gAdmin = '' let gAddress = '' let keysToOld = "Wait until an admin re-encrypts the keys. Only unencrypted messages will be displayed." + let retryDownload = "Retry downloading and decrypt keys in 5 seconds! Please wait..." + let failDownload = "Error downloading and decrypt keys! Only unencrypted messages will be displayed. Please try again later..." + let all_ok = false + let counter = 0 const symIdentifier = 'symmetric-qchat-group-' + groupId const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node] @@ -2920,10 +2924,26 @@ class GroupManagement extends LitElement { } if (adminExists(gAddress)) { + const sleep = (t) => new Promise(r => setTimeout(r, t)) const dataUrl = `${nodeUrl}/arbitrary/DOCUMENT_PRIVATE/${gAdmin}/${symIdentifier}?encoding=base64&rebuild=true&async=true` const res = await fetch(dataUrl) - data = await res.text() + do { + counter++ + + if (!res.ok) { + parentEpml.request('showSnackBar', `${retryDownload}`) + await sleep(5000) + } else { + data = await res.text() + all_ok = true + } + + if (counter > 10) { + parentEpml.request('showSnackBar', `${failDownload}`) + return + } + } while (!all_ok) const decryptedKey = await this.decryptGroupEncryption(data) diff --git a/plugins/plugins/core/q-chat/q-chat.src.js b/plugins/plugins/core/q-chat/q-chat.src.js index a103a164..ba12a089 100644 --- a/plugins/plugins/core/q-chat/q-chat.src.js +++ b/plugins/plugins/core/q-chat/q-chat.src.js @@ -452,8 +452,12 @@ class Chat extends LitElement { let gAddress = '' let currentGroupId = url.substring(6) let symIdentifier = 'symmetric-qchat-group-' + currentGroupId - let locateString = "Downloading and decrypt keys ! Please wait..." + let locateString = "Downloading and decrypt keys! Please wait..." let keysToOld = "Wait until an admin re-encrypts the keys. Only unencrypted messages will be displayed." + let retryDownload = "Retry downloading and decrypt keys in 5 seconds! Please wait..." + let failDownload = "Error downloading and decrypt keys! Only unencrypted messages will be displayed. Please try again later..." + let all_ok = false + let counter = 0 const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node] const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port @@ -510,10 +514,28 @@ class Chat extends LitElement { } if (adminExists(gAddress)) { + const sleep = (t) => new Promise(r => setTimeout(r, t)) const dataUrl = `${nodeUrl}/arbitrary/DOCUMENT_PRIVATE/${gAdmin}/${symIdentifier}?encoding=base64&rebuild=true&async=true` const res = await fetch(dataUrl) - data = await res.text() + do { + counter++ + + if (!res.ok) { + parentEpml.request('showSnackBar', `${retryDownload}`) + await sleep(5000) + } else { + data = await res.text() + all_ok = true + } + + if (counter > 10) { + parentEpml.request('showSnackBar', `${failDownload}`) + this.activeChatHeadUrl = url + this.requestUpdate() + return + } + } while (!all_ok) const decryptedKey = await this.decryptGroupEncryption(data)