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 a4c543cc..dbca056b 100644 --- a/qortal-ui-plugins/plugins/core/wallet/wallet-app.src.js +++ b/qortal-ui-plugins/plugins/core/wallet/wallet-app.src.js @@ -26,7 +26,7 @@ import '@github/time-elements' const parentEpml = new Epml({ type: 'WINDOW', source: window.parent }) -const coinsNames = ['qort', 'btc', 'ltc', 'doge', 'dgb', 'rvn'] +const coinsNames = ['qort', 'btc', 'ltc', 'doge', 'dgb', 'rvn', 'nmc', 'dash', 'firo'] class MultiWallet extends LitElement { static get properties() { @@ -51,6 +51,12 @@ class MultiWallet extends LitElement { dgbAmount: { type: Number }, rvnRecipient: { type: String }, rvnAmount: { type: Number }, + nmcRecipient: { type: String }, + nmcAmount: { type: Number }, + dashRecipient: { type: String }, + dashAmount: { type: Number }, + firoRecipient: { type: String }, + firoAmount: { type: Number }, errorMessage: { type: String }, successMessage: { type: String }, sendMoneyLoading: { type: Boolean }, @@ -62,6 +68,9 @@ class MultiWallet extends LitElement { dogeFeePerByte: { type: Number }, dgbFeePerByte: { type: Number }, rvnFeePerByte: { type: Number }, + nmcFeePerByte: { type: Number }, + dashFeePerByte: { type: Number }, + firoFeePerByte: { type: Number }, balanceString: { type: String } } } @@ -436,6 +445,18 @@ class MultiWallet extends LitElement { background-image: url('/img/rvn.png'); } + .nmc .currency-image { + background-image: url('/img/nmc.png'); + } + + .dash .currency-image { + background-image: url('/img/dash.png'); + } + + .firo .currency-image { + background-image: url('/img/firo.png'); + } + .card-list { margin-top: 20px; } @@ -600,6 +621,9 @@ class MultiWallet extends LitElement { this.dogeRecipient = '' this.dgbRecipient = '' this.rvnRecipient = '' + this.nmcRecipient = '' + this.dashRecipient = '' + this.firoRecipient = '' this.errorMessage = '' this.successMessage = '' this.sendMoneyLoading = false @@ -612,6 +636,9 @@ class MultiWallet extends LitElement { this.dogeAmount = 0 this.dgbAmount = 0 this.rvnAmount = 0 + this.nmcAmount = 0 + this.dashAmount = 0 + this.firoAmount = 0 this.btcFeePerByte = 100 this.btcSatMinFee = 20 this.btcSatMaxFee = 150 @@ -627,6 +654,15 @@ class MultiWallet extends LitElement { this.rvnFeePerByte = 1125 this.rvnSatMinFee = 1000 this.rvnSatMaxFee = 10000 + this.nmcFeePerByte = 100 + this.nmcSatMinFee = 100 + this.nmcSatMaxFee = 150 + this.dashFeePerByte = 1 + this.dashSatMinFee = 1 + this.dashSatMaxFee = 10 + this.firoFeePerByte = 1 + this.firoSatMinFee = 1 + this.firoSatMaxFee = 10 this.wallets = new Map() @@ -648,6 +684,9 @@ class MultiWallet extends LitElement { this.wallets.get('doge').wallet = window.parent.reduxStore.getState().app.selectedAddress.dogeWallet this.wallets.get('dgb').wallet = window.parent.reduxStore.getState().app.selectedAddress.dgbWallet this.wallets.get('rvn').wallet = window.parent.reduxStore.getState().app.selectedAddress.rvnWallet + this.wallets.get('nmc').wallet = window.parent.reduxStore.getState().app.selectedAddress.nmcWallet + this.wallets.get('dash').wallet = window.parent.reduxStore.getState().app.selectedAddress.dashWallet + this.wallets.get('firo').wallet = window.parent.reduxStore.getState().app.selectedAddress.firoWallet this._selectedWallet = 'qort' @@ -662,6 +701,9 @@ class MultiWallet extends LitElement { this.wallets.get('doge').wallet = window.parent.reduxStore.getState().app.selectedAddress.dogeWallet this.wallets.get('dgb').wallet = window.parent.reduxStore.getState().app.selectedAddress.dgbWallet this.wallets.get('rvn').wallet = window.parent.reduxStore.getState().app.selectedAddress.rvnWallet + this.wallets.get('nmc').wallet = window.parent.reduxStore.getState().app.selectedAddress.nmcWallet + this.wallets.get('dash').wallet = window.parent.reduxStore.getState().app.selectedAddress.dashWallet + this.wallets.get('firo').wallet = window.parent.reduxStore.getState().app.selectedAddress.firoWallet }) parentEpml.subscribe('copy_menu_switch', async (value) => { @@ -703,6 +745,18 @@ class MultiWallet extends LitElement {
Ravencoin
+
+
+
Namecoin
+
+
+
+
Dash
+
+
+
+
Firo
+
@@ -1029,6 +1083,156 @@ class MultiWallet extends LitElement { + +
+

${translate("walletpage.wchange5")}

+
+
+
+ ${translate("walletpage.wchange6")} +
+
+ ${translate("walletpage.wchange40")} + ${this.selectedTransaction.nmcTxnFlow === 'OUT' ? html`${translate("walletpage.wchange7")}` : html`${translate("walletpage.wchange8")}`} +
+ ${translate("walletpage.wchange9")} +
+
+ ${this.selectedTransaction.nmcSender} +
+ ${translate("walletpage.wchange10")} +
+
+ ${this.selectedTransaction.nmcReceiver} +
+ ${translate("walletpage.wchange12")} +
+
+ ${(this.selectedTransaction.feeAmount / 1e8).toFixed(8)} NMC +
+ ${translate("walletpage.wchange37")} +
+
+ ${(this.selectedTransaction.totalAmount / 1e8).toFixed(8)} NMC +
+ ${translate("walletpage.wchange14")} +
+
${new Date(this.selectedTransaction.timestamp).toString()}
+ ${translate("walletpage.wchange16")} +
+
+ ${this.selectedTransaction.txHash} +
+
+ + ${translate("general.close")} + +
+ + +
+

${translate("walletpage.wchange5")}

+
+
+
+ ${translate("walletpage.wchange6")} +
+
+ ${translate("walletpage.wchange40")} + ${this.selectedTransaction.dashTxnFlow === 'OUT' ? html`${translate("walletpage.wchange7")}` : html`${translate("walletpage.wchange8")}`} +
+ ${translate("walletpage.wchange9")} +
+
+ ${this.selectedTransaction.dashSender} +
+ ${translate("walletpage.wchange10")} +
+
+ ${this.selectedTransaction.dashReceiver} +
+ ${translate("walletpage.wchange12")} +
+
+ ${(this.selectedTransaction.feeAmount / 1e8).toFixed(8)} DASH +
+ ${translate("walletpage.wchange37")} +
+
+ ${(this.selectedTransaction.totalAmount / 1e8).toFixed(8)} DASH +
+ ${translate("walletpage.wchange14")} +
+
${new Date(this.selectedTransaction.timestamp).toString()}
+ ${translate("walletpage.wchange16")} +
+
+ ${this.selectedTransaction.txHash} +
+
+ + ${translate("general.close")} + +
+ + +
+

${translate("walletpage.wchange5")}

+
+
+
+ ${translate("walletpage.wchange6")} +
+
+ ${translate("walletpage.wchange40")} + ${this.selectedTransaction.firoTxnFlow === 'OUT' ? html`${translate("walletpage.wchange7")}` : html`${translate("walletpage.wchange8")}`} +
+ ${translate("walletpage.wchange9")} +
+
+ ${this.selectedTransaction.firoSender} +
+ ${translate("walletpage.wchange10")} +
+
+ ${this.selectedTransaction.firoReceiver} +
+ ${translate("walletpage.wchange12")} +
+
+ ${(this.selectedTransaction.feeAmount / 1e8).toFixed(8)} FIRO +
+ ${translate("walletpage.wchange37")} +
+
+ ${(this.selectedTransaction.totalAmount / 1e8).toFixed(8)} FIRO +
+ ${translate("walletpage.wchange14")} +
+
${new Date(this.selectedTransaction.timestamp).toString()}
+ ${translate("walletpage.wchange16")} +
+
+ ${this.selectedTransaction.txHash} +
+
+ + ${translate("general.close")} + +
+
@@ -1467,6 +1671,234 @@ class MultiWallet extends LitElement { ${translate("general.close")} + + +
+
+ +

${translate("walletpage.wchange17")} NMC

+
+
+

+ ${translate("walletpage.wchange18")}:
+ ${this.getSelectedWalletAddress()} +

+

+ ${translate("walletpage.wchange19")}:
+ ${this.balanceString} +

+

+ + +

+

+ + +

+
+

+ ${translate("walletpage.wchange24")}: ${(this.nmcFeePerByte / 1e8).toFixed(8)} NMC
${translate("walletpage.wchange25")} +

+ + +
+ ${this.renderClearSuccess()} + ${this.renderClearError()} + ${this.sendMoneyLoading ? html` ` : ''} +
+
+ this.sendNmc()}> + + ${translate("walletpage.wchange17")} NMC + +
+
+
+ + ${translate("general.close")} + +
+ + +
+
+ +

${translate("walletpage.wchange17")} DASH

+
+
+

+ ${translate("walletpage.wchange18")}:
+ ${this.getSelectedWalletAddress()} +

+

+ ${translate("walletpage.wchange19")}:
+ ${this.balanceString} +

+

+ + +

+

+ + +

+
+

+ ${translate("walletpage.wchange24")}: ${(this.dashFeePerByte / 1e8).toFixed(8)} DASH
${translate("walletpage.wchange25")} +

+ + +
+ ${this.renderClearSuccess()} + ${this.renderClearError()} + ${this.sendMoneyLoading ? html` ` : ''} +
+
+ this.sendDash()}> + + ${translate("walletpage.wchange17")} DASH + +
+
+
+ + ${translate("general.close")} + +
+ + +
+
+ +

${translate("walletpage.wchange17")} FIRO

+
+
+

+ ${translate("walletpage.wchange18")}:
+ ${this.getSelectedWalletAddress()} +

+

+ ${translate("walletpage.wchange19")}:
+ ${this.balanceString} +

+

+ + +

+

+ + +

+
+

+ ${translate("walletpage.wchange24")}: ${(this.firoFeePerByte / 1e8).toFixed(8)} FIRO
${translate("walletpage.wchange25")} +

+ + +
+ ${this.renderClearSuccess()} + ${this.renderClearError()} + ${this.sendMoneyLoading ? html` ` : ''} +
+
+ this.sendFiro()}> + + ${translate("walletpage.wchange17")} FIRO + +
+
+
+ + ${translate("general.close")} + +
` } @@ -1791,6 +2223,144 @@ class MultiWallet extends LitElement { } } checkSelectedTextAndShowMenu() + }) + + this.shadowRoot.getElementById('nmcAmountInput').addEventListener('contextmenu', (event) => { + const getSelectedText = () => { + var text = '' + if (typeof window.getSelection != 'undefined') { + text = window.getSelection().toString() + } else if (typeof this.shadowRoot.selection != 'undefined' && this.shadowRoot.selection.type == 'Text') { + text = this.shadowRoot.selection.createRange().text + } + return text + } + const checkSelectedTextAndShowMenu = () => { + let selectedText = getSelectedText() + if (selectedText && typeof selectedText === 'string') { + } else { + this.pasteMenu(event, 'nmcAmountInput') + this.isPasteMenuOpen = true + event.preventDefault() + event.stopPropagation() + } + } + checkSelectedTextAndShowMenu() + }) + + this.shadowRoot.getElementById('nmcRecipient').addEventListener('contextmenu', (event) => { + const getSelectedText = () => { + var text = '' + if (typeof window.getSelection != 'undefined') { + text = window.getSelection().toString() + } else if (typeof this.shadowRoot.selection != 'undefined' && this.shadowRoot.selection.type == 'Text') { + text = this.shadowRoot.selection.createRange().text + } + return text + } + const checkSelectedTextAndShowMenu = () => { + let selectedText = getSelectedText() + if (selectedText && typeof selectedText === 'string') { + } else { + this.pasteMenu(event, 'nmcRecipient') + this.isPasteMenuOpen = true + event.preventDefault() + event.stopPropagation() + } + } + checkSelectedTextAndShowMenu() + }) + + this.shadowRoot.getElementById('dashAmountInput').addEventListener('contextmenu', (event) => { + const getSelectedText = () => { + var text = '' + if (typeof window.getSelection != 'undefined') { + text = window.getSelection().toString() + } else if (typeof this.shadowRoot.selection != 'undefined' && this.shadowRoot.selection.type == 'Text') { + text = this.shadowRoot.selection.createRange().text + } + return text + } + const checkSelectedTextAndShowMenu = () => { + let selectedText = getSelectedText() + if (selectedText && typeof selectedText === 'string') { + } else { + this.pasteMenu(event, 'dashAmountInput') + this.isPasteMenuOpen = true + event.preventDefault() + event.stopPropagation() + } + } + checkSelectedTextAndShowMenu() + }) + + this.shadowRoot.getElementById('dashRecipient').addEventListener('contextmenu', (event) => { + const getSelectedText = () => { + var text = '' + if (typeof window.getSelection != 'undefined') { + text = window.getSelection().toString() + } else if (typeof this.shadowRoot.selection != 'undefined' && this.shadowRoot.selection.type == 'Text') { + text = this.shadowRoot.selection.createRange().text + } + return text + } + const checkSelectedTextAndShowMenu = () => { + let selectedText = getSelectedText() + if (selectedText && typeof selectedText === 'string') { + } else { + this.pasteMenu(event, 'dashRecipient') + this.isPasteMenuOpen = true + event.preventDefault() + event.stopPropagation() + } + } + checkSelectedTextAndShowMenu() + }) + + this.shadowRoot.getElementById('firoAmountInput').addEventListener('contextmenu', (event) => { + const getSelectedText = () => { + var text = '' + if (typeof window.getSelection != 'undefined') { + text = window.getSelection().toString() + } else if (typeof this.shadowRoot.selection != 'undefined' && this.shadowRoot.selection.type == 'Text') { + text = this.shadowRoot.selection.createRange().text + } + return text + } + const checkSelectedTextAndShowMenu = () => { + let selectedText = getSelectedText() + if (selectedText && typeof selectedText === 'string') { + } else { + this.pasteMenu(event, 'firoAmountInput') + this.isPasteMenuOpen = true + event.preventDefault() + event.stopPropagation() + } + } + checkSelectedTextAndShowMenu() + }) + + this.shadowRoot.getElementById('firoRecipient').addEventListener('contextmenu', (event) => { + const getSelectedText = () => { + var text = '' + if (typeof window.getSelection != 'undefined') { + text = window.getSelection().toString() + } else if (typeof this.shadowRoot.selection != 'undefined' && this.shadowRoot.selection.type == 'Text') { + text = this.shadowRoot.selection.createRange().text + } + return text + } + const checkSelectedTextAndShowMenu = () => { + let selectedText = getSelectedText() + if (selectedText && typeof selectedText === 'string') { + } else { + this.pasteMenu(event, 'firoRecipient') + this.isPasteMenuOpen = true + event.preventDefault() + event.stopPropagation() + } + } + checkSelectedTextAndShowMenu() }) } @@ -1864,6 +2434,24 @@ class MultiWallet extends LitElement { this.errorMessage = '' } + closeNmcDialog() { + this.shadowRoot.querySelector('#sendNmcDialog').close() + this.successMessage = '' + this.errorMessage = '' + } + + closeDashDialog() { + this.shadowRoot.querySelector('#sendDashDialog').close() + this.successMessage = '' + this.errorMessage = '' + } + + closeFiroDialog() { + this.shadowRoot.querySelector('#sendFiroDialog').close() + this.successMessage = '' + this.errorMessage = '' + } + renderFetchText() { return html`${translate("walletpage.wchange1")}` } @@ -2331,6 +2919,144 @@ class MultiWallet extends LitElement { this.showWallet() } + async sendNmc() { + const nmcAmount = this.shadowRoot.getElementById('nmcAmountInput').value + let nmcRecipient = this.shadowRoot.getElementById('nmcRecipient').value + const xprv58 = this.wallets.get(this._selectedWallet).wallet.derivedMasterPrivateKey + + this.sendMoneyLoading = true + this.btnDisable = true + + const makeRequest = async () => { + const opts = { + xprv58: xprv58, + receivingAddress: nmcRecipient, + namecoinAmount: nmcAmount, + feePerByte: (this.nmcFeePerByte / 1e8).toFixed(8), + } + const response = await parentEpml.request('sendNmc', opts) + return response + } + + const manageResponse = (response) => { + if (response.length === 64) { + this.shadowRoot.getElementById('nmcAmountInput').value = 0 + this.shadowRoot.getElementById('nmcRecipient').value = '' + this.errorMessage = '' + this.nmcRecipient = '' + this.nmcAmount = 0 + this.successMessage = this.renderSuccessText() + this.sendMoneyLoading = false + this.btnDisable = false + } else if (response === false) { + this.errorMessage = this.renderFailText() + this.sendMoneyLoading = false + this.btnDisable = false + throw new Error(txnResponse) + } else { + this.errorMessage = response.message + this.sendMoneyLoading = false + this.btnDisable = false + throw new Error(response) + } + } + const res = await makeRequest() + manageResponse(res) + this.showWallet() + } + + async sendDash() { + const dashAmount = this.shadowRoot.getElementById('dashAmountInput').value + let dashRecipient = this.shadowRoot.getElementById('dashRecipient').value + const xprv58 = this.wallets.get(this._selectedWallet).wallet.derivedMasterPrivateKey + + this.sendMoneyLoading = true + this.btnDisable = true + + const makeRequest = async () => { + const opts = { + xprv58: xprv58, + receivingAddress: dashRecipient, + dashAmount: dashAmount, + feePerByte: (this.dashFeePerByte / 1e8).toFixed(8), + } + const response = await parentEpml.request('sendDash', opts) + return response + } + + const manageResponse = (response) => { + if (response.length === 64) { + this.shadowRoot.getElementById('dashAmountInput').value = 0 + this.shadowRoot.getElementById('dashRecipient').value = '' + this.errorMessage = '' + this.dashRecipient = '' + this.dashAmount = 0 + this.successMessage = this.renderSuccessText() + this.sendMoneyLoading = false + this.btnDisable = false + } else if (response === false) { + this.errorMessage = this.renderFailText() + this.sendMoneyLoading = false + this.btnDisable = false + throw new Error(txnResponse) + } else { + this.errorMessage = response.message + this.sendMoneyLoading = false + this.btnDisable = false + throw new Error(response) + } + } + const res = await makeRequest() + manageResponse(res) + this.showWallet() + } + + async sendFiro() { + const firoAmount = this.shadowRoot.getElementById('firoAmountInput').value + let firoRecipient = this.shadowRoot.getElementById('firoRecipient').value + const xprv58 = this.wallets.get(this._selectedWallet).wallet.derivedMasterPrivateKey + + this.sendMoneyLoading = true + this.btnDisable = true + + const makeRequest = async () => { + const opts = { + xprv58: xprv58, + receivingAddress: firoRecipient, + firoAmount: firoAmount, + feePerByte: (this.firoFeePerByte / 1e8).toFixed(8), + } + const response = await parentEpml.request('sendFiro', opts) + return response + } + + const manageResponse = (response) => { + if (response.length === 64) { + this.shadowRoot.getElementById('firoAmountInput').value = 0 + this.shadowRoot.getElementById('firoRecipient').value = '' + this.errorMessage = '' + this.firoRecipient = '' + this.firoAmount = 0 + this.successMessage = this.renderSuccessText() + this.sendMoneyLoading = false + this.btnDisable = false + } else if (response === false) { + this.errorMessage = this.renderFailText() + this.sendMoneyLoading = false + this.btnDisable = false + throw new Error(txnResponse) + } else { + this.errorMessage = response.message + this.sendMoneyLoading = false + this.btnDisable = false + throw new Error(response) + } + } + const res = await makeRequest() + manageResponse(res) + this.showWallet() + } + async showWallet() { this.transactionsDOM.hidden = true this.loading = true @@ -2383,6 +3109,9 @@ class MultiWallet extends LitElement { case 'doge': case 'dgb': case 'rvn': + case 'nmc': + case 'dash': + case 'firo': const walletName = `${coin}Wallet` parentEpml.request('apiCall', { url: `/crosschain/${coin}/walletbalance?apiKey=${this.getApiKey()}`, @@ -2437,6 +3166,12 @@ class MultiWallet extends LitElement { return html` this.openSendDgb()}> ${translate("walletpage.wchange17")} DGB` } else if ( this._selectedWallet === "rvn" ) { return html` this.openSendRvn()}> ${translate("walletpage.wchange17")} RVN` + } else if ( this._selectedWallet === "nmc" ) { + return html` this.openSendNmc()}> ${translate("walletpage.wchange17")} NMC` + } else if ( this._selectedWallet === "dash" ) { + return html` this.openSendDash()}> ${translate("walletpage.wchange17")} DASH` + } else if ( this._selectedWallet === "firo" ) { + return html` this.openSendFiro()}> ${translate("walletpage.wchange17")} FIRO` } else { return html`` } @@ -2466,6 +3201,18 @@ class MultiWallet extends LitElement { this.shadowRoot.querySelector("#sendRvnDialog").show(); } + openSendNmc() { + this.shadowRoot.querySelector("#sendNmcDialog").show(); + } + + openSendDash() { + this.shadowRoot.querySelector("#sendDashDialog").show(); + } + + openSendFiro() { + this.shadowRoot.querySelector("#sendFiroDialog").show(); + } + changeTheme() { const checkTheme = localStorage.getItem('qortalTheme') if (checkTheme === 'dark') { @@ -2549,6 +3296,33 @@ class MultiWallet extends LitElement { }, { passive: true } ) + } else if (coin === 'nmc') { + this.transactionsGrid.addEventListener( + 'click', + (e) => { + let nmcItem = this.transactionsGrid.getEventContext(e).item + this.showNmcTransactionDetails(nmcItem, this.wallets.get(this._selectedWallet).transactions) + }, + { passive: true } + ) + } else if (coin === 'dash') { + this.transactionsGrid.addEventListener( + 'click', + (e) => { + let dashItem = this.transactionsGrid.getEventContext(e).item + this.showDashTransactionDetails(dashItem, this.wallets.get(this._selectedWallet).transactions) + }, + { passive: true } + ) + } else if (coin === 'firo') { + this.transactionsGrid.addEventListener( + 'click', + (e) => { + let firoItem = this.transactionsGrid.getEventContext(e).item + this.showFiroTransactionDetails(firoItem, this.wallets.get(this._selectedWallet).transactions) + }, + { passive: true } + ) } this.pagesControl = this.shadowRoot.querySelector('#pages') @@ -2568,6 +3342,12 @@ class MultiWallet extends LitElement { render(this.renderDgbTransactions(this.wallets.get(this._selectedWallet).transactions, this._selectedWallet), this.transactionsDOM) } else if (this._selectedWallet === 'rvn') { render(this.renderRvnTransactions(this.wallets.get(this._selectedWallet).transactions, this._selectedWallet), this.transactionsDOM) + } else if (this._selectedWallet === 'nmc') { + render(this.renderNmcTransactions(this.wallets.get(this._selectedWallet).transactions, this._selectedWallet), this.transactionsDOM) + } else if (this._selectedWallet === 'dash') { + render(this.renderDashTransactions(this.wallets.get(this._selectedWallet).transactions, this._selectedWallet), this.transactionsDOM) + } else if (this._selectedWallet === 'firo') { + render(this.renderFiroTransactions(this.wallets.get(this._selectedWallet).transactions, this._selectedWallet), this.transactionsDOM) } } @@ -2953,6 +3733,201 @@ class MultiWallet extends LitElement { ` } + renderNmcTransactions(transactions, coin) { + return html` +
${translate("walletpage.wchange38")}
+ + { + render(html`check`, root) + }} + > + + { + render(html` ${translate("walletpage.wchange40")} ${data.item.inputs[0].address === this.wallets.get(this._selectedWallet).wallet.address ? html`${translate("walletpage.wchange7")}` : html`${translate("walletpage.wchange8")}`} `, root) + }} + > + + { + render(html`${data.item.inputs[0].address}`, root) + }} + > + + { + render(html`${data.item.outputs[0].address}`, root) + }} + > + + + { + const amount = (Number(data.item.totalAmount) / 1e8).toFixed(8) + render(html`${amount}`, root) + }} + > + + { + const time = new Date(data.item.timestamp * 1000) + render(html` `, root) + }} + > + + +
+ ` + } + + renderDashTransactions(transactions, coin) { + return html` +
${translate("walletpage.wchange38")}
+ + { + render(html`check`, root) + }} + > + + { + render(html` ${translate("walletpage.wchange40")} ${data.item.inputs[0].address === this.wallets.get(this._selectedWallet).wallet.address ? html`${translate("walletpage.wchange7")}` : html`${translate("walletpage.wchange8")}`} `, root) + }} + > + + { + render(html`${data.item.inputs[0].address}`, root) + }} + > + + { + render(html`${data.item.outputs[0].address}`, root) + }} + > + + + { + const amount = (Number(data.item.totalAmount) / 1e8).toFixed(8) + render(html`${amount}`, root) + }} + > + + { + const time = new Date(data.item.timestamp * 1000) + render(html` `, root) + }} + > + + +
+ ` + } + + renderFiroTransactions(transactions, coin) { + return html` +
${translate("walletpage.wchange38")}
+ + { + render(html`check`, root) + }} + > + + { + render(html` ${translate("walletpage.wchange40")} ${data.item.inputs[0].address === this.wallets.get(this._selectedWallet).wallet.address ? html`${translate("walletpage.wchange7")}` : html`${translate("walletpage.wchange8")}`} `, root) + }} + > + + { + render(html`${data.item.inputs[0].address}`, root) + }} + > + + { + render(html`${data.item.outputs[0].address}`, root) + }} + > + + + { + const amount = (Number(data.item.totalAmount) / 1e8).toFixed(8) + render(html`${amount}`, root) + }} + > + + { + const time = new Date(data.item.timestamp * 1000) + render(html` `, root) + }} + > + + +
+ ` + } + async updateItemsFromPage(page, changeWallet = false) { if (page === undefined) { return @@ -3153,6 +4128,48 @@ class MultiWallet extends LitElement { }) } + showNmcTransactionDetails(myTransaction, allTransactions) { + allTransactions.forEach((transaction) => { + if (myTransaction.txHash === transaction.txHash) { + let nmcTxnFlow = myTransaction.inputs[0].address === this.wallets.get(this._selectedWallet).wallet.address ? 'OUT' : 'IN' + let nmcSender = myTransaction.inputs[0].address + let nmcReceiver = myTransaction.outputs[0].address + this.selectedTransaction = { ...transaction, nmcTxnFlow, nmcSender, nmcReceiver } + if (this.selectedTransaction.txHash.length != 0) { + this.shadowRoot.querySelector('#showNmcTransactionDetailsDialog').show() + } + } + }) + } + + showDashTransactionDetails(myTransaction, allTransactions) { + allTransactions.forEach((transaction) => { + if (myTransaction.txHash === transaction.txHash) { + let dashTxnFlow = myTransaction.inputs[0].address === this.wallets.get(this._selectedWallet).wallet.address ? 'OUT' : 'IN' + let dashSender = myTransaction.inputs[0].address + let dashReceiver = myTransaction.outputs[0].address + this.selectedTransaction = { ...transaction, dashTxnFlow, dashSender, dashReceiver } + if (this.selectedTransaction.txHash.length != 0) { + this.shadowRoot.querySelector('#showDashTransactionDetailsDialog').show() + } + } + }) + } + + showFiroTransactionDetails(myTransaction, allTransactions) { + allTransactions.forEach((transaction) => { + if (myTransaction.txHash === transaction.txHash) { + let firoTxnFlow = myTransaction.inputs[0].address === this.wallets.get(this._selectedWallet).wallet.address ? 'OUT' : 'IN' + let firoSender = myTransaction.inputs[0].address + let firoReceiver = myTransaction.outputs[0].address + this.selectedTransaction = { ...transaction, firoTxnFlow, firoSender, firoReceiver } + if (this.selectedTransaction.txHash.length != 0) { + this.shadowRoot.querySelector('#showFiroTransactionDetailsDialog').show() + } + } + }) + } + isEmptyArray(arr) { if (!arr) { return true