From 2c13227809ad735f20a63f46ecf53aa66c3ff5d8 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Sat, 17 Sep 2022 11:16:38 +0200 Subject: [PATCH 01/16] update nodes list with names and import / export --- .../functional-components/settings-page.js | 191 ++++++++++++++++-- .../src/redux/app/actions/node-config.js | 31 +-- 2 files changed, 174 insertions(+), 48 deletions(-) diff --git a/qortal-ui-core/src/functional-components/settings-page.js b/qortal-ui-core/src/functional-components/settings-page.js index 83520f5d..2540f5d7 100644 --- a/qortal-ui-core/src/functional-components/settings-page.js +++ b/qortal-ui-core/src/functional-components/settings-page.js @@ -1,11 +1,12 @@ import { LitElement, html, css } from 'lit' import { connect } from 'pwa-helpers' import { store } from '../store.js' -import { doAddNode, doSetNode } from '../redux/app/app-actions.js' +import { doAddNode, doSetNode, doLoadNodeConfig } from '../redux/app/app-actions.js' +import { get, translate, translateUnsafeHTML } from 'lit-translate' +import FileSaver from 'file-saver' import snackbar from './snackbar.js' -import { translate, translateUnsafeHTML } from 'lit-translate' import '../components/language-selector.js' - +import '../custom-elements/frag-file-input.js' import '@material/mwc-dialog' import '@material/mwc-button' import '@material/mwc-select' @@ -32,6 +33,9 @@ class SettingsPage extends connect(store)(LitElement) { --mdc-dialog-content-ink-color: var(--black); --mdc-theme-surface: var(--white); --mdc-theme-text-primary-on-background: var(--black); + --mdc-dialog-min-width: 300px; + --mdc-dialog-max-width: 650px; + --mdc-dialog-max-height: 700px; } #main { @@ -45,16 +49,40 @@ class SettingsPage extends connect(store)(LitElement) { --mdc-icon-size: 36px; } + span.name { + display: inline-block; + width: 150px; + font-weight: 600; + color: #03a9f4; + border: 1px solid transparent; + } + .red { --mdc-theme-primary: red; } + + .buttonred { + color: #f44336; + } + + .buttongreen { + color: #03c851; + } + + .floatleft { + float: left; + } + + .floatright { + float: right; + } ` } constructor() { super() this.nodeConfig = {} - this.theme = localStorage.getItem('qortalTheme') ? localStorage.getItem('qortalTheme') : 'light'; + this.theme = localStorage.getItem('qortalTheme') ? localStorage.getItem('qortalTheme') : 'light' } render() { @@ -65,16 +93,25 @@ class SettingsPage extends connect(store)(LitElement) {

-
+
${this.nodeConfig.knownNodes.map((n, index) => html` - ${n.protocol + '://' + n.domain + ':' + n.port} + + ${n.name} + ${n.protocol + '://' + n.domain + ':' + n.port} + `)} -

${translate("settings.nodehint")}

+

${translate("settings.nodehint")}

- add${translate("settings.addcustomnode")} + add${translate("settings.addcustomnode")}
+
+ remove${translate("settings.deletecustomnode")} +
+
+
${this.renderExportNodesListButton()}
${this.renderImportNodesListButton()}
+



@@ -99,7 +136,9 @@ class SettingsPage extends connect(store)(LitElement) {

- + +
+ http https @@ -120,6 +159,26 @@ class SettingsPage extends connect(store)(LitElement) { ${translate("settings.addandsave")} + + +
+

${translate("settings.import")}

+
+
+
+
+ +

${translate("walletpage.wchange56")}

+
${translate("settings.warning")}
+
+ + ${translate("general.close")} + +
` } @@ -127,15 +186,46 @@ class SettingsPage extends connect(store)(LitElement) { // ... } - stateChanged(state) { - this.config = state.config - this.nodeConfig = state.app.nodeConfig - } - show() { this.shadowRoot.getElementById('settingsDialog').show() } + close() { + this.shadowRoot.getElementById('settingsDialog').close() + } + + removeList() { + localStorage.removeItem("myQortalNodes") + + const obj1 = { + name: 'Local Node', + protocol: 'http', + domain: '127.0.0.1', + port: 12391, + enableManagement: true + } + + const obj2 = { + name: 'Local Testnet', + protocol: 'http', + domain: '127.0.0.1', + port: 62391, + enableManagement: true + } + + var renewNodes = []; + renewNodes.push(obj1,obj2) + localStorage.setItem('myQortalNodes', JSON.stringify(renewNodes)) + + let snack1string = get("settings.snack1") + snackbar.add({ + labelText: `${snack1string}`, + dismiss: true + }) + + store.dispatch(doLoadNodeConfig()) + } + nodeSelected(e) { const selectedNodeIndex = this.shadowRoot.getElementById('nodeSelect').value const selectedNode = this.nodeConfig.knownNodes[selectedNodeIndex] @@ -144,22 +234,26 @@ class SettingsPage extends connect(store)(LitElement) { const index = parseInt(selectedNodeIndex) if (isNaN(index)) return - // Set selected node store.dispatch(doSetNode(selectedNodeIndex)) + + let snack2string = get("settings.snack2") snackbar.add({ - labelText: `UI Set To Node : ${selectedNodeUrl}`, + labelText: `${snack2string} : ${selectedNodeUrl}`, dismiss: true }) + this.shadowRoot.querySelector('#settingsDialog').close() } addNode() { + const nameInput = this.shadowRoot.getElementById('nameInput').value const protocolList = this.shadowRoot.getElementById('protocolList').value const domainInput = this.shadowRoot.getElementById('domainInput').value const portInput = this.shadowRoot.getElementById('portInput').value if (protocolList.length >= 4 && domainInput.length >= 3 && portInput.length >= 4) { const nodeObject = { + name: nameInput, protocol: protocolList, domain: domainInput, port: portInput, @@ -168,19 +262,21 @@ class SettingsPage extends connect(store)(LitElement) { store.dispatch(doAddNode(nodeObject)) - const haveNodes = JSON.parse(localStorage.getItem('myQortalNodes')); + const haveNodes = JSON.parse(localStorage.getItem('myQortalNodes')) if (haveNodes === null || haveNodes.length === 0) { var savedNodes = []; savedNodes.push(nodeObject); - localStorage.setItem('myQortalNodes', JSON.stringify(savedNodes)); + localStorage.setItem('myQortalNodes', JSON.stringify(savedNodes)) + let snack3string = get("settings.snack3") snackbar.add({ - labelText: 'Successfully Added And Saved Custom Node', + labelText: `${snack3string}`, dismiss: true }) + this.shadowRoot.getElementById('nameInput').value = '' this.shadowRoot.getElementById('protocolList').value = '' this.shadowRoot.getElementById('domainInput').value = '' this.shadowRoot.getElementById('portInput').value = '' @@ -193,11 +289,13 @@ class SettingsPage extends connect(store)(LitElement) { stored.push(nodeObject); localStorage.setItem('myQortalNodes', JSON.stringify(stored)); + let snack3string = get("settings.snack3") snackbar.add({ - labelText: 'Successfully Added And Saved Custom Node', + labelText: `${snack3string}`, dismiss: true }) + this.shadowRoot.getElementById('nameInput').value = '' this.shadowRoot.getElementById('protocolList').value = '' this.shadowRoot.getElementById('domainInput').value = '' this.shadowRoot.getElementById('portInput').value = '' @@ -206,6 +304,59 @@ class SettingsPage extends connect(store)(LitElement) { } } } + + openImportNodesDialog() { + this.shadowRoot.querySelector("#importQortalNodesListDialog").show() + } + + closeImportNodesDialog() { + this.shadowRoot.querySelector("#importQortalNodesListDialog").close() + } + + renderExportNodesListButton() { + return html` + + ` + } + + exportQortalNodesList() { + const qortalNodesList = JSON.stringify(localStorage.getItem("myQortalNodes")) + const qortalNodesListSave = JSON.parse((qortalNodesList) || "[]") + const blob = new Blob([qortalNodesListSave], { type: 'text/plain;charset=utf-8' }) + FileSaver.saveAs(blob, `qortal.nodes`) + + let snack4string = get("settings.snack4") + snackbar.add({ + labelText: `${snack4string} qortal.nodes`, + dismiss: true + }) + } + + renderImportNodesListButton() { + return html` + + ` + } + + async importQortalNodesList(file) { + localStorage.removeItem("myQortalNodes") + const newItems = JSON.parse((file) || "[]") + localStorage.setItem("myQortalNodes", JSON.stringify(newItems)) + this.shadowRoot.querySelector('#importQortalNodesListDialog').close() + + let snack5string = get("settings.snack5") + snackbar.add({ + labelText: `${snack5string}`, + dismiss: true + }) + + store.dispatch(doLoadNodeConfig()) + } + + stateChanged(state) { + this.config = state.config + this.nodeConfig = state.app.nodeConfig + } } window.customElements.define('settings-page', SettingsPage) diff --git a/qortal-ui-core/src/redux/app/actions/node-config.js b/qortal-ui-core/src/redux/app/actions/node-config.js index 7c4be8c4..8181553f 100644 --- a/qortal-ui-core/src/redux/app/actions/node-config.js +++ b/qortal-ui-core/src/redux/app/actions/node-config.js @@ -23,7 +23,7 @@ export const doLoadNodeConfig = () => { if (checkNodes === null || checkNodes.length === 0) { var saveNode = []; - saveNode.push(obj1,obj2,obj3,obj4,obj5,obj6); + saveNode.push(obj1,obj2); localStorage.setItem('myQortalNodes', JSON.stringify(saveNode)); nodeConfig.knownNodes = JSON.parse(localStorage.getItem('myQortalNodes')); } else{ @@ -73,6 +73,7 @@ const addNode = (payload) => { } const obj1 = { + name: 'Local Node', protocol: 'http', domain: '127.0.0.1', port: 12391, @@ -80,36 +81,10 @@ const obj1 = { } const obj2 = { - protocol: 'http', - domain: 'node1.qortal.org', - port: 12391, - enableManagement: false -} - -const obj3 = { - protocol: 'http', - domain: 'node2.qortal.org', - port: 12391, - enableManagement: false -} - -const obj4 = { + name: 'Local Testnet', protocol: 'http', domain: '127.0.0.1', port: 62391, enableManagement: true } -const obj5 = { - protocol: 'http', - domain: 'node1.qortal.org', - port: 62391, - enableManagement: false -} - -const obj6 = { - protocol: 'http', - domain: 'node2.qortal.org', - port: 62391, - enableManagement: false -} From ed5163ff8cd436b34ace96c6a62526d286e5670d Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Sat, 17 Sep 2022 14:04:05 +0200 Subject: [PATCH 02/16] Load exchange rate once at start then every 5 minutes --- .../core/trade-portal/trade-portal.src.js | 82 ++++++++++++------- .../plugins/core/wallet/wallet-app.src.js | 16 ++-- 2 files changed, 59 insertions(+), 39 deletions(-) diff --git a/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js b/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js index 14a3bb03..285383b5 100644 --- a/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js +++ b/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js @@ -1026,6 +1026,48 @@ class TradePortal extends LitElement { this.getOpenOrdersGrid() + const getQortBtcPrice = () => { + parentEpml.request("apiCall", { url: `/crosschain/price/BITCOIN?inverse=true` }).then((res) => { + setTimeout(() => { this.qortbtc = (Number(res) / 1e8).toFixed(8) }, 1) + }) + setTimeout(getQortBtcPrice, 300000) + } + + const getQortLtcPrice = () => { + parentEpml.request("apiCall", { url: `/crosschain/price/LITECOIN?inverse=true` }).then((res) => { + setTimeout(() => { this.qortltc = (Number(res) / 1e8).toFixed(8) }, 1) + }) + setTimeout(getQortLtcPrice, 300000) + } + + const getQortDogePrice = () => { + parentEpml.request("apiCall", { url: `/crosschain/price/DOGECOIN?inverse=true` }).then((res) => { + setTimeout(() => { this.qortdoge = (Number(res) / 1e8).toFixed(8) }, 1) + }) + setTimeout(getQortDogePrice, 300000) + } + + const getQortDgbPrice = () => { + parentEpml.request("apiCall", { url: `/crosschain/price/DIGIBYTE?inverse=true` }).then((res) => { + setTimeout(() => { this.qortdgb = (Number(res) / 1e8).toFixed(8) }, 1) + }) + setTimeout(getQortDgbPrice, 300000) + } + + const getQortRvnPrice = () => { + parentEpml.request("apiCall", { url: `/crosschain/price/RAVENCOIN?inverse=true` }).then((res) => { + setTimeout(() => { this.qortrvn = (Number(res) / 1e8).toFixed(8) }, 1) + }) + setTimeout(getQortRvnPrice, 300000) + } + + const getQortArrrPrice = () => { + parentEpml.request("apiCall", { url: `/crosschain/price/PIRATECHAIN?inverse=true` }).then((res) => { + setTimeout(() => { this.qortarrr = (Number(res) / 1e8).toFixed(8) }, 1) + }) + setTimeout(getQortArrrPrice, 300000) + } + window.addEventListener('contextmenu', (event) => { event.preventDefault() this._textMenu(event)}, @@ -1067,7 +1109,15 @@ class TradePortal extends LitElement { }) parentEpml.subscribe('config', (c) => { - if (!configLoaded) configLoaded = true + if (!configLoaded) { + setTimeout(getQortBtcPrice, 1) + setTimeout(getQortLtcPrice, 1) + setTimeout(getQortDogePrice, 1) + setTimeout(getQortDgbPrice, 1) + setTimeout(getQortRvnPrice, 1) + setTimeout(getQortArrrPrice, 1) + configLoaded = true + } this.config = JSON.parse(c) }) @@ -1112,46 +1162,16 @@ class TradePortal extends LitElement { exchangeRateQort() { if (this.listedCoins.get(this.selectedCoin).coinCode === "BTC") { - parentEpml.request('apiCall', { - url: `/crosschain/price/BITCOIN?inverse=true` - }).then((res) => { - this.qortbtc = (Number(res) / 1e8).toFixed(8) - }) return html`${this.qortbtc}` } else if (this.listedCoins.get(this.selectedCoin).coinCode === "LTC") { - parentEpml.request('apiCall', { - url: `/crosschain/price/LITECOIN?inverse=true` - }).then((res) => { - this.qortltc = (Number(res) / 1e8).toFixed(8) - }) return html`${this.qortltc}` } else if (this.listedCoins.get(this.selectedCoin).coinCode === "DOGE") { - parentEpml.request('apiCall', { - url: `/crosschain/price/DOGECOIN?inverse=true` - }).then((res) => { - this.qortdoge = (Number(res) / 1e8).toFixed(8) - }) return html`${this.qortdoge}` } else if (this.listedCoins.get(this.selectedCoin).coinCode === "DGB") { - parentEpml.request('apiCall', { - url: `/crosschain/price/DIGIBYTE?inverse=true` - }).then((res) => { - this.qortdgb = (Number(res) / 1e8).toFixed(8) - }) return html`${this.qortdgb}` } else if (this.listedCoins.get(this.selectedCoin).coinCode === "RVN") { - parentEpml.request('apiCall', { - url: `/crosschain/price/RAVENCOIN?inverse=true` - }).then((res) => { - this.qortrvn = (Number(res) / 1e8).toFixed(8) - }) return html`${this.qortrvn}` } else if (this.listedCoins.get(this.selectedCoin).coinCode === "ARRR") { - parentEpml.request('apiCall', { - url: `/crosschain/price/PIRATECHAIN?inverse=true` - }).then((res) => { - this.qortarrr = (Number(res) / 1e8).toFixed(8) - }) return html`${this.qortarrr}` } } diff --git a/qortal-ui-plugins/plugins/core/wallet/wallet-app.src.js b/qortal-ui-plugins/plugins/core/wallet/wallet-app.src.js index 2297ea26..35952e8c 100644 --- a/qortal-ui-plugins/plugins/core/wallet/wallet-app.src.js +++ b/qortal-ui-plugins/plugins/core/wallet/wallet-app.src.js @@ -3699,7 +3699,7 @@ class MultiWallet extends LitElement { } calculateQortAll() { - if (this.balance < 0.00100000) { + if (this.balance < 0.00110000) { let not_enough_string = get("walletpage.wchange26") parentEpml.request('showSnackBar', `${not_enough_string}`) } else { @@ -3708,7 +3708,7 @@ class MultiWallet extends LitElement { } calculateBtcAll() { - if (this.balance < 0.00050000) { + if (this.balance < 0.00051000) { let not_enough_string = get("walletpage.wchange26") parentEpml.request('showSnackBar', `${not_enough_string}`) } else { @@ -3718,17 +3718,17 @@ class MultiWallet extends LitElement { } calculateLtcAll() { - if (this.balance < 0.00050000) { + if (this.balance < 0.00031000) { let not_enough_string = get("walletpage.wchange26") parentEpml.request('showSnackBar', `${not_enough_string}`) } else { - this.ltcAmount = (this.balance - 0.00025000).toFixed(8) + this.ltcAmount = (this.balance - 0.00030000).toFixed(8) this.ltcFeePerByte = 15 } } calculateDogeAll() { - if (this.balance < 0.05000000) { + if (this.balance < 0.05100000) { let not_enough_string = get("walletpage.wchange26") parentEpml.request('showSnackBar', `${not_enough_string}`) } else { @@ -3738,7 +3738,7 @@ class MultiWallet extends LitElement { } calculateDgbAll() { - if (this.balance < 0.00005000) { + if (this.balance < 0.00005100) { let not_enough_string = get("walletpage.wchange26") parentEpml.request('showSnackBar', `${not_enough_string}`) } else { @@ -3748,7 +3748,7 @@ class MultiWallet extends LitElement { } calculateRvnAll() { - if (this.balance < 0.00562500) { + if (this.balance < 0.00572500) { let not_enough_string = get("walletpage.wchange26") parentEpml.request('showSnackBar', `${not_enough_string}`) } else { @@ -3758,7 +3758,7 @@ class MultiWallet extends LitElement { } calculateArrrAll() { - if (this.balance < 0.00010000) { + if (this.balance < 0.00011000) { let not_enough_string = get("walletpage.wchange26") parentEpml.request('showSnackBar', `${not_enough_string}`) } else { From 68e9f210d4cc1b40883fc7c23dad98f19dadb01e Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Sat, 17 Sep 2022 15:33:16 +0200 Subject: [PATCH 03/16] await update --- .../src/redux/user/actions/update-name.js | 5 +---- .../core/trade-portal/trade-portal.src.js | 21 +++++++++---------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/qortal-ui-core/src/redux/user/actions/update-name.js b/qortal-ui-core/src/redux/user/actions/update-name.js index b1529bb0..c3eb1772 100644 --- a/qortal-ui-core/src/redux/user/actions/update-name.js +++ b/qortal-ui-core/src/redux/user/actions/update-name.js @@ -1,9 +1,8 @@ import { updateAccountInfo } from './update-account-info.js' -// import { doUpdateStoredWalletName } from '../user-actions.js' import { doUpdateStoredWalletName } from './store-wallet.js' const GET_NAME_URL = 'names/address/' -const CHECK_NAME_INTERVAL = 1000 * 3 // Every 3 seconds +const CHECK_NAME_INTERVAL = 1000 * 10 // Every 10 seconds export const UPDATE_NAME_STATUSES = { LOADING: 'LOADING', @@ -21,8 +20,6 @@ export const doUpdateAccountName = (address, expectedName, awaitingConfirm) => { const state = getState() const config = state.config const node = config.coin.node.api - // console.log(config.constants) - // const url = config.constants.proxyURL + node.url + node.tail + GET_NAME_URL + address const url = node.url + node.tail + GET_NAME_URL + address return fetch(url) .then(res => res.json()) diff --git a/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js b/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js index 285383b5..b50237ee 100644 --- a/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js +++ b/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js @@ -1332,18 +1332,21 @@ class TradePortal extends LitElement { tabSellContent.style.display = (tab === 'sell') ? 'block' : 'none' } - reRenderHistoricTrades() { + async reRenderHistoricTrades() { this.requestUpdate() + await this.updateComplete this.isLoadingHistoricTrades = false } - reRenderOpenFilteredOrders() { + async reRenderOpenFilteredOrders() { this.requestUpdate() + await this.updateComplete this.isLoadingOpenTrades = false } - reRenderMyOpenOrders() { + async reRenderMyOpenOrders() { this.requestUpdate() + await this.updateComplete this.isLoadingMyOpenOrders = false } @@ -1975,7 +1978,6 @@ class TradePortal extends LitElement { // Closed Event socket.onclose = () => { clearTimeout(socketTimeout) - // Restart Socket Connection restartTradeOffersWebSocket() } // Error Event @@ -2009,7 +2011,6 @@ class TradePortal extends LitElement { // Closed Event socket.onclose = () => { clearTimeout(socketTimeout) - // Restart Socket Connection restartTradeBotWebSocket() } // Error Event @@ -2039,7 +2040,6 @@ class TradePortal extends LitElement { // Closed Event socket.onclose = () => { clearTimeout(socketTimeout) - // Restart Socket Connection restartTradePresenceWebSocket() } // Error Event @@ -2070,7 +2070,6 @@ class TradePortal extends LitElement { // Closed Event socket.onclose = () => { clearTimeout(socketTimeout) - // Restart Socket Connection restartPresenceWebSocket() } // Error Event @@ -2084,19 +2083,19 @@ class TradePortal extends LitElement { } const restartPresenceWebSocket = () => { - setTimeout(() => initPresenceWebSocket(true), 20000) + setTimeout(() => initPresenceWebSocket(true), 1000) } const restartTradePresenceWebSocket = () => { - setTimeout(() => initTradePresenceWebSocket(true), 20000) + setTimeout(() => initTradePresenceWebSocket(true), 1000) } const restartTradeOffersWebSocket = () => { - setTimeout(() => initTradeOffersWebSocket(true), 20000) + setTimeout(() => initTradeOffersWebSocket(true), 1000) } const restartTradeBotWebSocket = () => { - setTimeout(() => initTradeBotWebSocket(true), 20000) + setTimeout(() => initTradeBotWebSocket(true), 1000) } // Start TradeOffersWebSocket From ba97508d532ba7bded233f74662a6e2c74422e6e Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Tue, 20 Sep 2022 14:08:43 +0200 Subject: [PATCH 04/16] Bump version 2.1.0 --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 0596bf26..5d6a6ddd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "qortal-ui", - "version": "2.0.0", + "version": "2.1.0", "description": "Qortal Project - decentralize the world - Data storage, communications, web hosting, decentralized trading, complete infrastructure for the future blockchain-based Internet", "keywords": [ "QORT", @@ -36,7 +36,7 @@ "electron-log": "4.4.8" }, "devDependencies": { - "electron": "17.4.11", + "electron": "20.1.4", "electron-builder": "23.3.3", "electron-notarize": "1.2.1", "electron-packager": "16.0.0", @@ -45,4 +45,4 @@ "engines": { "node": ">=14.17.0" } -} \ No newline at end of file +} From 34d066327d3a99986144cece3019c497370c9816 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Tue, 20 Sep 2022 14:26:57 +0200 Subject: [PATCH 05/16] Set to 3.5GB for less memory usage --- electron-builder.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron-builder.yml b/electron-builder.yml index 23303743..6efeab57 100644 --- a/electron-builder.yml +++ b/electron-builder.yml @@ -99,7 +99,7 @@ linux: StartupWMClass: qortal-ui executableArgs: - --no-sandbox - - '--js-flags="--max-old-space-size=6144"' + - '--js-flags="--max-old-space-size=3584"' target: - "deb" - "AppImage" From e832cc9f28f8afdae9a34639690eea84506d5126 Mon Sep 17 00:00:00 2001 From: CalDescent <> Date: Sat, 24 Sep 2022 17:24:59 +0100 Subject: [PATCH 06/16] Removed presence websocket - this has been replaced by the tradepresence websocket --- .../core/trade-portal/trade-portal.src.js | 51 ++----------------- 1 file changed, 3 insertions(+), 48 deletions(-) diff --git a/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js b/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js index b50237ee..0f0ff82b 100644 --- a/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js +++ b/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js @@ -1891,7 +1891,6 @@ class TradePortal extends LitElement { initSocket() { let _relatedCoin = "" - let presenceTxns = null let tradePresenceTxns = null let offeringTrades = null @@ -1915,8 +1914,8 @@ class TradePortal extends LitElement { return timestamp > thirtyMinsAgo } - const filterOffersUsingEitherPresence = (offeringTrade) => { - return lessThanThirtyMinsAgo(offeringTrade.lastSeen) || offeringTrade.tradePresenceExpiry > Date.now(); + const filterOffersUsingTradePresence = (offeringTrade) => { + return offeringTrade.tradePresenceExpiry > Date.now(); } const processOffersWithPresence = () => { @@ -1930,13 +1929,6 @@ class TradePortal extends LitElement { } const startOfferPresenceMapping = async () => { - if (presenceTxns !== null) { - await asyncForEach(presenceTxns, async (presence) => { - await waitFor(250) - let offerIndex = offeringTrades.findIndex((offeringTrade) => offeringTrade.qortalCreatorTradeAddress === presence.address) - offerIndex !== -1 ? (offeringTrades[offerIndex].lastSeen = presence.timestamp) : null - }) - } if (tradePresenceTxns !== null) { await asyncForEach(tradePresenceTxns, async (tradePresence) => { @@ -1946,7 +1938,7 @@ class TradePortal extends LitElement { }) } - let filteredOffers = offeringTrades.filter((offeringTrade) => filterOffersUsingEitherPresence(offeringTrade)) + let filteredOffers = offeringTrades.filter((offeringTrade) => filterOffersUsingTradePresence(offeringTrade)) self.postMessage({ type: 'PRESENCE', data: { offers: offeringTrades, filteredOffers: filteredOffers, relatedCoin: _relatedCoin } }) } @@ -2052,40 +2044,6 @@ class TradePortal extends LitElement { } } - // Will be removed in future - being replaced by tradepresence above - const initPresenceWebSocket = (restarted = false) => { - let socketTimeout - let socketLink = `ws://NODEURL/websockets/presence?presenceType=TRADE_BOT` - const socket = new WebSocket(socketLink) - // Open Connection - socket.onopen = () => { - setTimeout(pingSocket, 250) - } - // Message Event - socket.onmessage = (e) => { - presenceTxns = JSON.parse(e.data) - processOffersWithPresence() - restarted = false - } - // Closed Event - socket.onclose = () => { - clearTimeout(socketTimeout) - restartPresenceWebSocket() - } - // Error Event - socket.onerror = (e) => { - clearTimeout(socketTimeout) - } - const pingSocket = () => { - socket.send('ping') - socketTimeout = setTimeout(pingSocket, 295000) - } - } - - const restartPresenceWebSocket = () => { - setTimeout(() => initPresenceWebSocket(true), 1000) - } - const restartTradePresenceWebSocket = () => { setTimeout(() => initTradePresenceWebSocket(true), 1000) } @@ -2101,9 +2059,6 @@ class TradePortal extends LitElement { // Start TradeOffersWebSocket initTradeOffersWebSocket() - // Start PresenceWebSocket - initPresenceWebSocket() - // Start TradePresenceWebSocket initTradePresenceWebSocket() From af28e59ecd98d5e7b7bd6820072adf1aab911ce1 Mon Sep 17 00:00:00 2001 From: CalDescent <> Date: Sat, 24 Sep 2022 17:25:59 +0100 Subject: [PATCH 07/16] Removed waitFor(250) when looping through presence transactions. This fixes the slow loading issue. --- qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js b/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js index 0f0ff82b..5da09bf3 100644 --- a/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js +++ b/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js @@ -1921,7 +1921,6 @@ class TradePortal extends LitElement { const processOffersWithPresence = () => { if (offeringTrades === null) return - const waitFor = (ms) => new Promise((r) => setTimeout(r, ms)) async function asyncForEach(array, callback) { for (let index = 0; index < array.length; index++) { await callback(array[index], index, array) @@ -1932,7 +1931,6 @@ class TradePortal extends LitElement { if (tradePresenceTxns !== null) { await asyncForEach(tradePresenceTxns, async (tradePresence) => { - await waitFor(250) let offerIndex = offeringTrades.findIndex((offeringTrade) => offeringTrade.qortalCreatorTradeAddress === tradePresence.tradeAddress) offerIndex !== -1 ? (offeringTrades[offerIndex].tradePresenceExpiry = tradePresence.timestamp) : null }) From c092bc05bd917b1e38e70b9a2b73a1c0824ee82e Mon Sep 17 00:00:00 2001 From: CalDescent <> Date: Sat, 24 Sep 2022 17:51:49 +0100 Subject: [PATCH 08/16] Speed up loading by showing 25 historic trades instead of 100, as a temporary solution until core optimizations are complete. --- qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js b/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js index 5da09bf3..fe631050 100644 --- a/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js +++ b/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js @@ -2554,7 +2554,7 @@ class TradePortal extends LitElement { }) const getCompletedTrades = async () => { - const url = `http://NODEURL/crosschain/trades?limit=100&reverse=true&foreignBlockchain=FOREIGN_BLOCKCHAIN` + const url = `http://NODEURL/crosschain/trades?limit=25&reverse=true&foreignBlockchain=FOREIGN_BLOCKCHAIN` const res = await fetch(url) const historicTrades = await res.json() const compareFn = (a, b) => { From 55780750f3351908a05481489126898009e4da33 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Mon, 3 Oct 2022 11:18:39 +0200 Subject: [PATCH 09/16] Update Tray and reward --- electron.js | 46 ++- img/icons/png/tray/tray.png | Bin 0 -> 847 bytes img/icons/png/tray/tray@1.5x.png | Bin 0 -> 1181 bytes img/icons/png/tray/tray@2x.png | Bin 0 -> 1500 bytes img/icons/png/tray/tray@3x.png | Bin 0 -> 2247 bytes img/icons/png/tray/tray@4x.png | Bin 0 -> 2891 bytes .../plugins/core/minting/minting-info.src.js | 263 ++++++++++-------- 7 files changed, 183 insertions(+), 126 deletions(-) create mode 100644 img/icons/png/tray/tray.png create mode 100644 img/icons/png/tray/tray@1.5x.png create mode 100644 img/icons/png/tray/tray@2x.png create mode 100644 img/icons/png/tray/tray@3x.png create mode 100644 img/icons/png/tray/tray@4x.png diff --git a/electron.js b/electron.js index c681af40..0f02b952 100644 --- a/electron.js +++ b/electron.js @@ -56,36 +56,60 @@ function createWindow() { minWidth: 700, minHeight: 640, icon: iconPath(), - title: "Qortal", + title: "Qortal UI", autoHideMenuBar: true, webPreferences: { nodeIntegration: false, partition: 'persist:webviewsession', enableRemoteModule: false, - nativeWindowOpen: false, + nativeWindowOpen: false, sandbox: true }, show: false }) - myWindow.maximize(); - myWindow.show(); + myWindow.maximize() + myWindow.show() myWindow.loadURL('http://localhost:12388/app/wallet') myWindow.on('closed', function () { myWindow = null }) + myWindow.on('minimize',function(event) { + event.preventDefault() + myWindow.hide() + }) } + + const createTray = () => { - let myTray = new Tray(path.join(__dirname, 'img', 'icons', 'png', '32x32.png')) - const contextMenu = Menu.buildFromTemplate([{ - label: "Quit", click() { - myTray.destroy(); - app.quit(); + let myTray = new Tray(__dirname + '/img/icons/png/tray/tray.png') + const contextMenu = Menu.buildFromTemplate([ + { + label: `Qortal UI v${app.getVersion()}`, + enabled: false, + }, + { + type: 'separator', }, - }]) + { + label: 'Show Qortal UI', + click: function () { + myWindow.maximize() + myWindow.show() + }, + }, + { + label: 'Quit', + click() { + myTray.destroy() + app.quit() + }, + }, + ]) myTray.setTitle("QORTAL UI") - myTray.setToolTip("QORTAL UI") + myTray.setToolTip(`Qortal UI v${app.getVersion()}`) myTray.setContextMenu(contextMenu) + myTray.on("double-click", () => myWindow.maximize() , myWindow.show()) } const isLock = app.requestSingleInstanceLock(); diff --git a/img/icons/png/tray/tray.png b/img/icons/png/tray/tray.png new file mode 100644 index 0000000000000000000000000000000000000000..8804297b9dff74c6c5c641cc6680cc90fe9ab196 GIT binary patch literal 847 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5)TbHX z6XFU~@c;jRhJ~M*SAGF9fZ+R||LY$Aw%Gm6ZtwRkPyhV*3ljYM@BfAOf3JS{`|lr! zd++nVM_<7#5Dx{EUib;&v#t69G*e>3R|t3C%RlU^zA!BRl5_T__=c~HE51l>{91JW zXUo-JikrVOtoXvU`U~gkFRELfR0Nt?i(eI@Xep~MT#=7bY%gQec z@BQw(@vG|M&$mB84tVwBU*Wl*K#Q1Gewlga*Y;BRk9_A@^X2yEzbU7F2(J4oy8f&1y01U~{@?xLkI$j+ylcK_Z2k7> z_rE0%e%tQ-1`LOV_kX|n@o&we-wTf|0R|d_T1k)}C>9vl+?PH2_3P0xiHYytO%z|h zo^`^TrH_8CUk~C+urFKY&aSd!?Kz-A#w2fd7smfgy7zz_&H|6fVj%4S#%?FG?SPC& zo-U3d5|=~!uZJCS5NJ!Ex;3eDSx!zwKzLzKYN*iSW|j>KH>#iil|NLt^V9y>@8|sF zX6Tsn=C!E7`A?VGI4+v@}R zN{e3XRQN0McyaQgQ=X=)e+n^q8Lkpuow!Mgb-_PoR>irCJkNKW^X6=xaL_e4e%r0^ z>*h0AyYk+@6O@+=41eqG@a4-NA;o?Bj$RA-_2&D(z<+;!nVDVt`cG)ZCudo<7$1w^ zE1}0#F2~G0e)de+!I;E-$KSR0lMwFx^mZVxG z7o`Fz1|tI_16>1ST_cka14}C-11keFT?11q1A|YQE7egnoT7 M)78&qol`;+0OG^4vH$=8 literal 0 HcmV?d00001 diff --git a/img/icons/png/tray/tray@1.5x.png b/img/icons/png/tray/tray@1.5x.png new file mode 100644 index 0000000000000000000000000000000000000000..c24eb414069a04d7cbe22c9441cb050983a6d062 GIT binary patch literal 1181 zcmZ`$3s96*6ut`r3kby{UT(HbJj0cr6+|{go&g~Xt~Ay-O)LwAIt_0s90L^7w7|$7 zwu>QUvkS}nO)`Lji-7_KNeGKTNDI^={EyxJcmKbOJ!WvmJNMr2o^!r)?sw1qIDsE! zW#M800I-UQju1d}+E`3uxZjiA`3b_7cS7Sr0ca?-)C*0Z&Bzu+g@M|;EEP1^qG&-J z0QnvO6cz)ZgRa6q0LVoESV{tb_cZ{H8IsO}dtu)7gae6@kU-P4Ya?bXL*e0{LFnna zd2-K>`2H@U{h?lG_%A@y28#Y!ZJ1btxM}>Ur5@=vd^0GuNIVhT#C*aSRsUPvz7CVm zkx+(-4E688|EE2~sU2-NkfJaI=U-YXvYP;swPQmXhdRtiiWiV|NpD$=npL4FNk{b%l4){TLw!D}gMHw3;IkO@J5D*(W8aPy5b*zk za|HZD5P@mXImHS|t|%D3D4}7V5&cFs#OTNCmD|UIA>m9+L};Sd@SA03hi@SE zXY5R-+F$arV5YVc%FKZCzt%h`mcrwSdFrOe^R*}V@%PDcw?OqiAZ3rG<=T99aMZ7X zS7RDh!MvrKx3k^mB2LJT6=Yox=DS{u^=oczv1E$ea&q#wdb2K_6dgMp=zut=UPMv+ znzM7!$R*|eo|WFKLhZgXVdY{-Q~z?f6ZT2Tr|}2)!eWzxp5%`Tn{3toVY`|_!vX@; z;c2cRa@IhzAG>6yZA`Cw5#xwQy`A|EpQO~+jQXrK1xazHdou7G!)P^OU`WwA#i^u=~ literal 0 HcmV?d00001 diff --git a/img/icons/png/tray/tray@2x.png b/img/icons/png/tray/tray@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f97882fd32c898bbf4927daff60576cc94205fc8 GIT binary patch literal 1500 zcmaJ<3s4hB7~UiVArS#3ZBRgs7LsihwBEq7wu`v?xV%20B%UAQhiT ztyXY~RWU)z%YcAXp^hay3MvwcfR9RrP~@R^ms~En>qTdr>a^Y2{lESG{r}x>cmE^d zVIelG*(?BnO{g>|lEQiBVa1?q(B-^eDX>TsuN4DOb&_q2Wm25BH!>s;ly^F5&5?1^ z$h81u@Bzro2EahMGDiT|2LUiD13+{RfR9s(8X{H#KwlTWCMuW;AW8D-GaQ_pidE|w zN|>R1MS0#eoslemjxTFK#kX_~!$yPY-HLf)B1qyr$A{$qS3ivYHxA?E(t7j-O1#kq zPb-DrM!lt!eM?h2F>sXt&ZR40ehre>YZ%rMV;FI^-{4b+S}5V=4JftGlz~8uWW{ql@Rp8J0u-?I zHF!<4u7234H<2x4rs%tRn=;s{6rNd*#I@=t4aBNOloG})g-f2|7Y1?PdNllwPH!Y% zVgz+B&ssFU&oHVdhEO7>$FM+!1mD)7M$)koNxzQ`yrv$Q?3pwrcVM&15y@@c{w|Cl zNa`14YQ4PMu&V>h>NaF{V>{dR!Uk0Jr;+-v*EpeghI`bawm-pJTJ-8MlaU~AYmJe2 zbnG%%P>0U0MD}%I4<<}W?Rtj_nSuh zhFg+CGl}Dqnnk|fKE`p!!z0Z^Q$Vl3M#H^D%MlLK3r_O~`ga(VlX&UQrJ7!UqRBT` ztIc&hGdOrg$goK48Bbhfam>ZdT+Os?pN0g{NV?Z!idd&eH}9oT`esO4cde$%dVXk- zIBI!&oGgbI9spCUDN`-2*#hQIXzWp0*Z+TOu}Y-e6PZUfEc(akI4| zGa^{1DtEc;FKW10PD9UQl@C_V^r9`;z8+p@-&hl`(k#X%yMyYyqkL`x& zxcGbbrsue+&qGTbSp2n}ayP4<2eNybEcbIWS<}|XveIfCVK|mm5*txm(IT_UTPIe~ z4)G2!^QIq8VRqZI5}G(%0k_#9sIy2ohqo$myit0N{&luop~l!BdD9JFPMy9|T$$|# z$v0J%InAWCM`xGC)QH$lq=*{izA>E6b)q_(L~u_lP^dp zsf_pX$qg1?u4m3#8E4fhz2sS`s!m7{w`KU%Dp+G<&YSwe1r_Hn71*zNtnRzpbDXp4 z;7xW$N_vL&udmWm({cSTS7-^#gr*Cst%X$8EKCdDlolVGwp|pLx}5?bfCP{iwA4%B v8wITp2_O;V=LHEx5cDcZx#+!wz6Mk literal 0 HcmV?d00001 diff --git a/img/icons/png/tray/tray@3x.png b/img/icons/png/tray/tray@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..16683dafe940fc8587c13ce3705df114afc295b6 GIT binary patch literal 2247 zcmZ{lc{tRK7RP_HVJyj-kab4(#?FvskRdyjB@7Z8yfc=h?prfVT-4Z?3B|}(*$O3M zMv2KDUSn5;lx&qD-tN5jzx&61&htH==X}reJ^!9mS7$pRerbLH0EFzZHtt-a{t+J! zw_gD7rEmcawQ{lofW{1ggFqN}2F1ABVSu_p+0WcTAsFlK1OV4n0DwdRfPJn-S_ObO z?v*th0H6y2;25F!rJEUd!4q`W&Ib7XPnEu^%HcY20@gc*OYDDjhJ`l=0N!?c8!OMS zx$%3q2%Z-tdMtK3em#{jgd>DpF<8va27d8mEUBgGM3uPj+rLKKRcmWKReYv&|3*^B zn8$BXzYB+=-{-Ee^_A%rp6Ij%uM;K2WckB#cX;H0@OF}<4xExnLHwF)`w~wN#5IMkHV1{R@O**b+dhyd+K0Ax(&(gXM z+JgKo5*k-?)zzOO!Lp@d9NtaS1><4pwHo!0H)3;N0Qul)@_?m|faVsT~QNM~4F z*p~@D9kbS|ffYi_CA*rBjX~Xs{hV@xVg7bdJAb=ySZA7}u{zUp8SDZwC1x47Z|b%!*`Vdn z!H4Tj$|=$QC8Jc#Dd>yieWHKhVi%9Fu-?3lNw4aQJl~&{8q*9Kf}{XOG|^!HyV=jl zRpbpI#!P7ChS?E)v}{!T3$yAhrMs%AWF;T#Elp+)GHt!WFx`5~yB<8xUd^mw>=)+t(-2t2Lh?|e*^v0JCiHDrNvy9 zhun-lO^*?N-ZrLxhI8Y2%HzZ7)+)s?+V2`pN|mB@SIM5_&^c8@Emx>!9e4=TNy#$T zk?l)nT>#ZXkanlgX2dI*{u7-gH>4xr_#H%m+OyB8VgBJ)jpHK^_za}$l3`X%-*{Nf zyBy#cskZPK?jqd4L0f*Y0SWv`^*(K}bXo|*I2nT&uSkpRPTR9m=2(*HEhZShbZdO4 zg;*{)>cu^fQAa~Mc>|OY?4Njfrh5Dq{|lpz(~0m0;^`^^dawZDX<0w{1$>~XvmB0y zZHQ0c`J+zQ-S1KFGgzJBQ?bCYMI)R)oj90k+90@-oo&8+H|IeuR9LI&TIEcot_wX| zH3IIHr;)Jb0Wv(L8^~Gj(>7|)1t&u9Gat(R0CWR?bc)Za1Z?ViQV`8}$k>x34a@mU zOJX9Kg!x*@xG&&#uj4p>OU_g(RFmiaopnq^vj!=}gJui)5W#%wtEF2zCIu|96L|$R zC3#@}Y0|juhG;3nf+3)yW^^;OXH>zLe@5Oz0UB`+nnCMQQ9zJU4Oc2BACk{mdIdeI zKA>IB;n^k|h~}t2ws$rZb7i1YYeIhqG}?gE-{;+rIFE)MkIaHbzt8)Y%4o*!GaK;O z(G6#ZtO)p}O6734aa?yu56y}i5Ph6**yo=ScBC2Y*{O&1c(7t>eF8$uiJnswrus#j zOn%yG1*ext80NL=hW|vbGUw5ba^HLUv|okim#4ZigcM9?;hLaX5vR!X*V6@l9bR-! zbPZkeEH&(L`@}l2RIMxPY5`TzgX)}bhAJg}VTlh+%N*E(@e+B9O2GRwXPpXRlb%-?mf5BKFVW~dLFg&9jb$0ro8{~UG{NFWI#D-)Iw zGFb(R)!H8It>(RRA%+!-B1Re(X^vth$SU1Cai!qiQ$lE~lEv#=-i3lW zS>0pZp@>b;W}Q4-4c9Hp%D4dIjGq9>X*cnCS0-hu6J4xZlo~4v)#s2`Fs~Smo(Mg} zzpmf!evF44JW*%N#yEZ5U6ij&c7zK{czvxGbiI!pt?31B3V-kZ{u?q}ye2s5&`^OT za;OTYp7i6qskA6f%zeZ0(e>xpE9ZHueUIT5!2-SyLmUPea4Bsy8Pwrk6Y7*IyZOzs zQ9O)&2rugD544+@I=KA|Y2lT{l!@m_pxa~x3&id_6QshRu9$y&WqdMN5OH61L|}kV z-q{;-`OFmo2?HUKxqUWL^}~pgZ5&OhSh-3G63Mg1h+PqlDcfP3Wn^H>jP#}RNsr7} z+v6a)jaXU;bInY^^v_TyN{R_!BHvaTbk8QfOp?tvV>Ed(#D}nPpuexRxai_W-I`ln zjr$DkxNWkw7ho;0%qZ8}3c5(9GJq>d>Yi zZC|G@SbTT?meqlMYTfaWsinRE<|S(}9+b~l$;hcpMU12+70Awf8}PR0&5$V(Ycdxy zOG^dUj$%6`f?K9Zqs9wSEa?llF1mRo<*%0zc8dK$OR&$3t>b__UV{J?Tl@lAj~duU zer?kbIcI~f9RjuKP~$9?dF3^9UO7y!#EO)9*bfe}j`k2u$aIm-1JR5fhZ~d0dW}by zNtc8whopJ!Js}Fc@@1>_Zy?gnA`_PfGwqCK9 z0%Jqa!Oughp!6p6&Vj}Rz literal 0 HcmV?d00001 diff --git a/img/icons/png/tray/tray@4x.png b/img/icons/png/tray/tray@4x.png new file mode 100644 index 0000000000000000000000000000000000000000..5bcfd37e92d9f795e871d60b93273ff430b4b3bf GIT binary patch literal 2891 zcmV-R3$*l!P)Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L002k;002k;M#*bF000U= zNklvHZ0YiN zxY6P9Z4TQHD1R*~d}YKsMB1_joz!XB^%cmh}jG(qYuV$^pH zY3hrBTY(dY+KSnV=UZKtZ?$=SuSdUkXyS>4$TQ&!6Af;vwm7rIAj=r;3h*BAYhWEI zc8yV$4v;?`xD%KMM1p1dTzIw3<^C-;8$NQ0IbftvISNn;N}_^=lMSw~vN-uTnaEZ@ zumQLWcyqKOBwf-c9|bN0egKpQ|92H^+UN0LgU!=BTz2;j?&qmO`Ck>|1Xq-sTv={W zo+}dBZ3gZJ9tZl872&X@0=1qGd=L0KkP~#Uxm&Ti$!1lvLsPec5Qq~k`ZCV5&`lhz)ygy05g8Etxxgvc83QW9Nz8pa8&aBJRKpj zB%E1da8tF(yh$dx=Aa@D@G$UQpbbXu63GZq0{jNJBwoJTfepJH?%(S0k2aTHH}k{? z`Gp=I3M^PqYH~xh$*l1Pk%RM(2dqU8(0fu6z$c#vECa3sgzdo_?Jmo=Iy}GArNdUp z3^e!A3Q?9NxMZryHI*i{`7&M^9`Ji$DI;`;gjap?5%kEq6fob9c|6$Quy&h6Yj64k zoTnh$(1Yh_rpUzpYG0=139hcNxT1VuA>{zSK+jnHi9`^?jScksD}eifaXl_v`$ivY zwmS$QoyAvtv2%KnR4XRlPbX&!7W@6QCU2mhA_W|uFZoejgbO}lu)M+HxmK6G z{iz8d68l=^bGj0U1^*ZjAW-{@fOAshJB)atB{;v#;Kpi;(~2aPOkCcQa7MAgj6#Ep zK63fp7Ms8Aap?(fhB?>gwj$UHhPHr8^wbd%P9czW|G|8uNhfNxxYbK;5|BgjV|+9LfQbH>`EF~D3PU!qq@HDm3~7@!8I zlIZij;<5H-3{VW5DuI&#YplH)16V+vM4#m!tC%LyfsJDo6%r^6+iE6OQyGYh0u)Lh zJ4`3r`{Bi14xM%gt9Bo)J&Koh>8)|dI^>w43IOc272kTNpBHz!+*ECG_Jo9Ct)#He zRy_Bi%kl=BH}~o-amdIv30YJDbi43utINOIJTCOZS~Ch|(wmuH7yiCShu2=-?b4NE zcr6*2Ko9!(J5&*bfOcE4qS0Z)E|<&8O_o$xR3;8<0s4e^V}}l}J+s4QkAEzdDe^#% zi4G@)DnL*O1T-H|{B*O;A6s3nt2DWIiphkmgRB(LxL>iV$>y;Zhh{&#b_9YgJtnXZ zn0UC7p7K3S!6_;9t?%sfSh}&F^*dZ{tTvfnYSQZ}p4{fJqS0Yfr-yq4!fOF^nCSDd z5f4Hl5MKcbT=3;{6*o@sS?Ww%TJk*)P0J}`m*q7#xv+z&)0d~Tw_X+@Gh?{s-! ztIcceqs#mVLXgqHEg9IrCW%f(YftvBd`kx+pO}-y&u2uaE075MG2-Y#8&EHS26WQV zs4yu@@QoUar{+ev{RE4tIXcXB6zT8*&?wQfz&}&5pd+%9yXqpWo0G-W6(&Vi_(CW$ z(!yQ?V(~M<7Z?&V8x2eWpB^u{cV?7FXGK|1YLG3{cREgdd_*v3yd)~qvll?j=R9yI zx)Gg(m=>}PIIqlL)$Azu&5Sa;NMewh5T1f;2@6UMR?mv^?b--Y8CuKQ2)rE>pc9>a z8H)YFh+s*D$=bPD++7#p_&og>m4tOqfq_nz{Ozex9-SR!eyKrriW{l~P{4Zp7HNYvnB=$zYzBk5g+(cp6$w$>RWKtP##|Ay|d_B;f1 zqw^i>hj1J&z>orKfM20^O-CzipTpWj1F6sL9nG4U}$6L2$vI~_sH zS)7~HO-V02eG&SAN6;y!e?kwGV~u{_mqh~m5fpvyqU6YrN`Qa}px@5A3_Uh%W^4vX z%?`ix;3Iw|`&^xG)o z{Bqs?XCHco*@Aw3z8*cgcR_e>j0f?5>HBg&*zTp<0000bbVXQnWMOn=I%9HWVRU5x zGB7eQEif}JGBi{$IXW^hIxsdZFf}?bF!E`sCjbBdC3HntbYx+4WjbwdWNBu305UK# pFfA}MEiyDzFgZFhFgh?cEig4YFffBO5t{%2002ovPDHLkV1ka>M%w@Y literal 0 HcmV?d00001 diff --git a/qortal-ui-plugins/plugins/core/minting/minting-info.src.js b/qortal-ui-plugins/plugins/core/minting/minting-info.src.js index c75517d9..c6ede253 100644 --- a/qortal-ui-plugins/plugins/core/minting/minting-info.src.js +++ b/qortal-ui-plugins/plugins/core/minting/minting-info.src.js @@ -30,10 +30,11 @@ class MintingInfo extends LitElement { static get styles() { return css` - * { - --mdc-theme-surface: var(--white); - --mdc-dialog-content-ink-color: var(--black); - } + * { + --mdc-theme-surface: var(--white); + --mdc-dialog-content-ink-color: var(--black); + } + @keyframes moveInBottom { 0% { opacity: 0; @@ -349,40 +350,40 @@ class MintingInfo extends LitElement { const getAdminInfo = () => { parentEpml.request("apiCall", { url: `/admin/info` }).then((res) => { - setTimeout(() => { this.adminInfo = res; }, 1); - }); - setTimeout(getAdminInfo, 30000); + setTimeout(() => { this.adminInfo = res; }, 1) + }) + setTimeout(getAdminInfo, 30000) }; const getNodeInfo = () => { parentEpml.request("apiCall", { url: `/admin/status` }).then((res) => { - this.nodeInfo = res; + this.nodeInfo = res // Now look up the sample block getSampleBlock() }); - setTimeout(getNodeInfo, 30000); + setTimeout(getNodeInfo, 30000) }; const getSampleBlock = () => { - let callBlock = parseFloat(this.nodeInfo.height) - 1440; + let callBlock = parseFloat(this.nodeInfo.height) - 1440 parentEpml.request("apiCall", { url: `/blocks/byheight/${callBlock}` }).then((res) => { - setTimeout(() => { this.sampleBlock = res; }, 1); - }); - }; + setTimeout(() => { this.sampleBlock = res }, 1) + }) + } const getAddressInfo = () => { parentEpml.request('apiCall', { url: `/addresses/${window.parent.reduxStore.getState().app.selectedAddress.address}` }).then((res) => { - setTimeout(() => { this.addressInfo = res; }, 1); + setTimeout(() => { this.addressInfo = res }, 1) }); - setTimeout(getAddressInfo, 30000); - }; + setTimeout(getAddressInfo, 30000) + } const getAddressLevel = () => { parentEpml.request('apiCall', { url: `/addresses/online/levels` }).then((res) => { - setTimeout(() => { this.addressLevel = res; }, 1); + setTimeout(() => { this.addressLevel = res }, 1) }); - setTimeout(getAddressLevel, 30000); - }; + setTimeout(getAddressLevel, 30000) + } window.addEventListener('storage', () => { const checkLanguage = localStorage.getItem('qortalLanguage') @@ -407,35 +408,34 @@ class MintingInfo extends LitElement { if (!selectedAddress || Object.entries(selectedAddress).length === 0) return this.selectedAddress = selectedAddress }) - }); + }) parentEpml.ready().then(() => { parentEpml.subscribe("config", async c => { if (!configLoaded) { - setTimeout(getAdminInfo, 1); - setTimeout(getNodeInfo, 1); - setTimeout(getAddressInfo, 1); - setTimeout(getAddressLevel, 1); - configLoaded = true; + setTimeout(getAdminInfo, 1) + setTimeout(getNodeInfo, 1) + setTimeout(getAddressInfo, 1) + setTimeout(getAddressLevel, 1) + configLoaded = true } - this.config = JSON.parse(c); + this.config = JSON.parse(c) }) parentEpml.subscribe('copy_menu_switch', async value => { - if (value === 'false' && window.getSelection().toString().length !== 0) this.clearSelection(); + if (value === 'false' && window.getSelection().toString().length !== 0) this.clearSelection() }) - }); - - parentEpml.imReady(); + }) + parentEpml.imReady() } changeTheme() { const checkTheme = localStorage.getItem('qortalTheme') if (checkTheme === 'dark') { - this.theme = 'dark'; + this.theme = 'dark' } else { - this.theme = 'light'; + this.theme = 'light' } - document.querySelector('html').setAttribute('theme', this.theme); + document.querySelector('html').setAttribute('theme', this.theme) } changeLanguage() { @@ -459,23 +459,23 @@ class MintingInfo extends LitElement { _averageBlockTime() { let avgBlockString = (this.adminInfo.currentTimestamp - this.sampleBlock.timestamp).toString(); - let averageTimeString = ((avgBlockString / 1000) / 1440).toFixed(2); - let averageBlockTimeString = (averageTimeString).toString(); - return "" + averageBlockTimeString; + let averageTimeString = ((avgBlockString / 1000) / 1440).toFixed(2) + let averageBlockTimeString = (averageTimeString).toString() + return "" + averageBlockTimeString } _timeCalc() { - let timeString = (this.adminInfo.currentTimestamp - this.sampleBlock.timestamp).toString(); - let averageString = ((timeString / 1000) / 1440).toFixed(2); - let averageBlockDay = (86400 / averageString).toFixed(2); - let averageBlockDayString = (averageBlockDay).toString(); - return "" + averageBlockDayString; + let timeString = (this.adminInfo.currentTimestamp - this.sampleBlock.timestamp).toString() + let averageString = ((timeString / 1000) / 1440).toFixed(2) + let averageBlockDay = (86400 / averageString).toFixed(2) + let averageBlockDayString = (averageBlockDay).toString() + return "" + averageBlockDayString } _dayReward() { - let rewardString = (this._timeCalc() * this._blockReward()).toFixed(2); - let rewardDayString = (rewardString).toString(); - return "" + rewardDayString; + let rewardString = (this._timeCalc() * this._blockReward()).toFixed(2) + let rewardDayString = (rewardString).toString() + return "" + rewardDayString } _mintingStatus() { @@ -498,21 +498,21 @@ class MintingInfo extends LitElement { renderMintingHelp() { if (this._mintingStatus() === "Not Minting") { - return html`${translate("mintingpage.mchange9")}
==>
${translate("mintingpage.mchange7")}
this.shadowRoot.querySelector("#becomeMinterDialog").show()}>help_outline ${translate("mintingpage.mchange31")}`; + return html`${translate("mintingpage.mchange9")}
==>
${translate("mintingpage.mchange7")}
this.shadowRoot.querySelector("#becomeMinterDialog").show()}>help_outline ${translate("mintingpage.mchange31")}` } else { return html`${translate("mintingpage.mchange6")}` } } _levelUpDays() { - let countDays = ((this._blocksNeed() - (this.addressInfo.blocksMinted + this.addressInfo.blocksMintedAdjustment)) / this._timeCalc()).toFixed(2); - let countString = (countDays).toString(); - return "" + countString; + let countDays = ((this._blocksNeed() - (this.addressInfo.blocksMinted + this.addressInfo.blocksMintedAdjustment)) / this._timeCalc()).toFixed(2) + let countString = (countDays).toString() + return "" + countString } _levelUpBlocks() { - let countBlocksString = (this._blocksNeed() - (this.addressInfo.blocksMinted + this.addressInfo.blocksMintedAdjustment)).toString(); - return "" + countBlocksString; + let countBlocksString = (this._blocksNeed() - (this.addressInfo.blocksMinted + this.addressInfo.blocksMintedAdjustment)).toString() + return "" + countBlocksString } _blocksNeed() { @@ -593,25 +593,25 @@ class MintingInfo extends LitElement { if (this.addressInfo.level === 0) { return "0" } else if (this.addressInfo.level === 1) { - return "5" + return "6" } else if (this.addressInfo.level === 2) { - return "5" + return "6" } else if (this.addressInfo.level === 3) { - return "10" + return "13" } else if (this.addressInfo.level === 4) { - return "10" + return "13" } else if (this.addressInfo.level === 5) { - return "15" + return "19" } else if (this.addressInfo.level === 6) { - return "15" + return "19" } else if (this.addressInfo.level === 7) { - return "20" + return "26" } else if (this.addressInfo.level === 8) { - return "20" + return "26" } else if (this.addressInfo.level === 9) { - return "25" + return "32" } else if (this.addressInfo.level === 10) { - return "25" + return "32" } } @@ -647,29 +647,38 @@ class MintingInfo extends LitElement { _countLevels() { if (this.addressInfo.level === 0) { - let countTier0 = (this.addressLevel[0].count).toString(); - return "" + countTier0; + let countTier0 = (this.addressLevel[0].count).toString() + return "" + countTier0 } else if (this.addressInfo.level === 1) { - let countTier10 = (this.addressLevel[1].count + this.addressLevel[2].count).toString(); - return "" + countTier10; + let countTier10 = (this.addressLevel[1].count + this.addressLevel[2].count).toString() + return "" + countTier10 } else if (this.addressInfo.level === 2) { - let countTier11 = (this.addressLevel[1].count + this.addressLevel[2].count).toString(); - return "" + countTier11; + let countTier11 = (this.addressLevel[1].count + this.addressLevel[2].count).toString() + return "" + countTier11 } else if (this.addressInfo.level === 3) { - let countTier20 = (this.addressLevel[3].count + this.addressLevel[4].count).toString(); - return "" + countTier20; + let countTier20 = (this.addressLevel[3].count + this.addressLevel[4].count).toString() + return "" + countTier20 } else if (this.addressInfo.level === 4) { - let countTier21 = (this.addressLevel[3].count + this.addressLevel[4].count).toString(); - return "" + countTier21; + let countTier21 = (this.addressLevel[3].count + this.addressLevel[4].count).toString() + return "" + countTier21 } else if (this.addressInfo.level === 5) { - let countTier30 = (this.addressLevel[5].count + this.addressLevel[6].count).toString(); - return "" + countTier30; + let countTier30 = (this.addressLevel[5].count + this.addressLevel[6].count).toString() + return "" + countTier30 } else if (this.addressInfo.level === 6) { - let countTier31 = (this.addressLevel[5].count + this.addressLevel[6].count).toString(); - return "" + countTier31; + let countTier31 = (this.addressLevel[5].count + this.addressLevel[6].count).toString() + return "" + countTier31 + } else if (this.addressInfo.level === 7) { + let countTier40 = (this.addressLevel[7].count + this.addressLevel[8].count).toString() + return "" + countTier40 + } else if (this.addressInfo.level === 8) { + let countTier41 = (this.addressLevel[7].count + this.addressLevel[8].count).toString() + return "" + countTier41 + } else if (this.addressInfo.level === 9) { + let countTier50 = (this.addressLevel[9].count + this.addressLevel[10].count).toString() + return "" + countTier50 } else if (this.addressInfo.level === 10) { - let countTier101 = (this.addressLevel[7].count).toString(); - return "" + countTier101; + let countTier51 = (this.addressLevel[9].count + this.addressLevel[10].count).toString() + return "" + countTier51 } } @@ -677,33 +686,45 @@ class MintingInfo extends LitElement { if (this.addressInfo.level === 0) { return "0" } else if (this.addressInfo.level === 1) { - let countReward10 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[1].count + this.addressLevel[2].count)).toFixed(8); - let countReward11 = (countReward10).toString(); - return "" + countReward11; + let countReward10 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[1].count + this.addressLevel[2].count)).toFixed(8) + let countReward11 = (countReward10).toString() + return "" + countReward11 } else if (this.addressInfo.level === 2) { - let countReward20 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[1].count + this.addressLevel[2].count)).toFixed(8); - let countReward21 = (countReward20).toString(); - return "" + countReward21; + let countReward20 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[1].count + this.addressLevel[2].count)).toFixed(8) + let countReward21 = (countReward20).toString() + return "" + countReward21 } else if (this.addressInfo.level === 3) { - let countReward30 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[3].count + this.addressLevel[4].count)).toFixed(8); - let countReward31 = (countReward30).toString(); + let countReward30 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[3].count + this.addressLevel[4].count)).toFixed(8) + let countReward31 = (countReward30).toString() return "" + countReward31; } else if (this.addressInfo.level === 4) { - let countReward40 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[3].count + this.addressLevel[4].count)).toFixed(8); + let countReward40 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[3].count + this.addressLevel[4].count)).toFixed(8) let countReward41 = (countReward40).toString(); return "" + countReward41; } else if (this.addressInfo.level === 5) { - let countReward50 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count)).toFixed(8); + let countReward50 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count)).toFixed(8) let countReward51 = (countReward50).toString(); return "" + countReward51; } else if (this.addressInfo.level === 6) { - let countReward60 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count)).toFixed(8); - let countReward61 = (countReward60).toString(); - return "" + countReward61; + let countReward60 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count)).toFixed(8) + let countReward61 = (countReward60).toString() + return "" + countReward61 + } else if (this.addressInfo.level === 7) { + let countReward70 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[7].count + this.addressLevel[8].count)).toFixed(8) + let countReward71 = (countReward70).toString() + return "" + countReward71 + } else if (this.addressInfo.level === 8) { + let countReward80 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[7].count + this.addressLevel[8].count)).toFixed(8) + let countReward81 = (countReward80).toString() + return "" + countReward81 + } else if (this.addressInfo.level === 9) { + let countReward90 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[9].count + this.addressLevel[10].count)).toFixed(8) + let countReward91 = (countReward90).toString() + return "" + countReward91 } else if (this.addressInfo.level === 10) { - let countReward100 = ((this._blockReward() / 100 * this._tierPercent()) / this.addressLevel[7].count).toFixed(8); - let countReward101 = (countReward100).toString(); - return "" + countReward101; + let countReward100 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[9].count + this.addressLevel[10].count)).toFixed(8) + let countReward101 = (countReward100).toString() + return "" + countReward101 } } @@ -711,33 +732,45 @@ class MintingInfo extends LitElement { if (this.addressInfo.level === 0) { return "0" } else if (this.addressInfo.level === 1) { - let countRewardDay10 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[1].count + this.addressLevel[2].count) * this._timeCalc()).toFixed(8); - let countRewardDay11 = (countRewardDay10).toString(); - return "" + countRewardDay11; + let countRewardDay10 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[1].count + this.addressLevel[2].count) * this._timeCalc()).toFixed(8) + let countRewardDay11 = (countRewardDay10).toString() + return "" + countRewardDay11 } else if (this.addressInfo.level === 2) { - let countRewardDay20 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[1].count + this.addressLevel[2].count) * this._timeCalc()).toFixed(8); - let countRewardDay21 = (countRewardDay20).toString(); - return "" + countRewardDay21; + let countRewardDay20 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[1].count + this.addressLevel[2].count) * this._timeCalc()).toFixed(8) + let countRewardDay21 = (countRewardDay20).toString() + return "" + countRewardDay21 } else if (this.addressInfo.level === 3) { - let countRewardDay30 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[3].count + this.addressLevel[4].count) * this._timeCalc()).toFixed(8); - let countRewardDay31 = (countRewardDay30).toString(); - return "" + countRewardDay31; + let countRewardDay30 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[3].count + this.addressLevel[4].count) * this._timeCalc()).toFixed(8) + let countRewardDay31 = (countRewardDay30).toString() + return "" + countRewardDay31 } else if (this.addressInfo.level === 4) { - let countRewardDay40 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[3].count + this.addressLevel[4].count) * this._timeCalc()).toFixed(8); - let countRewardDay41 = (countRewardDay40).toString(); - return "" + countRewardDay41; + let countRewardDay40 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[3].count + this.addressLevel[4].count) * this._timeCalc()).toFixed(8) + let countRewardDay41 = (countRewardDay40).toString() + return "" + countRewardDay41 } else if (this.addressInfo.level === 5) { - let countRewardDay50 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count) * this._timeCalc()).toFixed(8); - let countRewardDay51 = (countRewardDay50).toString(); - return "" + countRewardDay51; + let countRewardDay50 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count) * this._timeCalc()).toFixed(8) + let countRewardDay51 = (countRewardDay50).toString() + return "" + countRewardDay51 } else if (this.addressInfo.level === 6) { - let countRewardDay60 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count) * this._timeCalc()).toFixed(8); - let countRewardDay61 = (countRewardDay60).toString(); - return "" + countRewardDay61; + let countRewardDay60 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count) * this._timeCalc()).toFixed(8) + let countRewardDay61 = (countRewardDay60).toString() + return "" + countRewardDay61 + } else if (this.addressInfo.level === 7) { + let countRewardDay70 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[7].count + this.addressLevel[8].count) * this._timeCalc()).toFixed(8) + let countRewardDay71 = (countRewardDay70).toString() + return "" + countRewardDay71 + } else if (this.addressInfo.level === 8) { + let countRewardDay80 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[7].count + this.addressLevel[8].count) * this._timeCalc()).toFixed(8) + let countRewardDay81 = (countRewardDay80).toString() + return "" + countRewardDay81 + } else if (this.addressInfo.level === 9) { + let countRewardDay90 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[9].count + this.addressLevel[10].count) * this._timeCalc()).toFixed(8) + let countRewardDay91 = (countRewardDay90).toString() + return "" + countRewardDay91 } else if (this.addressInfo.level === 10) { - let countRewardDay100 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[7].count) * this._timeCalc()).toFixed(8); - let countRewardDay101 = (countRewardDay100).toString(); - return "" + countRewardDay101; + let countRewardDay100 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[9].count + this.addressLevel[10].count) * this._timeCalc()).toFixed(8) + let countRewardDay101 = (countRewardDay100).toString() + return "" + countRewardDay101 } } @@ -747,8 +780,8 @@ class MintingInfo extends LitElement { } isEmptyArray(arr) { - if (!arr) return true; - return arr.length === 0; + if (!arr) return true + return arr.length === 0 } } From f5b85aaf44aff009307776d3c7d1006b604896c6 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Mon, 3 Oct 2022 15:05:17 +0200 Subject: [PATCH 10/16] Fix reward for tiers --- .../plugins/core/minting/minting-info.src.js | 191 +++++++++++++----- 1 file changed, 145 insertions(+), 46 deletions(-) diff --git a/qortal-ui-plugins/plugins/core/minting/minting-info.src.js b/qortal-ui-plugins/plugins/core/minting/minting-info.src.js index c6ede253..05dd1d88 100644 --- a/qortal-ui-plugins/plugins/core/minting/minting-info.src.js +++ b/qortal-ui-plugins/plugins/core/minting/minting-info.src.js @@ -348,6 +348,8 @@ class MintingInfo extends LitElement { this.changeTheme() this.changeLanguage() + this.levelsCount() + const getAdminInfo = () => { parentEpml.request("apiCall", { url: `/admin/info` }).then((res) => { setTimeout(() => { this.adminInfo = res; }, 1) @@ -360,7 +362,7 @@ class MintingInfo extends LitElement { this.nodeInfo = res // Now look up the sample block getSampleBlock() - }); + }) setTimeout(getNodeInfo, 30000) }; @@ -374,17 +376,10 @@ class MintingInfo extends LitElement { const getAddressInfo = () => { parentEpml.request('apiCall', { url: `/addresses/${window.parent.reduxStore.getState().app.selectedAddress.address}` }).then((res) => { setTimeout(() => { this.addressInfo = res }, 1) - }); + }) setTimeout(getAddressInfo, 30000) } - const getAddressLevel = () => { - parentEpml.request('apiCall', { url: `/addresses/online/levels` }).then((res) => { - setTimeout(() => { this.addressLevel = res }, 1) - }); - setTimeout(getAddressLevel, 30000) - } - window.addEventListener('storage', () => { const checkLanguage = localStorage.getItem('qortalLanguage') const checkTheme = localStorage.getItem('qortalTheme') @@ -416,7 +411,7 @@ class MintingInfo extends LitElement { setTimeout(getAdminInfo, 1) setTimeout(getNodeInfo, 1) setTimeout(getAddressInfo, 1) - setTimeout(getAddressLevel, 1) + setInterval(this.getAddressLevel, 30000) configLoaded = true } this.config = JSON.parse(c) @@ -428,6 +423,26 @@ class MintingInfo extends LitElement { parentEpml.imReady() } + async levelsCount() { + await this.getAddressLevel() + this.countForTier4() + } + + getAddressLevel = async () => { + const callLevels = await parentEpml.request('apiCall', { + url: `/addresses/online/levels` + }) + this.addressLevel = callLevels + } + + countForTier4() { + const minterOnline = (this.addressLevel[7].count + this.addressLevel[8].count) + if (minterOnline < 30) { + return "false" + } else { + return "true" + } + } changeTheme() { const checkTheme = localStorage.getItem('qortalTheme') if (checkTheme === 'dark') { @@ -601,13 +616,29 @@ class MintingInfo extends LitElement { } else if (this.addressInfo.level === 4) { return "13" } else if (this.addressInfo.level === 5) { - return "19" + if (this.countForTier4() === "false") { + return "45" + } else { + return "19" + } } else if (this.addressInfo.level === 6) { - return "19" + if (this.countForTier4() === "false") { + return "45" + } else { + return "19" + } } else if (this.addressInfo.level === 7) { - return "26" + if (this.countForTier4() === "false") { + return "45" + } else { + return "26" + } } else if (this.addressInfo.level === 8) { - return "26" + if (this.countForTier4() === "false") { + return "45" + } else { + return "26" + } } else if (this.addressInfo.level === 9) { return "32" } else if (this.addressInfo.level === 10) { @@ -662,17 +693,37 @@ class MintingInfo extends LitElement { let countTier21 = (this.addressLevel[3].count + this.addressLevel[4].count).toString() return "" + countTier21 } else if (this.addressInfo.level === 5) { - let countTier30 = (this.addressLevel[5].count + this.addressLevel[6].count).toString() - return "" + countTier30 + if (this.countForTier4() === "false") { + let countTier30 = (this.addressLevel[5].count + this.addressLevel[6].count + this.addressLevel[7].count + this.addressLevel[8].count).toString() + return "" + countTier30 + } else { + let countTier30 = (this.addressLevel[5].count + this.addressLevel[6].count).toString() + return "" + countTier30 + } } else if (this.addressInfo.level === 6) { - let countTier31 = (this.addressLevel[5].count + this.addressLevel[6].count).toString() - return "" + countTier31 + if (this.countForTier4() === "false") { + let countTier31 = (this.addressLevel[5].count + this.addressLevel[6].count + this.addressLevel[7].count + this.addressLevel[8].count).toString() + return "" + countTier31 + } else { + let countTier31 = (this.addressLevel[5].count + this.addressLevel[6].count).toString() + return "" + countTier31 + } } else if (this.addressInfo.level === 7) { - let countTier40 = (this.addressLevel[7].count + this.addressLevel[8].count).toString() - return "" + countTier40 + if (this.countForTier4() === "false") { + let countTier40 = (this.addressLevel[5].count + this.addressLevel[6].count + this.addressLevel[7].count + this.addressLevel[8].count).toString() + return "" + countTier40 + } else { + let countTier40 = (this.addressLevel[7].count + this.addressLevel[8].count).toString() + return "" + countTier40 + } } else if (this.addressInfo.level === 8) { - let countTier41 = (this.addressLevel[7].count + this.addressLevel[8].count).toString() - return "" + countTier41 + if (this.countForTier4() === "false") { + let countTier40 = (this.addressLevel[5].count + this.addressLevel[6].count + this.addressLevel[7].count + this.addressLevel[8].count).toString() + return "" + countTier40 + } else { + let countTier41 = (this.addressLevel[7].count + this.addressLevel[8].count).toString() + return "" + countTier41 + } } else if (this.addressInfo.level === 9) { let countTier50 = (this.addressLevel[9].count + this.addressLevel[10].count).toString() return "" + countTier50 @@ -702,21 +753,45 @@ class MintingInfo extends LitElement { let countReward41 = (countReward40).toString(); return "" + countReward41; } else if (this.addressInfo.level === 5) { - let countReward50 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count)).toFixed(8) - let countReward51 = (countReward50).toString(); - return "" + countReward51; + if (this.countForTier4() === "false") { + let countReward50 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count + this.addressLevel[7].count + this.addressLevel[8].count)).toFixed(8) + let countReward51 = (countReward50).toString(); + return "" + countReward51; + } else { + let countReward50 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count)).toFixed(8) + let countReward51 = (countReward50).toString(); + return "" + countReward51; + } } else if (this.addressInfo.level === 6) { - let countReward60 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count)).toFixed(8) - let countReward61 = (countReward60).toString() - return "" + countReward61 + if (this.countForTier4() === "false") { + let countReward60 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count + this.addressLevel[7].count + this.addressLevel[8].count)).toFixed(8) + let countReward61 = (countReward60).toString() + return "" + countReward61 + } else { + let countReward60 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count)).toFixed(8) + let countReward61 = (countReward60).toString() + return "" + countReward61 + } } else if (this.addressInfo.level === 7) { - let countReward70 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[7].count + this.addressLevel[8].count)).toFixed(8) - let countReward71 = (countReward70).toString() - return "" + countReward71 + if (this.countForTier4() === "false") { + let countReward70 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count + this.addressLevel[7].count + this.addressLevel[8].count)).toFixed(8) + let countReward71 = (countReward70).toString() + return "" + countReward71 + } else { + let countReward70 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[7].count + this.addressLevel[8].count)).toFixed(8) + let countReward71 = (countReward70).toString() + return "" + countReward71 + } } else if (this.addressInfo.level === 8) { - let countReward80 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[7].count + this.addressLevel[8].count)).toFixed(8) - let countReward81 = (countReward80).toString() - return "" + countReward81 + if (this.countForTier4() === "false") { + let countReward80 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count + this.addressLevel[7].count + this.addressLevel[8].count)).toFixed(8) + let countReward81 = (countReward80).toString() + return "" + countReward81 + } else { + let countReward80 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[7].count + this.addressLevel[8].count)).toFixed(8) + let countReward81 = (countReward80).toString() + return "" + countReward81 + } } else if (this.addressInfo.level === 9) { let countReward90 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[9].count + this.addressLevel[10].count)).toFixed(8) let countReward91 = (countReward90).toString() @@ -748,21 +823,45 @@ class MintingInfo extends LitElement { let countRewardDay41 = (countRewardDay40).toString() return "" + countRewardDay41 } else if (this.addressInfo.level === 5) { - let countRewardDay50 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count) * this._timeCalc()).toFixed(8) - let countRewardDay51 = (countRewardDay50).toString() - return "" + countRewardDay51 + if (this.countForTier4() === "false") { + let countRewardDay50 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count + this.addressLevel[7].count + this.addressLevel[8].count) * this._timeCalc()).toFixed(8) + let countRewardDay51 = (countRewardDay50).toString() + return "" + countRewardDay51 + } else { + let countRewardDay50 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count) * this._timeCalc()).toFixed(8) + let countRewardDay51 = (countRewardDay50).toString() + return "" + countRewardDay51 + } } else if (this.addressInfo.level === 6) { - let countRewardDay60 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count) * this._timeCalc()).toFixed(8) - let countRewardDay61 = (countRewardDay60).toString() - return "" + countRewardDay61 + if (this.countForTier4() === "false") { + let countRewardDay60 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count + this.addressLevel[7].count + this.addressLevel[8].count) * this._timeCalc()).toFixed(8) + let countRewardDay61 = (countRewardDay60).toString() + return "" + countRewardDay61 + } else { + let countRewardDay60 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count) * this._timeCalc()).toFixed(8) + let countRewardDay61 = (countRewardDay60).toString() + return "" + countRewardDay61 + } } else if (this.addressInfo.level === 7) { - let countRewardDay70 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[7].count + this.addressLevel[8].count) * this._timeCalc()).toFixed(8) - let countRewardDay71 = (countRewardDay70).toString() - return "" + countRewardDay71 + if (this.countForTier4() === "false") { + let countRewardDay70 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count + this.addressLevel[7].count + this.addressLevel[8].count) * this._timeCalc()).toFixed(8) + let countRewardDay71 = (countRewardDay70).toString() + return "" + countRewardDay71 + } else { + let countRewardDay70 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[7].count + this.addressLevel[8].count) * this._timeCalc()).toFixed(8) + let countRewardDay71 = (countRewardDay70).toString() + return "" + countRewardDay71 + } } else if (this.addressInfo.level === 8) { - let countRewardDay80 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[7].count + this.addressLevel[8].count) * this._timeCalc()).toFixed(8) - let countRewardDay81 = (countRewardDay80).toString() - return "" + countRewardDay81 + if (this.countForTier4() === "false") { + let countRewardDay80 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[5].count + this.addressLevel[6].count + this.addressLevel[7].count + this.addressLevel[8].count) * this._timeCalc()).toFixed(8) + let countRewardDay81 = (countRewardDay80).toString() + return "" + countRewardDay81 + } else { + let countRewardDay80 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[7].count + this.addressLevel[8].count) * this._timeCalc()).toFixed(8) + let countRewardDay81 = (countRewardDay80).toString() + return "" + countRewardDay81 + } } else if (this.addressInfo.level === 9) { let countRewardDay90 = ((this._blockReward() / 100 * this._tierPercent()) / (this.addressLevel[9].count + this.addressLevel[10].count) * this._timeCalc()).toFixed(8) let countRewardDay91 = (countRewardDay90).toString() From 2862bba7058268386e00d72371bc26d1ed6c2585 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Mon, 3 Oct 2022 16:04:48 +0200 Subject: [PATCH 11/16] Update deps --- package.json | 4 ++-- qortal-ui-core/package.json | 16 ++++++++-------- qortal-ui-crypto/package.json | 2 +- qortal-ui-plugins/package.json | 12 ++++++------ 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 5d6a6ddd..beebc156 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "electron-log": "4.4.8" }, "devDependencies": { - "electron": "20.1.4", + "electron": "21.0.1", "electron-builder": "23.3.3", "electron-notarize": "1.2.1", "electron-packager": "16.0.0", @@ -45,4 +45,4 @@ "engines": { "node": ">=14.17.0" } -} +} \ No newline at end of file diff --git a/qortal-ui-core/package.json b/qortal-ui-core/package.json index 6f055873..84851fbc 100644 --- a/qortal-ui-core/package.json +++ b/qortal-ui-core/package.json @@ -1,6 +1,6 @@ { "name": "qortal-ui-core", - "version": "2.2.2", + "version": "2.2.3", "description": "QORTAL-UI Core", "keywords": [ "QORT", @@ -19,10 +19,10 @@ "dependencies": { "@hapi/hapi": "20.2.2", "@hapi/inert": "7.0.0", - "sass": "1.54.9" + "sass": "1.55.0" }, "devDependencies": { - "@babel/core": "7.19.1", + "@babel/core": "7.19.3", "@material/mwc-button": "0.27.0", "@material/mwc-checkbox": "0.27.0", "@material/mwc-dialog": "0.27.0", @@ -58,21 +58,21 @@ "@rollup/plugin-commonjs": "22.0.2", "@rollup/plugin-node-resolve": "14.1.0", "@rollup/plugin-replace": "4.0.0", - "@vaadin/grid": "23.2.1", - "@vaadin/icons": "23.2.1", - "@vaadin/password-field": "23.2.1", + "@vaadin/grid": "23.2.3", + "@vaadin/icons": "23.2.3", + "@vaadin/password-field": "23.2.3", "asmcrypto.js": "2.3.2", "bcryptjs": "2.4.3", "epml": "0.3.3", "file-saver": "2.0.5", "lit": "2.3.1", "lit-translate": "2.0.1", - "postcss": "8.4.16", + "postcss": "8.4.17", "pwa-helpers": "0.9.1", "random-sentence-generator": "0.0.8", "redux": "4.2.0", "redux-thunk": "2.4.1", - "rollup": "2.79.0", + "rollup": "2.79.1", "rollup-plugin-node-globals": "1.4.0", "rollup-plugin-postcss": "4.0.2", "rollup-plugin-progress": "1.1.2", diff --git a/qortal-ui-crypto/package.json b/qortal-ui-crypto/package.json index 245f9145..683df9d6 100644 --- a/qortal-ui-crypto/package.json +++ b/qortal-ui-crypto/package.json @@ -1,6 +1,6 @@ { "name": "qortal-ui-crypto", - "version": "2.2.2", + "version": "2.2.3", "description": "QORTAL-UI Crypto", "keywords": [ "QORT", diff --git a/qortal-ui-plugins/package.json b/qortal-ui-plugins/package.json index af41573a..53565cc9 100644 --- a/qortal-ui-plugins/package.json +++ b/qortal-ui-plugins/package.json @@ -1,6 +1,6 @@ { "name": "qortal-ui-plugins", - "version": "2.2.2", + "version": "2.2.3", "description": "QORTAL-UI Plugins", "keywords": [ "QORT", @@ -22,7 +22,7 @@ "emoji-picker-js": "https://github.com/Qortal/emoji-picker-js" }, "devDependencies": { - "@babel/core": "7.19.1", + "@babel/core": "7.19.3", "@github/time-elements": "3.1.2", "@material/mwc-button": "0.27.0", "@material/mwc-checkbox": "0.27.0", @@ -46,15 +46,15 @@ "@rollup/plugin-commonjs": "22.0.2", "@rollup/plugin-node-resolve": "14.1.0", "@rollup/plugin-replace": "4.0.0", - "@vaadin/button": "23.2.1", - "@vaadin/grid": "23.2.1", - "@vaadin/icons": "23.2.1", + "@vaadin/button": "23.2.3", + "@vaadin/grid": "23.2.3", + "@vaadin/icons": "23.2.3", "epml": "0.3.3", "file-saver": "2.0.5", "html-escaper": "3.0.3", "lit": "2.3.1", "lit-translate": "2.0.1", - "rollup": "2.79.0", + "rollup": "2.79.1", "rollup-plugin-node-globals": "1.4.0", "rollup-plugin-progress": "1.1.2", "rollup-plugin-terser": "7.0.2" From 44e472da0d60ead0182ad16f75334f96bc18749a Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Mon, 3 Oct 2022 16:46:00 +0200 Subject: [PATCH 12/16] Bump version 2.1.1 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index beebc156..4a6c7473 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "qortal-ui", - "version": "2.1.0", + "version": "2.1.1", "description": "Qortal Project - decentralize the world - Data storage, communications, web hosting, decentralized trading, complete infrastructure for the future blockchain-based Internet", "keywords": [ "QORT", @@ -45,4 +45,4 @@ "engines": { "node": ">=14.17.0" } -} \ No newline at end of file +} From 53dd15f8411e1a300dcf040b69adc0ee0ad9f9e8 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Tue, 18 Oct 2022 18:54:27 +0200 Subject: [PATCH 13/16] Fix memory usage and leak. Set new layouts. Use latest supoorted node by electron --- electron.js | 2 +- package.json | 92 +++++----- .../config/default.styles.config.js | 4 +- qortal-ui-core/config/default.user.config.js | 5 +- qortal-ui-core/package.json | 168 +++++++++--------- qortal-ui-core/src/styles/styles.scss | 7 +- qortal-ui-crypto/package.json | 52 +++--- qortal-ui-plugins/package.json | 128 ++++++------- 8 files changed, 228 insertions(+), 230 deletions(-) diff --git a/electron.js b/electron.js index 0f02b952..df85e7d8 100644 --- a/electron.js +++ b/electron.js @@ -4,7 +4,7 @@ const server = require('./server.js'); const log = require('electron-log'); const path = require('path'); -// THOUGHTS: Make this APP more modularize and platform agnostic... +app.commandLine.appendSwitch('js-flags', '--max-old-space-size=512') process.env['APP_PATH'] = app.getAppPath(); diff --git a/package.json b/package.json index 4a6c7473..45c93c74 100644 --- a/package.json +++ b/package.json @@ -1,48 +1,48 @@ { - "name": "qortal-ui", - "version": "2.1.1", - "description": "Qortal Project - decentralize the world - Data storage, communications, web hosting, decentralized trading, complete infrastructure for the future blockchain-based Internet", - "keywords": [ - "QORT", - "QORTAL", - "DECENTRALIZED" - ], - "main": "electron.js", - "repository": { - "type": "git", - "url": "git+https://github.com/Qortal/qortal-ui.git" - }, - "homepage": "https://qortal.org", - "author": "QORTAL ", - "license": "GPL-3.0", - "scripts": { - "install_link:all": "(cd qortal-ui-core && yarn install && yarn link) && (cd qortal-ui-plugins && yarn install && yarn link) && (cd qortal-ui-crypto && yarn install && yarn link) && (yarn link qortal-ui-core && yarn link qortal-ui-plugins && yarn link qortal-ui-crypto)", - "dev": "node server.js", - "prebuild": "node -p \"'export const UI_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > qortal-ui-core/src/redux/app/version.js", - "build-dev": "node build.js", - "build": "NODE_ENV=production node build.js", - "server": "NODE_ENV=production node server.js", - "watch": "node watch.js", - "watch-inline": "node watch-inline.js", - "start-electron": "NODE_ENV=production electron .", - "build-electron": "electron-builder build --publish never", - "deploy-electron": "electron-builder build --win --publish never", - "release": "NODE_ENV=production electron-builder build --publish never", - "update-package-json": "node update-package-json.js", - "publish": "electron-builder -p always" - }, - "dependencies": { - "electron-updater": "5.2.1", - "electron-log": "4.4.8" - }, - "devDependencies": { - "electron": "21.0.1", - "electron-builder": "23.3.3", - "electron-notarize": "1.2.1", - "electron-packager": "16.0.0", - "shelljs": "0.8.5" - }, - "engines": { - "node": ">=14.17.0" - } + "name": "qortal-ui", + "version": "2.1.1", + "description": "Qortal Project - decentralize the world - Data storage, communications, web hosting, decentralized trading, complete infrastructure for the future blockchain-based Internet", + "keywords": [ + "QORT", + "QORTAL", + "DECENTRALIZED" + ], + "main": "electron.js", + "repository": { + "type": "git", + "url": "git+https://github.com/Qortal/qortal-ui.git" + }, + "homepage": "https://qortal.org", + "author": "QORTAL ", + "license": "GPL-3.0", + "scripts": { + "install_link:all": "(cd qortal-ui-core && yarn install && yarn link) && (cd qortal-ui-plugins && yarn install && yarn link) && (cd qortal-ui-crypto && yarn install && yarn link) && (yarn link qortal-ui-core && yarn link qortal-ui-plugins && yarn link qortal-ui-crypto)", + "dev": "node server.js", + "prebuild": "node -p \"'export const UI_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > qortal-ui-core/src/redux/app/version.js", + "build-dev": "node build.js", + "build": "NODE_ENV=production node build.js", + "server": "NODE_ENV=production node server.js", + "watch": "node watch.js", + "watch-inline": "node watch-inline.js", + "start-electron": "NODE_ENV=production electron .", + "build-electron": "electron-builder build --publish never", + "deploy-electron": "electron-builder build --win --publish never", + "release": "NODE_ENV=production electron-builder build --publish never", + "update-package-json": "node update-package-json.js", + "publish": "electron-builder -p always" + }, + "dependencies": { + "electron-log": "4.4.8", + "electron-updater": "5.2.1" + }, + "devDependencies": { + "electron": "21.1.1", + "electron-builder": "23.3.3", + "electron-notarize": "1.2.1", + "electron-packager": "16.0.0", + "shelljs": "0.8.5" + }, + "engines": { + "node": ">=16.15.0" + } } diff --git a/qortal-ui-core/config/default.styles.config.js b/qortal-ui-core/config/default.styles.config.js index ad0a5b04..17123264 100644 --- a/qortal-ui-core/config/default.styles.config.js +++ b/qortal-ui-core/config/default.styles.config.js @@ -1,7 +1,8 @@ const styles = { breakpoints: { - tablet: '', desktop: '', + laptop: '', + tablet: '', mobile: '' }, theme: { @@ -36,5 +37,4 @@ const styles = { ] } } - module.exports = styles diff --git a/qortal-ui-core/config/default.user.config.js b/qortal-ui-core/config/default.user.config.js index 6e8ba573..ee5b8a51 100644 --- a/qortal-ui-core/config/default.user.config.js +++ b/qortal-ui-core/config/default.user.config.js @@ -3,7 +3,7 @@ const path = require('path') const user = { node: 0, nodeSettings: { - pingInterval: 10 * 1000, // (10 secs) + pingInterval: 30 * 1000, }, server: { writeHosts: { @@ -27,7 +27,7 @@ const user = { }, }, constants: { - pollingInterval: 10000, // How long between checking for new unconfirmed transactions and new blocks (in milliseconds). + pollingInterval: 30 * 1000, // How long between checking for new unconfirmed transactions and new blocks (in milliseconds). workerURL: '/build/worker.js', }, @@ -43,5 +43,4 @@ const user = { }, }, } - module.exports = user diff --git a/qortal-ui-core/package.json b/qortal-ui-core/package.json index 84851fbc..b293210f 100644 --- a/qortal-ui-core/package.json +++ b/qortal-ui-core/package.json @@ -1,85 +1,85 @@ { - "name": "qortal-ui-core", - "version": "2.2.3", - "description": "QORTAL-UI Core", - "keywords": [ - "QORT", - "QORTAL", - "DECENTRALIZED" - ], - "homepage": "https://qortal.org", - "main": "ui-core.js", - "repository": { - "type": "git", - "url": "https://github.com/Qortal/qortal-ui.git", - "directory": "qortal-ui-core" - }, - "author": "QORTAL ", - "license": "GPL-3.0", - "dependencies": { - "@hapi/hapi": "20.2.2", - "@hapi/inert": "7.0.0", - "sass": "1.55.0" - }, - "devDependencies": { - "@babel/core": "7.19.3", - "@material/mwc-button": "0.27.0", - "@material/mwc-checkbox": "0.27.0", - "@material/mwc-dialog": "0.27.0", - "@material/mwc-drawer": "0.27.0", - "@material/mwc-fab": "0.27.0", - "@material/mwc-formfield": "0.27.0", - "@material/mwc-icon": "0.27.0", - "@material/mwc-icon-button": "0.27.0", - "@material/mwc-list": "0.27.0", - "@material/mwc-select": "0.27.0", - "@material/mwc-snackbar": "0.27.0", - "@material/mwc-textfield": "0.27.0", - "@polymer/app-layout": "3.1.0", - "@polymer/iron-collapse": "3.0.1", - "@polymer/iron-flex-layout": "3.0.1", - "@polymer/iron-icons": "3.0.1", - "@polymer/iron-pages": "3.0.1", - "@polymer/paper-button": "3.0.1", - "@polymer/paper-checkbox": "3.1.0", - "@polymer/paper-dialog": "3.0.1", - "@polymer/paper-dropdown-menu": "3.2.0", - "@polymer/paper-icon-button": "3.0.2", - "@polymer/paper-input": "3.2.1", - "@polymer/paper-item": "3.0.1", - "@polymer/paper-listbox": "3.0.1", - "@polymer/paper-progress": "3.0.1", - "@polymer/paper-ripple": "3.0.2", - "@polymer/paper-spinner": "3.0.2", - "@polymer/paper-toast": "3.0.1", - "@polymer/paper-tooltip": "3.0.1", - "@rollup/plugin-alias": "3.1.9", - "@rollup/plugin-babel": "5.3.1", - "@rollup/plugin-commonjs": "22.0.2", - "@rollup/plugin-node-resolve": "14.1.0", - "@rollup/plugin-replace": "4.0.0", - "@vaadin/grid": "23.2.3", - "@vaadin/icons": "23.2.3", - "@vaadin/password-field": "23.2.3", - "asmcrypto.js": "2.3.2", - "bcryptjs": "2.4.3", - "epml": "0.3.3", - "file-saver": "2.0.5", - "lit": "2.3.1", - "lit-translate": "2.0.1", - "postcss": "8.4.17", - "pwa-helpers": "0.9.1", - "random-sentence-generator": "0.0.8", - "redux": "4.2.0", - "redux-thunk": "2.4.1", - "rollup": "2.79.1", - "rollup-plugin-node-globals": "1.4.0", - "rollup-plugin-postcss": "4.0.2", - "rollup-plugin-progress": "1.1.2", - "rollup-plugin-scss": "3.0.0", - "rollup-plugin-terser": "7.0.2" - }, - "engines": { - "node": ">=14.17.0" - } -} \ No newline at end of file + "name": "qortal-ui-core", + "version": "2.2.3", + "description": "QORTAL-UI Core", + "keywords": [ + "QORT", + "QORTAL", + "DECENTRALIZED" + ], + "homepage": "https://qortal.org", + "main": "ui-core.js", + "repository": { + "type": "git", + "url": "https://github.com/Qortal/qortal-ui.git", + "directory": "qortal-ui-core" + }, + "author": "QORTAL ", + "license": "GPL-3.0", + "dependencies": { + "@hapi/hapi": "20.2.2", + "@hapi/inert": "7.0.0", + "sass": "1.55.0" + }, + "devDependencies": { + "@babel/core": "7.19.3", + "@material/mwc-button": "0.27.0", + "@material/mwc-checkbox": "0.27.0", + "@material/mwc-dialog": "0.27.0", + "@material/mwc-drawer": "0.27.0", + "@material/mwc-fab": "0.27.0", + "@material/mwc-formfield": "0.27.0", + "@material/mwc-icon": "0.27.0", + "@material/mwc-icon-button": "0.27.0", + "@material/mwc-list": "0.27.0", + "@material/mwc-select": "0.27.0", + "@material/mwc-snackbar": "0.27.0", + "@material/mwc-textfield": "0.27.0", + "@polymer/app-layout": "3.1.0", + "@polymer/iron-collapse": "3.0.1", + "@polymer/iron-flex-layout": "3.0.1", + "@polymer/iron-icons": "3.0.1", + "@polymer/iron-pages": "3.0.1", + "@polymer/paper-button": "3.0.1", + "@polymer/paper-checkbox": "3.1.0", + "@polymer/paper-dialog": "3.0.1", + "@polymer/paper-dropdown-menu": "3.2.0", + "@polymer/paper-icon-button": "3.0.2", + "@polymer/paper-input": "3.2.1", + "@polymer/paper-item": "3.0.1", + "@polymer/paper-listbox": "3.0.1", + "@polymer/paper-progress": "3.0.1", + "@polymer/paper-ripple": "3.0.2", + "@polymer/paper-spinner": "3.0.2", + "@polymer/paper-toast": "3.0.1", + "@polymer/paper-tooltip": "3.0.1", + "@rollup/plugin-alias": "4.0.0", + "@rollup/plugin-babel": "6.0.0", + "@rollup/plugin-commonjs": "23.0.0", + "@rollup/plugin-node-resolve": "15.0.0", + "@rollup/plugin-replace": "5.0.0", + "@vaadin/grid": "23.2.5", + "@vaadin/icons": "23.2.5", + "@vaadin/password-field": "23.2.5", + "asmcrypto.js": "2.3.2", + "bcryptjs": "2.4.3", + "epml": "0.3.3", + "file-saver": "2.0.5", + "lit": "2.4.0", + "lit-translate": "2.0.1", + "postcss": "8.4.18", + "pwa-helpers": "0.9.1", + "random-sentence-generator": "0.0.8", + "redux": "4.2.0", + "redux-thunk": "2.4.1", + "rollup": "2.79.1", + "rollup-plugin-node-globals": "1.4.0", + "rollup-plugin-postcss": "4.0.2", + "rollup-plugin-progress": "1.1.2", + "rollup-plugin-scss": "3.0.0", + "rollup-plugin-terser": "7.0.2" + }, + "engines": { + "node": ">=16.15.0" + } +} diff --git a/qortal-ui-core/src/styles/styles.scss b/qortal-ui-core/src/styles/styles.scss index da6a76ae..8fff0d28 100644 --- a/qortal-ui-core/src/styles/styles.scss +++ b/qortal-ui-core/src/styles/styles.scss @@ -1,6 +1,7 @@ $mdc-layout-grid-breakpoints: ( - desktop: 960px, - tablet: 480px, + desktop: 1440px, + laptop: 1240px, + tablet: 600px, phone: 0px ); @@ -10,8 +11,6 @@ $mdc-layout-grid-breakpoints: ( --layout-breakpoint-mobile: #{map-get($mdc-layout-grid-breakpoints, phone)}; } -// @import '../../node_modules/@material/layout-grid/mdc-layout-grid.scss'; - iframe.pluginJSFrame { display:none; } diff --git a/qortal-ui-crypto/package.json b/qortal-ui-crypto/package.json index 683df9d6..b1814e00 100644 --- a/qortal-ui-crypto/package.json +++ b/qortal-ui-crypto/package.json @@ -1,28 +1,28 @@ { - "name": "qortal-ui-crypto", - "version": "2.2.3", - "description": "QORTAL-UI Crypto", - "keywords": [ - "QORT", - "QORTAL", - "DECENTRALIZED" - ], - "homepage": "https://qortal.org", - "main": "api.js", - "repository": { - "type": "git", - "url": "https://github.com/Qortal/qortal-ui.git", - "directory": "qortal-ui-crypto" - }, - "author": "QORTAL ", - "license": "GPL-3.0", - "dependencies": { - "asmcrypto.js": "2.3.2", - "buffer": "6.0.3", - "jssha": "3.2.0", - "lodash": "4.17.21" - }, - "engines": { - "node": ">=14.17.0" - } + "name": "qortal-ui-crypto", + "version": "2.2.3", + "description": "QORTAL-UI Crypto", + "keywords": [ + "QORT", + "QORTAL", + "DECENTRALIZED" + ], + "homepage": "https://qortal.org", + "main": "api.js", + "repository": { + "type": "git", + "url": "https://github.com/Qortal/qortal-ui.git", + "directory": "qortal-ui-crypto" + }, + "author": "QORTAL ", + "license": "GPL-3.0", + "dependencies": { + "asmcrypto.js": "2.3.2", + "buffer": "6.0.3", + "jssha": "3.2.0", + "lodash": "4.17.21" + }, + "engines": { + "node": ">=16.15.0" + } } diff --git a/qortal-ui-plugins/package.json b/qortal-ui-plugins/package.json index 53565cc9..39a9a740 100644 --- a/qortal-ui-plugins/package.json +++ b/qortal-ui-plugins/package.json @@ -1,65 +1,65 @@ { - "name": "qortal-ui-plugins", - "version": "2.2.3", - "description": "QORTAL-UI Plugins", - "keywords": [ - "QORT", - "QORTAL", - "DECENTRALIZED" - ], - "homepage": "https://qortal.org", - "main": "default-plugins.js", - "repository": { - "type": "git", - "url": "https://github.com/Qortal/qortal-ui.git", - "directory": "qortal-ui-plugins" - }, - "author": "QORTAL ", - "license": "GPL-3.0", - "dependencies": { - "@material/mwc-list": "0.27.0", - "@material/mwc-select": "0.27.0", - "emoji-picker-js": "https://github.com/Qortal/emoji-picker-js" - }, - "devDependencies": { - "@babel/core": "7.19.3", - "@github/time-elements": "3.1.2", - "@material/mwc-button": "0.27.0", - "@material/mwc-checkbox": "0.27.0", - "@material/mwc-dialog": "0.27.0", - "@material/mwc-formfield": "0.27.0", - "@material/mwc-icon": "0.27.0", - "@material/mwc-icon-button": "0.27.0", - "@material/mwc-slider": "0.27.0", - "@material/mwc-snackbar": "0.27.0", - "@material/mwc-tab": "0.27.0", - "@material/mwc-tab-bar": "0.27.0", - "@material/mwc-textfield": "0.27.0", - "@polymer/iron-icons": "3.0.1", - "@polymer/paper-icon-button": "3.0.2", - "@polymer/paper-progress": "3.0.1", - "@polymer/paper-slider": "3.0.1", - "@polymer/paper-spinner": "3.0.2", - "@polymer/paper-tooltip": "3.0.1", - "@rollup/plugin-alias": "3.1.9", - "@rollup/plugin-babel": "5.3.1", - "@rollup/plugin-commonjs": "22.0.2", - "@rollup/plugin-node-resolve": "14.1.0", - "@rollup/plugin-replace": "4.0.0", - "@vaadin/button": "23.2.3", - "@vaadin/grid": "23.2.3", - "@vaadin/icons": "23.2.3", - "epml": "0.3.3", - "file-saver": "2.0.5", - "html-escaper": "3.0.3", - "lit": "2.3.1", - "lit-translate": "2.0.1", - "rollup": "2.79.1", - "rollup-plugin-node-globals": "1.4.0", - "rollup-plugin-progress": "1.1.2", - "rollup-plugin-terser": "7.0.2" - }, - "engines": { - "node": ">=14.17.0" - } -} \ No newline at end of file + "name": "qortal-ui-plugins", + "version": "2.2.3", + "description": "QORTAL-UI Plugins", + "keywords": [ + "QORT", + "QORTAL", + "DECENTRALIZED" + ], + "homepage": "https://qortal.org", + "main": "default-plugins.js", + "repository": { + "type": "git", + "url": "https://github.com/Qortal/qortal-ui.git", + "directory": "qortal-ui-plugins" + }, + "author": "QORTAL ", + "license": "GPL-3.0", + "dependencies": { + "@material/mwc-list": "0.27.0", + "@material/mwc-select": "0.27.0", + "emoji-picker-js": "https://github.com/Qortal/emoji-picker-js" + }, + "devDependencies": { + "@babel/core": "7.19.3", + "@github/time-elements": "3.1.2", + "@material/mwc-button": "0.27.0", + "@material/mwc-checkbox": "0.27.0", + "@material/mwc-dialog": "0.27.0", + "@material/mwc-formfield": "0.27.0", + "@material/mwc-icon": "0.27.0", + "@material/mwc-icon-button": "0.27.0", + "@material/mwc-slider": "0.27.0", + "@material/mwc-snackbar": "0.27.0", + "@material/mwc-tab": "0.27.0", + "@material/mwc-tab-bar": "0.27.0", + "@material/mwc-textfield": "0.27.0", + "@polymer/iron-icons": "3.0.1", + "@polymer/paper-icon-button": "3.0.2", + "@polymer/paper-progress": "3.0.1", + "@polymer/paper-slider": "3.0.1", + "@polymer/paper-spinner": "3.0.2", + "@polymer/paper-tooltip": "3.0.1", + "@rollup/plugin-alias": "4.0.0", + "@rollup/plugin-babel": "6.0.0", + "@rollup/plugin-commonjs": "23.0.0", + "@rollup/plugin-node-resolve": "15.0.0", + "@rollup/plugin-replace": "5.0.0", + "@vaadin/button": "23.2.5", + "@vaadin/grid": "23.2.5", + "@vaadin/icons": "23.2.5", + "epml": "0.3.3", + "file-saver": "2.0.5", + "html-escaper": "3.0.3", + "lit": "2.4.0", + "lit-translate": "2.0.1", + "rollup": "2.79.1", + "rollup-plugin-node-globals": "1.4.0", + "rollup-plugin-progress": "1.1.2", + "rollup-plugin-terser": "7.0.2" + }, + "engines": { + "node": ">=16.15.0" + } +} From 10d47b4f189f6ca0b5203e8eafa1682b8cbe90fd Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Tue, 18 Oct 2022 18:59:02 +0200 Subject: [PATCH 14/16] Use latest supported nodejs --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b990640e..c27b7348 100644 --- a/README.md +++ b/README.md @@ -26,8 +26,9 @@ Easiest way to install the lastest required packages on Linux is via nvm. ``` source ~/.profile ``` (For Debian based distro)
``` source ~/.bashrc ``` (For Fedora / CentOS)
``` nvm ls-remote ``` (Fetch list of available versions)
-``` nvm install v16.14.2 ``` (LTS: Gallium supported by Electron)
-``` npm -g install yarn ```
+``` nvm install v16.16.0 ``` (LTS: Gallium supported by Electron)
+``` npm --location=global install yarn ```
+``` npm --location=global install npm@8.19.2 ```
On BSD do a ``` pkg_add node followed by npm install -g yarn ``` From aa5842b94083b21748fb04a53da02ddfa2462f46 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Wed, 19 Oct 2022 12:24:47 +0200 Subject: [PATCH 15/16] Fix lit import and delete not needed console logs --- .../plugins/core/components/ChatModals.js | 4 +- .../plugins/core/components/ChatPage.js | 12 ---- .../group-management/group-management.src.js | 63 +++++++------------ .../group-transaction.src.js | 1 - .../name-registration.src.js | 21 +++---- .../plugins/core/puzzles/puzzles.src.js | 1 - .../plugins/core/qdn/browser/browser.src.js | 1 - .../sponsorship-list/sponsorship-list.src.js | 1 - .../core/trade-portal/trade-portal.src.js | 1 - .../plugins/core/wallet/wallet-app.src.js | 2 +- 10 files changed, 35 insertions(+), 72 deletions(-) diff --git a/qortal-ui-plugins/plugins/core/components/ChatModals.js b/qortal-ui-plugins/plugins/core/components/ChatModals.js index 5b1a6712..c1ce0b2d 100644 --- a/qortal-ui-plugins/plugins/core/components/ChatModals.js +++ b/qortal-ui-plugins/plugins/core/components/ChatModals.js @@ -1,4 +1,5 @@ -import { LitElement, html, css} from 'lit-element'; +import { LitElement, html, css } from 'lit'; +import { render } from 'lit/html.js'; import { get, translate } from 'lit-translate'; import { Epml } from '../../../epml'; import snackbar from './snackbar.js' @@ -336,7 +337,6 @@ class ChatModals extends LitElement { dismiss: true }) } - console.log({ret}) return ret } diff --git a/qortal-ui-plugins/plugins/core/components/ChatPage.js b/qortal-ui-plugins/plugins/core/components/ChatPage.js index 69d18120..aba20938 100644 --- a/qortal-ui-plugins/plugins/core/components/ChatPage.js +++ b/qortal-ui-plugins/plugins/core/components/ChatPage.js @@ -342,17 +342,7 @@ class ChatPage extends LitElement { // TODO: Determine number of initial messages by screen height... this._messages.length <= 15 ? adjustMessages() : this._initialMessages = this._messages.splice(this._messages.length - 15); - this.messagesRendered = this._initialMessages - - // try { - // const viewElement = this.shadowRoot.querySelector('chat-scroller') - // console.log({viewElement}) - // // viewElement.scrollTop = this.viewElement.scrollHeight + 50 - // } catch (error) { - // console.error(error) - // } - this.isLoadingMessages = false setTimeout(() => this.downElementObserver(), 500) @@ -551,7 +541,6 @@ class ChatPage extends LitElement { // Error Event directSocket.onerror = (e) => { clearTimeout(directSocketTimeout) - console.log(`[DIRECT-SOCKET ==> ${cid}]: ${e.type}`); } const pingDirectSocket = () => { @@ -613,7 +602,6 @@ class ChatPage extends LitElement { // Error Event groupSocket.onerror = (e) => { clearTimeout(groupSocketTimeout) - console.log(`[GROUP-SOCKET ==> ${groupId}]: ${e.type}`); } const pingGroupSocket = () => { diff --git a/qortal-ui-plugins/plugins/core/group-management/group-management.src.js b/qortal-ui-plugins/plugins/core/group-management/group-management.src.js index 5c60519b..ee4eedc3 100644 --- a/qortal-ui-plugins/plugins/core/group-management/group-management.src.js +++ b/qortal-ui-plugins/plugins/core/group-management/group-management.src.js @@ -588,57 +588,42 @@ class GroupManagement extends LitElement { 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 url = `${nodeUrl}/transactions/unitfee?txType=CREATE_GROUP`; - await fetch(url) - .then((response) => { - if (response.ok) { - return response.json(); - } - return Promise.reject(response); - }) - .then((json) => { - this.createFee = (Number(json) / 1e8).toFixed(8); - }) - .catch((response) => { - console.log(response.status, response.statusText, 'Need Core Update'); - }) + await fetch(url).then((response) => { + if (response.ok) { + return response.json(); + } + return Promise.reject(response); + }).then((json) => { + this.createFee = (Number(json) / 1e8).toFixed(8); + }) } async unitJoinFee() { 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 url = `${nodeUrl}/transactions/unitfee?txType=JOIN_GROUP`; - await fetch(url) - .then((response) => { - if (response.ok) { - return response.json(); - } - return Promise.reject(response); - }) - .then((json) => { - this.joinFee = (Number(json) / 1e8).toFixed(8); - }) - .catch((response) => { - console.log(response.status, response.statusText, 'Need Core Update'); - }) + await fetch(url).then((response) => { + if (response.ok) { + return response.json(); + } + return Promise.reject(response); + }).then((json) => { + this.joinFee = (Number(json) / 1e8).toFixed(8); + }) } async unitLeaveFee() { 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 url = `${nodeUrl}/transactions/unitfee?txType=LEAVE_GROUP`; - await fetch(url) - .then((response) => { - if (response.ok) { - return response.json(); - } - return Promise.reject(response); - }) - .then((json) => { - this.leaveFee = (Number(json) / 1e8).toFixed(8); - }) - .catch((response) => { - console.log(response.status, response.statusText, 'Need Core Update'); - }) + await fetch(url).then((response) => { + if (response.ok) { + return response.json(); + } + return Promise.reject(response); + }).then((json) => { + this.leaveFee = (Number(json) / 1e8).toFixed(8); + }) } resetDefaultSettings() { diff --git a/qortal-ui-plugins/plugins/core/group-management/group-transaction/group-transaction.src.js b/qortal-ui-plugins/plugins/core/group-management/group-transaction/group-transaction.src.js index efb84a23..3031734c 100644 --- a/qortal-ui-plugins/plugins/core/group-management/group-transaction/group-transaction.src.js +++ b/qortal-ui-plugins/plugins/core/group-management/group-transaction/group-transaction.src.js @@ -136,7 +136,6 @@ class GroupTransaction extends LitElement { let splitedUrl = decodeTempUrl.split('?') let myGroupId = splitedUrl[1] this.addMintingAccountMessage = myGroupId - console.log(myGroupId); } getGroupIdFromURL() diff --git a/qortal-ui-plugins/plugins/core/name-registration/name-registration.src.js b/qortal-ui-plugins/plugins/core/name-registration/name-registration.src.js index ab6bc92d..944d670b 100644 --- a/qortal-ui-plugins/plugins/core/name-registration/name-registration.src.js +++ b/qortal-ui-plugins/plugins/core/name-registration/name-registration.src.js @@ -288,19 +288,14 @@ class NameRegistration extends LitElement { 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 url = `${nodeUrl}/transactions/unitfee?txType=REGISTER_NAME`; - await fetch(url) - .then((response) => { - if (response.ok) { - return response.json(); - } - return Promise.reject(response); - }) - .then((json) => { - this.fee = (Number(json) / 1e8).toFixed(2); - }) - .catch((response) => { - console.log(response.status, response.statusText, this.renderCoreText()); - }) + await fetch(url).then((response) => { + if (response.ok) { + return response.json(); + } + return Promise.reject(response); + }).then((json) => { + this.fee = (Number(json) / 1e8).toFixed(2); + }) } getApiKey() { diff --git a/qortal-ui-plugins/plugins/core/puzzles/puzzles.src.js b/qortal-ui-plugins/plugins/core/puzzles/puzzles.src.js index 522f90ba..27fe74e0 100644 --- a/qortal-ui-plugins/plugins/core/puzzles/puzzles.src.js +++ b/qortal-ui-plugins/plugins/core/puzzles/puzzles.src.js @@ -437,7 +437,6 @@ class Puzzles extends LitElement { let _guessAddress = publicKeyToAddress(_keyPair.publicKey) - console.log("Guess '" + _guessAddress + "' vs puzzle's address '" + this.selectedPuzzle.address + "'") if (_guessAddress !== this.selectedPuzzle.address) { this.error = true this.message = this.renderErr1Text() diff --git a/qortal-ui-plugins/plugins/core/qdn/browser/browser.src.js b/qortal-ui-plugins/plugins/core/qdn/browser/browser.src.js index 64bcaf7c..283e07f3 100644 --- a/qortal-ui-plugins/plugins/core/qdn/browser/browser.src.js +++ b/qortal-ui-plugins/plugins/core/qdn/browser/browser.src.js @@ -140,7 +140,6 @@ class WebBrowser extends LitElement { url: `/render/authorize/${this.name}?apiKey=${this.getApiKey()}`, method: "POST" }).then(res => { - console.log(res) if (res.error) { // Authorization problem - API key incorrect? } diff --git a/qortal-ui-plugins/plugins/core/sponsorship-list/sponsorship-list.src.js b/qortal-ui-plugins/plugins/core/sponsorship-list/sponsorship-list.src.js index 94581e5d..a4cf94e0 100644 --- a/qortal-ui-plugins/plugins/core/sponsorship-list/sponsorship-list.src.js +++ b/qortal-ui-plugins/plugins/core/sponsorship-list/sponsorship-list.src.js @@ -219,7 +219,6 @@ class SponsorshipList extends LitElement { } } catch (error) { - console.log({error}) this.isPageLoading = false } diff --git a/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js b/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js index fe631050..d8fdc5e2 100644 --- a/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js +++ b/qortal-ui-plugins/plugins/core/trade-portal/trade-portal.src.js @@ -1270,7 +1270,6 @@ class TradePortal extends LitElement { } async fetchWalletAddress(coin) { - console.log("fetchWalletAddress: " + coin) switch (coin) { case 'PIRATECHAIN': let res = await parentEpml.request('apiCall', { diff --git a/qortal-ui-plugins/plugins/core/wallet/wallet-app.src.js b/qortal-ui-plugins/plugins/core/wallet/wallet-app.src.js index 35952e8c..b89b15b4 100644 --- a/qortal-ui-plugins/plugins/core/wallet/wallet-app.src.js +++ b/qortal-ui-plugins/plugins/core/wallet/wallet-app.src.js @@ -4449,7 +4449,7 @@ class MultiWallet extends LitElement { } const arrrSortedTransactions = arrrTxs.sort(arrrCompareFn) - console.log(arrrSortedTransactions) + if (this._selectedWallet == coin) { this.wallets.get(this._selectedWallet).transactions = arrrSortedTransactions } From d9b1ec488b69edde2c8a515cef36822d65158ff6 Mon Sep 17 00:00:00 2001 From: CalDescent <> Date: Sat, 22 Oct 2022 13:16:17 +0100 Subject: [PATCH 16/16] Added chatReference to ChatTransaction and GroupChatTransaction. Since this affects transaction serialization, it will need to take effect from a future undecided timestamp (defined in constants.js), and both core & UI will need to share the same timestamp. The feature trigger timestamp comparisons can be removed 24 hours (or more) post-activation. This is because CHAT messages are currently discarded after 24 hours so we don't need to maintain backwards support of the old serialization approach. The feature trigger is only to ensure full chat operation during the 24 hours that the switchover occurs. --- qortal-ui-crypto/api/constants.js | 6 ++++-- .../api/transactions/chat/ChatTransaction.js | 20 +++++++++++++++++++ .../transactions/chat/GroupChatTransaction.js | 20 +++++++++++++++++++ .../plugins/core/components/ChatModals.js | 1 + .../plugins/core/components/ChatPage.js | 2 ++ .../core/components/ChatWelcomePage.js | 1 + .../plugins/core/components/NameMenu.js | 1 + .../core/messaging/q-chat/q-chat.src.js | 1 + 8 files changed, 50 insertions(+), 2 deletions(-) diff --git a/qortal-ui-crypto/api/constants.js b/qortal-ui-crypto/api/constants.js index 1909fffc..b3fa7cd4 100644 --- a/qortal-ui-crypto/api/constants.js +++ b/qortal-ui-crypto/api/constants.js @@ -249,6 +249,8 @@ const ERROR_CODES = { 1000: "Not yet released." } +const CHAT_REFERENCE_FEATURE_TRIGGER_TIMESTAMP = 9999999999999 + const QORT_DECIMALS = 1e8 const PROXY_URL = "/proxy/" // Proxy for api calls @@ -265,7 +267,7 @@ const STATIC_BCRYPT_SALT = `$${BCRYPT_VERSION}$${BCRYPT_ROUNDS}$IxVE941tXVUD4cW0 const KDF_THREADS = 16 // 16 Threads seems like a good number :) . No you dumbass nigerian. Its not ! -_- -export { TX_TYPES, ERROR_CODES, QORT_DECIMALS, PROXY_URL, STATIC_SALT, ADDRESS_VERSION, KDF_THREADS, STATIC_BCRYPT_SALT } +export { TX_TYPES, ERROR_CODES, QORT_DECIMALS, PROXY_URL, STATIC_SALT, ADDRESS_VERSION, KDF_THREADS, STATIC_BCRYPT_SALT, CHAT_REFERENCE_FEATURE_TRIGGER_TIMESTAMP } //const TX_TYPES = { // GENESIS_TRANSACTION: 1, @@ -291,4 +293,4 @@ export { TX_TYPES, ERROR_CODES, QORT_DECIMALS, PROXY_URL, STATIC_SALT, ADDRESS_V // DEPLOY_AT_TRANSACTION: 16, // // MESSAGE_TRANSACTION: 17 -//}; \ No newline at end of file +//}; diff --git a/qortal-ui-crypto/api/transactions/chat/ChatTransaction.js b/qortal-ui-crypto/api/transactions/chat/ChatTransaction.js index 6e6dcfd4..a53a0f81 100644 --- a/qortal-ui-crypto/api/transactions/chat/ChatTransaction.js +++ b/qortal-ui-crypto/api/transactions/chat/ChatTransaction.js @@ -3,6 +3,7 @@ import ChatBase from "./ChatBase.js" import nacl from '../../deps/nacl-fast.js' import ed2curve from '../../deps/ed2curve.js' import { Sha256 } from 'asmcrypto.js' +import { CHAT_REFERENCE_FEATURE_TRIGGER_TIMESTAMP } from '../../constants.js' export default class ChatTransaction extends ChatBase { @@ -29,6 +30,15 @@ export default class ChatTransaction extends ChatBase { this._hasReceipient[0] = 1 } + set hasChatReference(hasChatReference) { + this._hasChatReference = new Uint8Array(1) + this._hasChatReference[0] = hasChatReference + } + + set chatReference(chatReference) { + this._chatReference = chatReference instanceof Uint8Array ? chatReference : this.constructor.Base58.decode(chatReference) + } + set message(message) { this.messageText = message; @@ -72,6 +82,16 @@ export default class ChatTransaction extends ChatBase { this._isText, this._feeBytes ) + + // After the feature trigger timestamp we need to include chat reference + if (new Date(this._timestamp).getTime() >= CHAT_REFERENCE_FEATURE_TRIGGER_TIMESTAMP) { + params.push(this._hasChatReference) + + if (this._hasChatReference[0] == 1) { + params.push(this._chatReference) + } + } + return params; } } diff --git a/qortal-ui-crypto/api/transactions/chat/GroupChatTransaction.js b/qortal-ui-crypto/api/transactions/chat/GroupChatTransaction.js index efbd97b0..4f0f2386 100644 --- a/qortal-ui-crypto/api/transactions/chat/GroupChatTransaction.js +++ b/qortal-ui-crypto/api/transactions/chat/GroupChatTransaction.js @@ -1,5 +1,6 @@ "use strict"; import ChatBase from "./ChatBase.js" +import { CHAT_REFERENCE_FEATURE_TRIGGER_TIMESTAMP } from '../../constants.js' export default class GroupChatTransaction extends ChatBase { constructor() { @@ -18,6 +19,15 @@ export default class GroupChatTransaction extends ChatBase { this._hasReceipient[0] = hasReceipient } + set hasChatReference(hasChatReference) { + this._hasChatReference = new Uint8Array(1) + this._hasChatReference[0] = hasChatReference + } + + set chatReference(chatReference) { + this._chatReference = chatReference instanceof Uint8Array ? chatReference : this.constructor.Base58.decode(chatReference) + } + set message(message) { this.messageText = message; @@ -47,6 +57,16 @@ export default class GroupChatTransaction extends ChatBase { this._isText, this._feeBytes ) + + // After the feature trigger timestamp we need to include chat reference + if (new Date(this._timestamp).getTime() >= CHAT_REFERENCE_FEATURE_TRIGGER_TIMESTAMP) { + params.push(this._hasChatReference) + + if (this._hasChatReference[0] == 1) { + params.push(this._chatReference) + } + } + return params; } } diff --git a/qortal-ui-plugins/plugins/core/components/ChatModals.js b/qortal-ui-plugins/plugins/core/components/ChatModals.js index c1ce0b2d..ab772335 100644 --- a/qortal-ui-plugins/plugins/core/components/ChatModals.js +++ b/qortal-ui-plugins/plugins/core/components/ChatModals.js @@ -183,6 +183,7 @@ class ChatModals extends LitElement { timestamp: sendTimestamp, recipient: recipient, recipientPublicKey: _publicKey, + hasChatReference: 0, message: messageText, lastReference: reference, proofOfWorkNonce: 0, diff --git a/qortal-ui-plugins/plugins/core/components/ChatPage.js b/qortal-ui-plugins/plugins/core/components/ChatPage.js index aba20938..6c0e192c 100644 --- a/qortal-ui-plugins/plugins/core/components/ChatPage.js +++ b/qortal-ui-plugins/plugins/core/components/ChatPage.js @@ -667,6 +667,7 @@ class ChatPage extends LitElement { timestamp: Date.now(), recipient: this._chatId, recipientPublicKey: this._publicKey.key, + hasChatReference: 0, message: messageText, lastReference: reference, proofOfWorkNonce: 0, @@ -684,6 +685,7 @@ class ChatPage extends LitElement { timestamp: Date.now(), groupID: Number(this._chatId), hasReceipient: 0, + hasChatReference: 0, message: messageText, lastReference: reference, proofOfWorkNonce: 0, diff --git a/qortal-ui-plugins/plugins/core/components/ChatWelcomePage.js b/qortal-ui-plugins/plugins/core/components/ChatWelcomePage.js index 1d9ea9bc..782db47f 100644 --- a/qortal-ui-plugins/plugins/core/components/ChatWelcomePage.js +++ b/qortal-ui-plugins/plugins/core/components/ChatWelcomePage.js @@ -410,6 +410,7 @@ class ChatWelcomePage extends LitElement { timestamp: sendTimestamp, recipient: recipient, recipientPublicKey: _publicKey, + hasChatReference: 0, message: messageText, lastReference: reference, proofOfWorkNonce: 0, diff --git a/qortal-ui-plugins/plugins/core/components/NameMenu.js b/qortal-ui-plugins/plugins/core/components/NameMenu.js index 77472b71..17c39a88 100644 --- a/qortal-ui-plugins/plugins/core/components/NameMenu.js +++ b/qortal-ui-plugins/plugins/core/components/NameMenu.js @@ -529,6 +529,7 @@ class NameMenu extends LitElement { timestamp: sendTimestamp, recipient: recipient, recipientPublicKey: _publicKey, + hasChatReference: 0, message: messageText, lastReference: reference, proofOfWorkNonce: 0, 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 a6dc0244..0eddc863 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 @@ -819,6 +819,7 @@ class Chat extends LitElement { timestamp: sendTimestamp, recipient: recipient, recipientPublicKey: _publicKey, + hasChatReference: 0, message: messageText, lastReference: reference, proofOfWorkNonce: 0,