From f176f034d10698f399f422852da3a450d958e64d Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Mon, 22 Aug 2022 17:04:11 +0200 Subject: [PATCH] Update wallet-app.src.js --- .../plugins/core/wallet/wallet-app.src.js | 2161 ++++++++++++++--- 1 file changed, 1864 insertions(+), 297 deletions(-) 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 7aa2f937..dc3e209d 100644 --- a/qortal-ui-plugins/plugins/core/wallet/wallet-app.src.js +++ b/qortal-ui-plugins/plugins/core/wallet/wallet-app.src.js @@ -9,6 +9,9 @@ registerTranslateConfig({ import '../components/ButtonIconCopy.js' import '../components/QortalQrcodeGenerator.js' +import '../components/frag-file-input.js' +import FileSaver from 'file-saver' +import '@github/time-elements' import '@material/mwc-button' import '@material/mwc-checkbox' import '@material/mwc-dialog' @@ -25,7 +28,6 @@ import '@vaadin/button' import '@vaadin/grid' import '@vaadin/icon' import '@vaadin/icons' -import '@github/time-elements' const parentEpml = new Epml({ type: 'WINDOW', source: window.parent }) @@ -52,13 +54,12 @@ class MultiWallet extends LitElement { dogeAmount: { type: Number }, dgbRecipient: { type: String }, dgbAmount: { type: Number }, - rvnRecipient: { type: String }, + rvnRecipient: { type: String }, rvnAmount: { type: Number }, arrrRecipient: { type: String }, arrrAmount: { type: Number }, arrrMemo: { type: String }, errorMessage: { type: String }, - arrrWalletAddress: { type: String }, successMessage: { type: String }, sendMoneyLoading: { type: Boolean }, btnDisable: { type: Boolean }, @@ -69,7 +70,30 @@ class MultiWallet extends LitElement { dogeFeePerByte: { type: Number }, dgbFeePerByte: { type: Number }, rvnFeePerByte: { type: Number }, - balanceString: { type: String } + balanceString: { type: String }, + arrrWalletAddress: { type: String }, + exportErrorMessage: { type: String }, + qortBook: { type: Array }, + btcBook: { type: Array }, + ltcBook: { type: Array }, + dogeBook: { type: Array }, + dgbBook: { type: Array }, + rvnBook: { type: Array }, + arrrBook: { type: Array }, + qortBookName: { type: String }, + btcBookName: { type: String }, + ltcBookName: { type: String }, + dogeBookName: { type: String }, + dgbBookName: { type: String }, + rvnBookName: { type: String }, + arrrBookName: { type: String }, + qortBookAddress: { type: String }, + btcBookAddress: { type: String }, + ltcBookAddress: { type: String }, + dogeBookAddress: { type: String }, + dgbBookAddress: { type: String }, + rvnBookAddress: { type: String }, + arrrBookAddress: { type: String } } } @@ -85,6 +109,8 @@ class MultiWallet extends LitElement { --mdc-theme-secondary: var(--mdc-theme-primary); --mdc-theme-surface: var(--white); --mdc-dialog-content-ink-color: var(--black); + --mdc-dialog-min-width: 400px; + --mdc-dialog-max-width: 1024px; --paper-input-container-focus-color: var(--mdc-theme-primary); --lumo-primary-text-color: rgb(0, 167, 245); --lumo-primary-color-50pct: rgba(0, 167, 245, 0.5); @@ -200,6 +226,14 @@ class MultiWallet extends LitElement { word-break: break-all; } + .floatleft { + float: left; + } + + .floatright { + float: right; + } + .title { font-weight: 600; font-size: 12px; @@ -512,8 +546,20 @@ class MultiWallet extends LitElement { } .qrcode-pos { - margin-top: -180px; - margin-left: 800px; + margin-top: -175px; + margin-left: 450px; + } + + .send-pos { + margin-top: 20px; + margin-left: 20px; + width: 185px; + } + + .book-pos { + margin-top: -44px; + margin-left: 215px; + width: 185px; } @media (max-width: 863px) { @@ -610,12 +656,35 @@ class MultiWallet extends LitElement { this.theme = localStorage.getItem('qortalTheme') ? localStorage.getItem('qortalTheme') : 'light'; + this.exportErrorMessage = '' + this.qortBook = [] + this.btcBook = [] + this.ltcBook = [] + this.dogeBook = [] + this.dgbBook = [] + this.rvnBook = [] + this.arrrBook = [] + this.qortBookName = '' + this.btcBookName = '' + this.ltcBookName = '' + this.dogeBookName = '' + this.dgbBookName = '' + this.rvnBookName = '' + this.arrrBookName = '' + this.qortBookAddress = '' + this.btcBookAddress = '' + this.ltcBookAddress = '' + this.dogeBookAddress = '' + this.dgbBookAddress = '' + this.rvnBookAddress = '' + this.arrrBookAddress = '' + this.recipient = '' this.btcRecipient = '' this.ltcRecipient = '' this.dogeRecipient = '' this.dgbRecipient = '' - this.rvnRecipient = '' + this.rvnRecipient = '' this.arrrRecipient = '' this.arrrMemo = '' this.arrrWalletAddress = '' @@ -630,7 +699,7 @@ class MultiWallet extends LitElement { this.ltcAmount = 0 this.dogeAmount = 0 this.dgbAmount = 0 - this.rvnAmount = 0 + this.rvnAmount = 0 this.arrrAmount = 0 this.btcFeePerByte = 100 this.btcSatMinFee = 20 @@ -667,7 +736,7 @@ class MultiWallet extends LitElement { this.wallets.get('ltc').wallet = window.parent.reduxStore.getState().app.selectedAddress.ltcWallet 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('rvn').wallet = window.parent.reduxStore.getState().app.selectedAddress.rvnWallet this.wallets.get('arrr').wallet = window.parent.reduxStore.getState().app.selectedAddress.arrWallet this._selectedWallet = 'qort' @@ -750,11 +819,17 @@ class MultiWallet extends LitElement { - ${this.balanceString}

- ${this.renderSendButton()} + ${this.balanceString}
+
-
+
+ ${this.renderSendButton()} +
+
+ ${this.renderAddressbookButton()} +
+
@@ -831,7 +906,9 @@ class MultiWallet extends LitElement { ${translate("walletpage.wchange10")}
- ${this.selectedTransaction.btcReceiver} this.sendToBtcAddress()} title="${translate("walletpage.wchange46")}"> + ${this.selectedTransaction.btcReceiver} + this.sendToBtcAddress()} title="${translate("walletpage.wchange46")}"> + this.openAddBtcAddressDialog()} title="${translate("walletpage.wchange49")}">

${translate("walletpage.wchange12")} @@ -882,7 +959,9 @@ class MultiWallet extends LitElement { ${translate("walletpage.wchange10")}
- ${this.selectedTransaction.ltcReceiver} this.sendToLtcAddress()} title="${translate("walletpage.wchange46")}"> + ${this.selectedTransaction.ltcReceiver} + this.sendToLtcAddress()} title="${translate("walletpage.wchange46")}"> + this.openAddLtcAddressDialog()} title="${translate("walletpage.wchange49")}">

${translate("walletpage.wchange12")} @@ -934,7 +1013,9 @@ class MultiWallet extends LitElement { ${translate("walletpage.wchange10")}
- ${this.selectedTransaction.dogeReceiver} this.sendToDogeAddress()} title="${translate("walletpage.wchange46")}"> + ${this.selectedTransaction.dogeReceiver} + this.sendToDogeAddress()} title="${translate("walletpage.wchange46")}"> + this.openAddDogeAddressDialog()} title="${translate("walletpage.wchange49")}">

${translate("walletpage.wchange12")} @@ -985,7 +1066,9 @@ class MultiWallet extends LitElement { ${translate("walletpage.wchange10")}
- ${this.selectedTransaction.dgbReceiver} this.sendToDgbAddress()} title="${translate("walletpage.wchange46")}"> + ${this.selectedTransaction.dgbReceiver} + this.sendToDgbAddress()} title="${translate("walletpage.wchange46")}"> + this.openAddDgbAddressDialog()} title="${translate("walletpage.wchange49")}">

${translate("walletpage.wchange12")} @@ -1036,7 +1119,9 @@ class MultiWallet extends LitElement { ${translate("walletpage.wchange10")}
- ${this.selectedTransaction.rvnReceiver} this.sendToRvnAddress()} title="${translate("walletpage.wchange46")}"> + ${this.selectedTransaction.rvnReceiver} + this.sendToRvnAddress()} title="${translate("walletpage.wchange46")}"> + this.openAddRvnAddressDialog()} title="${translate("walletpage.wchange49")}">

${translate("walletpage.wchange12")} @@ -1086,9 +1171,12 @@ class MultiWallet extends LitElement {
${translate("walletpage.wchange10")}
-
+
${this.selectedTransaction.arrrReceiver} + this.sendToArrrAddress()} title="${translate("walletpage.wchange46")}"> + this.openAddArrrAddressDialog()} title="${translate("walletpage.wchange49")}">
+
${translate("walletpage.wchange12")}
@@ -1587,7 +1675,10 @@ class MultiWallet extends LitElement {

${translate("walletpage.wchange19")}:
- ${this.balanceString} + ${this.balanceString}
+ + this.calculateArrrAll()}> ${translate("walletpage.wchange45")} ARRR +
 

${translate("general.close")} -

- ` - } - - firstUpdated() { - this.changeTheme() - this.changeLanguage() + +
+ +

Qortal ${translate("walletpage.wchange47")}

+
+
${this.renderExportAddressbookButton()}
${this.renderImportAddressbookButton()}


+
+
+ + + + { + render(html`${this.renderSendFromQortAddressbookButton(data.item)}`, root); + }}> + + + ${this.isEmptyArray(this.qortBook) ? html` + ${translate("walletpage.wchange48")} + `: ''} + + ${translate("general.close")} + + this.openAddToQortAddressbook()} + > + ${translate("rewardsharepage.rchange14")} + +
- this.currencyBoxes = this.shadowRoot.querySelectorAll('.currency-box') - this.transactionsDOM = this.shadowRoot.getElementById('transactionsDOM') + +
+ +

Bitcoin ${translate("walletpage.wchange47")}

+
+
${this.renderExportAddressbookButton()}
${this.renderImportAddressbookButton()}


+
+
+ + + + { + render(html`${this.renderSendFromBtcAddressbookButton(data.item)}`, root); + }}> + + + ${this.isEmptyArray(this.btcBook) ? html` + ${translate("walletpage.wchange48")} + `: ''} + + ${translate("general.close")} + + this.openAddToBtcAddressbook()} + > + ${translate("rewardsharepage.rchange14")} + +
- this.currencyBoxes.forEach((currencyBox) => { - currencyBox.addEventListener('click', this.selectWallet) - }) + +
+ +

Litecoin ${translate("walletpage.wchange47")}

+
+
${this.renderExportAddressbookButton()}
${this.renderImportAddressbookButton()}


+
+
+ + + + { + render(html`${this.renderSendFromLtcAddressbookButton(data.item)}`, root); + }}> + + + ${this.isEmptyArray(this.ltcBook) ? html` + ${translate("walletpage.wchange48")} + `: ''} + + ${translate("general.close")} + + this.openAddToLtcAddressbook()} + > + ${translate("rewardsharepage.rchange14")} + +
- this.showWallet() + +
+ +

Dogecoin ${translate("walletpage.wchange47")}

+
+
${this.renderExportAddressbookButton()}
${this.renderImportAddressbookButton()}


+
+
+ + + + { + render(html`${this.renderSendFromDogeAddressbookButton(data.item)}`, root); + }}> + + + ${this.isEmptyArray(this.dogeBook) ? html` + ${translate("walletpage.wchange48")} + `: ''} + + ${translate("general.close")} + + this.openAddToDogeAddressbook()} + > + ${translate("rewardsharepage.rchange14")} + +
- window.addEventListener('contextmenu', (event) => { - event.preventDefault() - this.isTextMenuOpen = true - this._textMenu(event) - }) + +
+ +

Digibyte ${translate("walletpage.wchange47")}

+
+
${this.renderExportAddressbookButton()}
${this.renderImportAddressbookButton()}


+
+
+ + + + { + render(html`${this.renderSendFromDgbAddressbookButton(data.item)}`, root); + }}> + + + ${this.isEmptyArray(this.dgbBook) ? html` + ${translate("walletpage.wchange48")} + `: ''} + + ${translate("general.close")} + + this.openAddToDgbAddressbook()} + > + ${translate("rewardsharepage.rchange14")} + +
- window.addEventListener('click', () => { - if (this.isTextMenuOpen) { - parentEpml.request('closeCopyTextMenu', null) - } - }) + +
+ +

Ravencoin ${translate("walletpage.wchange47")}

+
+
${this.renderExportAddressbookButton()}
${this.renderImportAddressbookButton()}


+
+
+ + + + { + render(html`${this.renderSendFromRvnAddressbookButton(data.item)}`, root); + }}> + + + ${this.isEmptyArray(this.rvnBook) ? html` + ${translate("walletpage.wchange48")} + `: ''} + + ${translate("general.close")} + + this.openAddToRvnAddressbook()} + > + ${translate("rewardsharepage.rchange14")} + +
- window.addEventListener('storage', () => { - const checkLanguage = localStorage.getItem('qortalLanguage') - const checkTheme = localStorage.getItem('qortalTheme') - use(checkLanguage) + +
+ +

Pirate Chain ${translate("walletpage.wchange47")}

+
+
${this.renderExportAddressbookButton()}
${this.renderImportAddressbookButton()}


+
+
+ + + + { + render(html`${this.renderSendFromArrrAddressbookButton(data.item)}`, root); + }}> + + + ${this.isEmptyArray(this.arrrBook) ? html` + ${translate("walletpage.wchange48")} + `: ''} + + ${translate("general.close")} + + this.openAddToArrrAddressbook()} + > + ${translate("rewardsharepage.rchange14")} + +
- if (checkTheme === 'dark') { - this.theme = 'dark' - } else { - this.theme = 'light' - } - document.querySelector('html').setAttribute('theme', this.theme) - }) + +
+ +

Qortal ${translate("walletpage.wchange47")}


+

${translate("walletpage.wchange49")}

+
+
+
+
+

+ + +

+

+ + +

+
+
+
+ this.addToQortalAddressbook()}> + + ${translate("walletpage.wchange49")} + +
+
+ + ${translate("general.close")} + +
- window.onkeyup = (e) => { - if (e.keyCode === 27) { - parentEpml.request('closeCopyTextMenu', null) - } - } + +
+ +

Bitcoin ${translate("walletpage.wchange47")}


+

${translate("walletpage.wchange49")}

+
+
+
+
+

+ + +

+

+ + +

+
+
+
+ this.addToBitcoinAddressbook()}> + + ${translate("walletpage.wchange49")} + +
+
+ + ${translate("general.close")} + +
- this.shadowRoot.getElementById('amountInput').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, 'amountInput') - this.isPasteMenuOpen = true - event.preventDefault() - event.stopPropagation() - } - } - checkSelectedTextAndShowMenu() - }) + +
+ +

Litecoin ${translate("walletpage.wchange47")}


+

${translate("walletpage.wchange49")}

+
+
+
+
+

+ + +

+

+ + +

+
+
+
+ this.addToLitecoinAddressbook()}> + + ${translate("walletpage.wchange49")} + +
+
+ + ${translate("general.close")} + +
- this.shadowRoot.getElementById('recipient').addEventListener('contextmenu', (event) => { - const getSelectedText = () => { - var text = '' + +
+ +

Dogecoin ${translate("walletpage.wchange47")}


+

${translate("walletpage.wchange49")}

+
+
+
+
+

+ + +

+

+ + +

+
+
+
+ this.addToDogecoinAddressbook()}> + + ${translate("walletpage.wchange49")} + +
+
+ + ${translate("general.close")} + +
+ + +
+ +

Digibyte ${translate("walletpage.wchange47")}


+

${translate("walletpage.wchange49")}

+
+
+
+
+

+ + +

+

+ + +

+
+
+
+ this.addToDigibyteAddressbook()}> + + ${translate("walletpage.wchange49")} + +
+
+ + ${translate("general.close")} + +
+ + +
+ +

Ravencoin ${translate("walletpage.wchange47")}


+

${translate("walletpage.wchange49")}

+
+
+
+
+

+ + +

+

+ + +

+
+
+
+ this.addToRavencoinAddressbook()}> + + ${translate("walletpage.wchange49")} + +
+
+ + ${translate("general.close")} + +
+ + +
+ +

Pirate Chain ${translate("walletpage.wchange47")}


+

${translate("walletpage.wchange49")}

+
+
+
+
+

+ + +

+

+ + +

+
+
+
+ this.addToPiratechainAddressbook()}> + + ${translate("walletpage.wchange49")} + +
+
+ + ${translate("general.close")} + +
+ + +
+ +

Qortal ${translate("walletpage.wchange53")}


+
+
+
+
+ +

${translate("walletpage.wchange56")}

+
${translate("walletpage.wchange55")}
+
+ + ${translate("general.close")} + +
+ + +
+ +

Bitcoin ${translate("walletpage.wchange53")}


+
+
+
+
+ +

${translate("walletpage.wchange56")}

+
${translate("walletpage.wchange55")}
+
+ + ${translate("general.close")} + +
+ + +
+ +

Litecoin ${translate("walletpage.wchange53")}


+
+
+
+
+ +

${translate("walletpage.wchange56")}

+
${translate("walletpage.wchange55")}
+
+ + ${translate("general.close")} + +
+ + +
+ +

Dogecoin ${translate("walletpage.wchange53")}


+
+
+
+
+ +

${translate("walletpage.wchange56")}

+
${translate("walletpage.wchange55")}
+
+ + ${translate("general.close")} + +
+ + +
+ +

Digibyte ${translate("walletpage.wchange53")}


+
+
+
+
+ +

${translate("walletpage.wchange56")}

+
${translate("walletpage.wchange55")}
+
+ + ${translate("general.close")} + +
+ + +
+ +

Litecoin ${translate("walletpage.wchange53")}


+
+
+
+
+ +

${translate("walletpage.wchange56")}

+
${translate("walletpage.wchange55")}
+
+ + ${translate("general.close")} + +
+ + +
+ +

Pirate Chain ${translate("walletpage.wchange53")}


+
+
+
+
+ +

${translate("walletpage.wchange56")}

+
${translate("walletpage.wchange55")}
+
+ + ${translate("general.close")} + +
+
+ ` + } + + firstUpdated() { + + this.changeTheme() + this.changeLanguage() + this.qortAddressbook() + this.btcAddressbook() + this.ltcAddressbook() + this.dogeAddressbook() + this.dgbAddressbook() + this.rvnAddressbook() + this.arrrAddressbook() + + this.currencyBoxes = this.shadowRoot.querySelectorAll('.currency-box') + this.transactionsDOM = this.shadowRoot.getElementById('transactionsDOM') + + this.currencyBoxes.forEach((currencyBox) => { + currencyBox.addEventListener('click', this.selectWallet) + }) + + this.showWallet() + + window.addEventListener('contextmenu', (event) => { + event.preventDefault() + this.isTextMenuOpen = true + this._textMenu(event) + }) + + window.addEventListener('click', () => { + if (this.isTextMenuOpen) { + parentEpml.request('closeCopyTextMenu', null) + } + }) + + window.addEventListener('storage', () => { + const checkLanguage = localStorage.getItem('qortalLanguage') + const checkTheme = localStorage.getItem('qortalTheme') + + use(checkLanguage) + + if (checkTheme === 'dark') { + this.theme = 'dark' + } else { + this.theme = 'light' + } + document.querySelector('html').setAttribute('theme', this.theme) + }) + + window.onkeyup = (e) => { + if (e.keyCode === 27) { + parentEpml.request('closeCopyTextMenu', null) + } + } + + this.shadowRoot.getElementById('amountInput').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') { @@ -1731,7 +2535,7 @@ class MultiWallet extends LitElement { let selectedText = getSelectedText() if (selectedText && typeof selectedText === 'string') { } else { - this.pasteMenu(event, 'recipient') + this.pasteMenu(event, 'amountInput') this.isPasteMenuOpen = true event.preventDefault() event.stopPropagation() @@ -1740,7 +2544,7 @@ class MultiWallet extends LitElement { checkSelectedTextAndShowMenu() }) - this.shadowRoot.getElementById('btcAmountInput').addEventListener('contextmenu', (event) => { + this.shadowRoot.getElementById('recipient').addEventListener('contextmenu', (event) => { const getSelectedText = () => { var text = '' if (typeof window.getSelection != 'undefined') { @@ -1754,7 +2558,7 @@ class MultiWallet extends LitElement { let selectedText = getSelectedText() if (selectedText && typeof selectedText === 'string') { } else { - this.pasteMenu(event, 'btcAmountInput') + this.pasteMenu(event, 'recipient') this.isPasteMenuOpen = true event.preventDefault() event.stopPropagation() @@ -1763,7 +2567,7 @@ class MultiWallet extends LitElement { checkSelectedTextAndShowMenu() }) - this.shadowRoot.getElementById('btcRecipient').addEventListener('contextmenu', (event) => { + this.shadowRoot.getElementById('btcAmountInput').addEventListener('contextmenu', (event) => { const getSelectedText = () => { var text = '' if (typeof window.getSelection != 'undefined') { @@ -1777,7 +2581,7 @@ class MultiWallet extends LitElement { let selectedText = getSelectedText() if (selectedText && typeof selectedText === 'string') { } else { - this.pasteMenu(event, 'btcRecipient') + this.pasteMenu(event, 'btcAmountInput') this.isPasteMenuOpen = true event.preventDefault() event.stopPropagation() @@ -1786,7 +2590,30 @@ class MultiWallet extends LitElement { checkSelectedTextAndShowMenu() }) - this.shadowRoot.getElementById('ltcAmountInput').addEventListener('contextmenu', (event) => { + this.shadowRoot.getElementById('btcRecipient').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, 'btcRecipient') + this.isPasteMenuOpen = true + event.preventDefault() + event.stopPropagation() + } + } + checkSelectedTextAndShowMenu() + }) + + this.shadowRoot.getElementById('ltcAmountInput').addEventListener('contextmenu', (event) => { const getSelectedText = () => { var text = '' if (typeof window.getSelection != 'undefined') { @@ -1878,200 +2705,858 @@ class MultiWallet extends LitElement { checkSelectedTextAndShowMenu() }) - this.shadowRoot.getElementById('dgbAmountInput').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, 'dgbAmountInput') - this.isPasteMenuOpen = true - event.preventDefault() - event.stopPropagation() - } - } - checkSelectedTextAndShowMenu() - }) + this.shadowRoot.getElementById('dgbAmountInput').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, 'dgbAmountInput') + this.isPasteMenuOpen = true + event.preventDefault() + event.stopPropagation() + } + } + checkSelectedTextAndShowMenu() + }) + + this.shadowRoot.getElementById('dgbRecipient').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, 'dgbRecipient') + this.isPasteMenuOpen = true + event.preventDefault() + event.stopPropagation() + } + } + checkSelectedTextAndShowMenu() + }) + + this.shadowRoot.getElementById('rvnAmountInput').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, 'rvnAmountInput') + this.isPasteMenuOpen = true + event.preventDefault() + event.stopPropagation() + } + } + checkSelectedTextAndShowMenu() + }) + + this.shadowRoot.getElementById('rvnRecipient').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, 'rvnRecipient') + this.isPasteMenuOpen = true + event.preventDefault() + event.stopPropagation() + } + } + checkSelectedTextAndShowMenu() + }) + + this.shadowRoot.getElementById('arrrAmountInput').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, 'arrrAmountInput') + this.isPasteMenuOpen = true + event.preventDefault() + event.stopPropagation() + } + } + checkSelectedTextAndShowMenu() + }) + + this.shadowRoot.getElementById('arrrRecipient').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, 'arrrRecipient') + this.isPasteMenuOpen = true + event.preventDefault() + event.stopPropagation() + } + } + checkSelectedTextAndShowMenu() + }) + + this.shadowRoot.getElementById('arrrMemo').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, 'arrrMemo') + this.isPasteMenuOpen = true + event.preventDefault() + event.stopPropagation() + } + } + checkSelectedTextAndShowMenu() + }) + } + + renderClearSuccess() { + let strSuccessValue = this.successMessage + if (strSuccessValue === "") { + return html`` + } else { + return html` +
+ ${this.successMessage} + +
+
+

${translate("walletpage.wchange43")}

+
+ ` + } + } + + renderClearError() { + let strErrorValue = this.errorMessage + if (strErrorValue === "") { + return html`` + } else { + return html` +
+ ${this.errorMessage} + +
+
+

${translate("walletpage.wchange44")}

+
+ ` + } + } + + qortAddressbook() { + if (localStorage.getItem("addressbookQort") === null) { + localStorage.setItem("addressbookQort", "") + } else { + this.qortBook = JSON.parse(localStorage.getItem("addressbookQort") || "[]") + } + } + + btcAddressbook() { + if (localStorage.getItem("addressbookBtc") === null) { + localStorage.setItem("addressbookBtc", "") + } else { + this.btcBook = JSON.parse(localStorage.getItem("addressbookBtc") || "[]") + } + } + + ltcAddressbook() { + if (localStorage.getItem("addressbookLtc") === null) { + localStorage.setItem("addressbookLtc", "") + } else { + this.ltcBook = JSON.parse(localStorage.getItem("addressbookLtc") || "[]") + } + } + + dogeAddressbook() { + if (localStorage.getItem("addressbookDoge") === null) { + localStorage.setItem("addressbookDoge", "") + } else { + this.dogeBook = JSON.parse(localStorage.getItem("addressbookDoge") || "[]") + } + } + + dgbAddressbook() { + if (localStorage.getItem("addressbookDgb") === null) { + localStorage.setItem("addressbookDgb", "") + } else { + this.dgbBook = JSON.parse(localStorage.getItem("addressbookDgb") || "[]") + } + } + + rvnAddressbook() { + if (localStorage.getItem("addressbookRvn") === null) { + localStorage.setItem("addressbookRvn", "") + } else { + this.rvnBook = JSON.parse(localStorage.getItem("addressbookRvn") || "[]") + } + } + + arrrAddressbook() { + if (localStorage.getItem("addressbookArrr") === null) { + localStorage.setItem("addressbookArrr", "") + } else { + this.arrrBook = JSON.parse(localStorage.getItem("addressbookArrr") || "[]") + } + } + + openQortAddressbook() { + this.shadowRoot.querySelector("#qortBookDialog").show() + } + + openBtcAddressbook() { + this.shadowRoot.querySelector("#btcBookDialog").show() + } + + openLtcAddressbook() { + this.shadowRoot.querySelector("#ltcBookDialog").show() + } + + openDogeAddressbook() { + this.shadowRoot.querySelector("#dogeBookDialog").show() + } + + openDgbAddressbook() { + this.shadowRoot.querySelector("#dgbBookDialog").show() + } + + openRvnAddressbook() { + this.shadowRoot.querySelector("#rvnBookDialog").show() + } + + openArrrAddressbook() { + this.shadowRoot.querySelector("#arrrBookDialog").show() + } + + openAddQortAddressDialog() { + this.qortBookAddress = this.selectedTransaction.recipient + this.openAddToQortAddressbook() + this.shadowRoot.querySelector('#showTransactionDetailsDialog').close() + } + + openAddBtcAddressDialog() { + this.btcBookAddress = this.selectedTransaction.btcReceiver + this.openAddToBtcAddressbook() + this.shadowRoot.querySelector('#showBtcTransactionDetailsDialog').close() + } + + openAddLtcAddressDialog() { + this.ltcBookAddress = this.selectedTransaction.ltcReceiver + this.openAddToLtcAddressbook() + this.shadowRoot.querySelector('#showLtcTransactionDetailsDialog').close() + } + + openAddDogeAddressDialog() { + this.dogeBookAddress = this.selectedTransaction.dogeReceiver + this.openAddToDogeAddressbook() + this.shadowRoot.querySelector('#showDogeTransactionDetailsDialog').close() + } + + openAddDgbAddressDialog() { + this.dgbBookAddress = this.selectedTransaction.dgbReceiver + this.openAddToDgbAddressbook() + this.shadowRoot.querySelector('#showDgbTransactionDetailsDialog').close() + } + + openAddRvnAddressDialog() { + this.rvnBookAddress = this.selectedTransaction.rvnReceiver + this.openAddToRvnAddressbook() + this.shadowRoot.querySelector('#showRvnTransactionDetailsDialog').close() + } + + openAddArrrAddressDialog() { + this.arrrBookAddress = this.selectedTransaction.arrrReceiver + this.openAddToArrrAddressbook() + this.shadowRoot.querySelector('#showArrrTransactionDetailsDialog').close() + } + + openAddToQortAddressbook() { + this.shadowRoot.querySelector("#addQortAddressDialog").show() + } + + openAddToBtcAddressbook() { + this.shadowRoot.querySelector("#addBtcAddressDialog").show() + } + + openAddToLtcAddressbook() { + this.shadowRoot.querySelector("#addLtcAddressDialog").show() + } + + openAddToDogeAddressbook() { + this.shadowRoot.querySelector("#addDogeAddressDialog").show() + } + + openAddToDgbAddressbook() { + this.shadowRoot.querySelector("#addDgbAddressDialog").show() + } + + openAddToRvnAddressbook() { + this.shadowRoot.querySelector("#addRvnAddressDialog").show() + } + + openAddToArrrAddressbook() { + this.shadowRoot.querySelector("#addArrrAddressDialog").show() + } + + openImportQortAddressbook() { + this.shadowRoot.querySelector("#importQortAddressbookDialog").show() + } + + openImportBtcAddressbook() { + this.shadowRoot.querySelector("#importBtcAddressbookDialog").show() + } + + openImportLtcAddressbook() { + this.shadowRoot.querySelector("#importLtcAddressbookDialog").show() + } + + openImportDogeAddressbook() { + this.shadowRoot.querySelector("#importDogeAddressbookDialog").show() + } + + openImportDgbAddressbook() { + this.shadowRoot.querySelector("#importDgbAddressbookDialog").show() + } + + openImportRvnAddressbook() { + this.shadowRoot.querySelector("#importRvnAddressbookDialog").show() + } + + openImportArrrAddressbook() { + this.shadowRoot.querySelector("#importArrrAddressbookDialog").show() + } + + closeQortAddressDialog() { + this.shadowRoot.querySelector('#addQortAddressDialog').close() + } + + closeBtcAddressDialog() { + this.shadowRoot.querySelector('#addBtcAddressDialog').close() + } + + closeLtcAddressDialog() { + this.shadowRoot.querySelector('#addLtcAddressDialog').close() + } + + closeDogeAddressDialog() { + this.shadowRoot.querySelector('#addDogeAddressDialog').close() + } + + closeDgbAddressDialog() { + this.shadowRoot.querySelector('#addDgbAddressDialog').close() + } + + closeRvnAddressDialog() { + this.shadowRoot.querySelector('#addRvnAddressDialog').close() + } + + closeArrrAddressDialog() { + this.shadowRoot.querySelector('#addArrrAddressDialog').close() + } + + closeImportQortAddressbookDialog() { + this.shadowRoot.querySelector("#importQortAddressbookDialog").close() + } + + closeImportBtcAddressbookDialog() { + this.shadowRoot.querySelector("#importBtcAddressbookDialog").close() + } + + closeImportLtcAddressbookDialog() { + this.shadowRoot.querySelector("#importLtcAddressbookDialog").close() + } + + closeImportDogeAddressbookDialog() { + this.shadowRoot.querySelector("#importDogeAddressbookDialog").close() + } + + closeImportDgbAddressbookDialog() { + this.shadowRoot.querySelector("#importDgbAddressbookDialog").close() + } + + closeImportRvnAddressbookDialog() { + this.shadowRoot.querySelector("#importRvnAddressbookDialog").close() + } + + closeImportArrrAddressbookDialog() { + this.shadowRoot.querySelector("#importArrrAddressbookDialog").close() + } + + addToQortalAddressbook() { + let name = this.shadowRoot.getElementById('qortNameInput').value + let address = this.shadowRoot.getElementById('qortAddressInput').value + + var oldQortalBook = JSON.parse(localStorage.getItem("addressbookQort") || "[]") + + if (name.length === 0) { + let qortbookstring1 = get("walletpage.wchange50") + parentEpml.request('showSnackBar', `${qortbookstring1}`) + return false + } + + if (address.length === 0) { + let qortbookstring2 = get("walletpage.wchange51") + parentEpml.request('showSnackBar', `${qortbookstring2}`) + return false + } + + const newQortalBookItem = { + name: name, + address: address + } + + oldQortalBook.push(newQortalBookItem) + + localStorage.setItem("addressbookQort", JSON.stringify(oldQortalBook)) + + let qortbookstring2 = get("walletpage.wchange52") + parentEpml.request('showSnackBar', `${qortbookstring2}`) + + this.closeQortAddressDialog() + this.qortBook = JSON.parse(localStorage.getItem("addressbookQort") || "[]") + } + + addToBitcoinAddressbook() { + let name = this.shadowRoot.getElementById('btcNameInput').value + let address = this.shadowRoot.getElementById('btcAddressInput').value + + var oldBitcoinBook = JSON.parse(localStorage.getItem("addressbookBtc") || "[]") + + if (name.length === 0) { + let btcbookstring1 = get("walletpage.wchange50") + parentEpml.request('showSnackBar', `${btcbookstring1}`) + return false + } + + if (address.length === 0) { + let btcbookstring2 = get("walletpage.wchange51") + parentEpml.request('showSnackBar', `${btcbookstring2}`) + return false + } + + const newBitcoinBookItem = { + name: name, + address: address + } + + oldBitcoinBook.push(newBitcoinBookItem) + + localStorage.setItem("addressbookBtc", JSON.stringify(oldBitcoinBook)) + + let btcbookstring3 = get("walletpage.wchange52") + parentEpml.request('showSnackBar', `${btcbookstring3}`) + + this.closeBtcAddressDialog() + this.btcBook = JSON.parse(localStorage.getItem("addressbookBtc") || "[]") + } + + addToLitecoinAddressbook() { + let name = this.shadowRoot.getElementById('ltcNameInput').value + let address = this.shadowRoot.getElementById('ltcAddressInput').value + + var oldLitecoinBook = JSON.parse(localStorage.getItem("addressbookLtc") || "[]") + + if (name.length === 0) { + let ltcbookstring1 = get("walletpage.wchange50") + parentEpml.request('showSnackBar', `${ltcbookstring1}`) + return false + } + + if (address.length === 0) { + let ltcbookstring2 = get("walletpage.wchange51") + parentEpml.request('showSnackBar', `${ltcbookstring2}`) + return false + } + + const newLitecoinBookItem = { + name: name, + address: address + } + + oldLitecoinBook.push(newLitecoinBookItem) + + localStorage.setItem("addressbookLtc", JSON.stringify(oldLitecoinBook)) + + let ltcbookstring3 = get("walletpage.wchange52") + parentEpml.request('showSnackBar', `${ltcbookstring3}`) + + this.closeLtcAddressDialog() + this.ltcBook = JSON.parse(localStorage.getItem("addressbookLtc") || "[]") + } + + addToDogecoinAddressbook() { + let name = this.shadowRoot.getElementById('dogeNameInput').value + let address = this.shadowRoot.getElementById('dogeAddressInput').value + + var oldDogecoinBook = JSON.parse(localStorage.getItem("addressbookDoge") || "[]") + + if (name.length === 0) { + let dogebookstring1 = get("walletpage.wchange50") + parentEpml.request('showSnackBar', `${dogebookstring1}`) + return false + } + + if (address.length === 0) { + let dogebookstring2 = get("walletpage.wchange51") + parentEpml.request('showSnackBar', `${dogebookstring2}`) + return false + } + + const newDogecoinBookItem = { + name: name, + address: address + } + + oldDogecoinBook.push(newDogecoinBookItem) + + localStorage.setItem("addressbookDoge", JSON.stringify(oldDogecoinBook)) + + let dogebookstring3 = get("walletpage.wchange52") + parentEpml.request('showSnackBar', `${dogebookstring3}`) + + this.closeDogeAddressDialog() + this.dogeBook = JSON.parse(localStorage.getItem("addressbookDoge") || "[]") + } + + addToDigibyteAddressbook() { + let name = this.shadowRoot.getElementById('dgbNameInput').value + let address = this.shadowRoot.getElementById('dgbAddressInput').value + + var oldDigibyteBook = JSON.parse(localStorage.getItem("addressbookDgb") || "[]") + + if (name.length === 0) { + let dgbbookstring1 = get("walletpage.wchange50") + parentEpml.request('showSnackBar', `${dgbbookstring1}`) + return false + } + + if (address.length === 0) { + let dgbbookstring2 = get("walletpage.wchange51") + parentEpml.request('showSnackBar', `${dgbbookstring2}`) + return false + } + + const newDigibyteBookItem = { + name: name, + address: address + } + + oldDigibyteBook.push(newDigibyteBookItem) + + localStorage.setItem("addressbookDgb", JSON.stringify(oldDigibyteBook)) + + let dgbbookstring3 = get("walletpage.wchange52") + parentEpml.request('showSnackBar', `${dgbbookstring3}`) + + this.closeDgbAddressDialog() + this.dgbBook = JSON.parse(localStorage.getItem("addressbookDgb") || "[]") + } + + addToRavencoinAddressbook() { + let name = this.shadowRoot.getElementById('rvnNameInput').value + let address = this.shadowRoot.getElementById('rvnAddressInput').value + + var oldRavencoinBook = JSON.parse(localStorage.getItem("addressbookRvn") || "[]") + + if (name.length === 0) { + let rvnbookstring1 = get("walletpage.wchange50") + parentEpml.request('showSnackBar', `${rvnbookstring1}`) + return false + } + + if (address.length === 0) { + let rvnbookstring2 = get("walletpage.wchange51") + parentEpml.request('showSnackBar', `${rvnbookstring2}`) + return false + } + + const newRavencoinBookItem = { + name: name, + address: address + } + + oldRavencoinBook.push(newRavencoinBookItem) + + localStorage.setItem("addressbookRvn", JSON.stringify(oldRavencoinBook)) + + let rvnbookstring3 = get("walletpage.wchange52") + parentEpml.request('showSnackBar', `${rvnbookstring3}`) + + this.closeRvnAddressDialog() + this.rvnBook = JSON.parse(localStorage.getItem("addressbookRvn") || "[]") + } + + addToPiratechainAddressbook() { + let name = this.shadowRoot.getElementById('arrrNameInput').value + let address = this.shadowRoot.getElementById('arrrAddressInput').value + + var oldPiratechainBook = JSON.parse(localStorage.getItem("addressbookArrr") || "[]") + + if (name.length === 0) { + let arrrbookstring1 = get("walletpage.wchange50") + parentEpml.request('showSnackBar', `${arrrbookstring1}`) + return false + } + + if (address.length === 0) { + let arrrbookstring2 = get("walletpage.wchange51") + parentEpml.request('showSnackBar', `${arrrbookstring2}`) + return false + } + + const newPiratechainBookItem = { + name: name, + address: address + } + + oldPiratechainBook.push(newPiratechainBookItem) + + localStorage.setItem("addressbookArrr", JSON.stringify(oldPiratechainBook)) + + let arrrbookstring3 = get("walletpage.wchange52") + parentEpml.request('showSnackBar', `${arrrbookstring3}`) + + this.closeArrrAddressDialog() + this.arrrBook = JSON.parse(localStorage.getItem("addressbookArrr") || "[]") + } + + sendFromQortAddressbook(websiteObj) { + let address = websiteObj.address + this.recipient = address + this.openSendQort() + this.shadowRoot.querySelector('#qortBookDialog').close() + } + + sendFromBtcAddressbook(websiteObj) { + let address = websiteObj.address + this.btcRecipient = address + this.openSendBtc() + this.shadowRoot.querySelector('#btcBookDialog').close() + } + + sendFromLtcAddressbook(websiteObj) { + let address = websiteObj.address + this.ltcRecipient = address + this.openSendLtc() + this.shadowRoot.querySelector('#ltcBookDialog').close() + } + + sendFromDogeAddressbook(websiteObj) { + let address = websiteObj.address + this.dogeRecipient = address + this.openSendDoge() + this.shadowRoot.querySelector('#dogeBookDialog').close() + } + + sendFromDgbAddressbook(websiteObj) { + let address = websiteObj.address + this.dgbRecipient = address + this.openSendDgb() + this.shadowRoot.querySelector('#dgbBookDialog').close() + } + + sendFromRvnAddressbook(websiteObj) { + let address = websiteObj.address + this.rvnRecipient = address + this.openSendRvn() + this.shadowRoot.querySelector('#rvnBookDialog').close() + } + + sendFromArrrAddressbook(websiteObj) { + let address = websiteObj.address + this.arrrRecipient = address + this.openSendArrr() + this.shadowRoot.querySelector('#arrrBookDialog').close() + } + + renderSendFromQortAddressbookButton(websiteObj) { + return html`` + } + + renderSendFromBtcAddressbookButton(websiteObj) { + return html`` + } + + renderSendFromLtcAddressbookButton(websiteObj) { + return html`` + } + + renderSendFromDogeAddressbookButton(websiteObj) { + return html`` + } + + renderSendFromDgbAddressbookButton(websiteObj) { + return html`` + } + + renderSendFromRvnAddressbookButton(websiteObj) { + return html`` + } + + renderSendFromArrrAddressbookButton(websiteObj) { + return html`` + } + + exportQortAddressbook() { + const qortBookData = JSON.stringify(localStorage.getItem("addressbookQort")) + const qortBookSave = JSON.parse((qortBookData) || "[]") + const blob = new Blob([qortBookSave], { type: 'text/plain;charset=utf-8' }) + FileSaver.saveAs(blob, `qortal_addressbook.qort.json`) + } + + exportBtcAddressbook() { + const btcBookData = JSON.stringify(localStorage.getItem("addressbookBtc")) + const btcBookSave = JSON.parse((btcBookData) || "[]") + const blob = new Blob([btcBookSave], { type: 'text/plain;charset=utf-8' }) + FileSaver.saveAs(blob, `bitcoin_addressbook.btc.json`) + } - this.shadowRoot.getElementById('dgbRecipient').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, 'dgbRecipient') - this.isPasteMenuOpen = true - event.preventDefault() - event.stopPropagation() - } - } - checkSelectedTextAndShowMenu() - }) + exportLtcAddressbook() { + const ltcBookData = JSON.stringify(localStorage.getItem("addressbookLtc")) + const ltcBookSave = JSON.parse((ltcBookData) || "[]") + const blob = new Blob([ltcBookSave], { type: 'text/plain;charset=utf-8' }) + FileSaver.saveAs(blob, `litecoin_addressbook.ltc.json`) + } - this.shadowRoot.getElementById('rvnAmountInput').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, 'dgbRecipient') - this.isPasteMenuOpen = true - event.preventDefault() - event.stopPropagation() - } - } - checkSelectedTextAndShowMenu() - }) + exportDogeAddressbook() { + const dogeBookData = JSON.stringify(localStorage.getItem("addressbookDoge")) + const dogeBookSave = JSON.parse((dogeBookData) || "[]") + const blob = new Blob([dogeBookSave], { type: 'text/plain;charset=utf-8' }) + FileSaver.saveAs(blob, `dogecoin_addressbook.doge.json`) + } - this.shadowRoot.getElementById('rvnAmountInput').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, 'rvnAmountInput') - this.isPasteMenuOpen = true - event.preventDefault() - event.stopPropagation() - } - } - checkSelectedTextAndShowMenu() - }) + exportDgbAddressbook() { + const dgbBookData = JSON.stringify(localStorage.getItem("addressbookDgb")) + const dgbBookSave = JSON.parse((dgbBookData) || "[]") + const blob = new Blob([dgbBookSave], { type: 'text/plain;charset=utf-8' }) + FileSaver.saveAs(blob, `digibyte_addressbook.dgb.json`) + } - this.shadowRoot.getElementById('arrrAmountInput').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, 'arrrAmountInput') - this.isPasteMenuOpen = true - event.preventDefault() - event.stopPropagation() - } - } - checkSelectedTextAndShowMenu() - }) + exportRvnAddressbook() { + const rvnBookData = JSON.stringify(localStorage.getItem("addressbookRvn")) + const rvnBookSave = JSON.parse((rvnBookData) || "[]") + const blob = new Blob([rvnBookSave], { type: 'text/plain;charset=utf-8' }) + FileSaver.saveAs(blob, `ravencoin_addressbook.rvn.json`) + } - this.shadowRoot.getElementById('arrrRecipient').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, 'arrrRecipient') - this.isPasteMenuOpen = true - event.preventDefault() - event.stopPropagation() - } - } - checkSelectedTextAndShowMenu() - }) + exportArrrAddressbook() { + const arrrBookData = JSON.stringify(localStorage.getItem("addressbookArrr")) + const arrrBookSave = JSON.parse((arrrBookData) || "[]") + const blob = new Blob([arrrBookSave], { type: 'text/plain;charset=utf-8' }) + FileSaver.saveAs(blob, `piratechain_addressbook.arrr.json`) + } - this.shadowRoot.getElementById('arrrMemo').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, 'arrrMemo') - this.isPasteMenuOpen = true - event.preventDefault() - event.stopPropagation() - } - } - checkSelectedTextAndShowMenu() - }) + importQortAddressbook(file) { + localStorage.removeItem("addressbookQort") + const newItems = JSON.parse((file) || "[]") + localStorage.setItem("addressbookQort", JSON.stringify(newItems)) + this.qortBook = JSON.parse(localStorage.getItem("addressbookQort") || "[]") + this.shadowRoot.querySelector('#importQortAddressbookDialog').close() } - renderClearSuccess() { - let strSuccessValue = this.successMessage - if (strSuccessValue === "") { - return html`` - } else { - return html` -
- ${this.successMessage} - -
-
-

${translate("walletpage.wchange43")}

-
- ` - } + importBtcAddressbook(file) { + localStorage.removeItem("addressbookBtc") + const newItems = JSON.parse((file) || "[]") + localStorage.setItem("addressbookBtc", JSON.stringify(newItems)) + this.btcBook = JSON.parse(localStorage.getItem("addressbookBtc") || "[]") + this.shadowRoot.querySelector('#importBtcAddressbookDialog').close() } - renderClearError() { - let strErrorValue = this.errorMessage - if (strErrorValue === "") { - return html`` - } else { - return html` -
- ${this.errorMessage} - -
-
-

${translate("walletpage.wchange44")}

-
- ` - } + importLtcAddressbook(file) { + localStorage.removeItem("addressbookLtc") + const newItems = JSON.parse((file) || "[]") + localStorage.setItem("addressbookLtc", JSON.stringify(newItems)) + this.ltcBook = JSON.parse(localStorage.getItem("addressbookLtc") || "[]") + this.shadowRoot.querySelector('#importLtcAddressbookDialog').close() + } + + importDogeAddressbook(file) { + localStorage.removeItem("addressbookDoge") + const newItems = JSON.parse((file) || "[]") + localStorage.setItem("addressbookDoge", JSON.stringify(newItems)) + this.dogeBook = JSON.parse(localStorage.getItem("addressbookDoge") || "[]") + this.shadowRoot.querySelector('#importDogeAddressbookDialog').close() + } + + importDgbAddressbook(file) { + localStorage.removeItem("addressbookDgb") + const newItems = JSON.parse((file) || "[]") + localStorage.setItem("addressbookDgb", JSON.stringify(newItems)) + this.dgbBook = JSON.parse(localStorage.getItem("addressbookDgb") || "[]") + this.shadowRoot.querySelector('#importDgbAddressbookDialog').close() + } + + importRvnAddressbook(file) { + localStorage.removeItem("addressbookRvn") + const newItems = JSON.parse((file) || "[]") + localStorage.setItem("addressbookRvn", JSON.stringify(newItems)) + this.rvnBook = JSON.parse(localStorage.getItem("addressbookRvn") || "[]") + this.shadowRoot.querySelector('#importRvnAddressbookDialog').close() + } + + importArrrAddressbook(file) { + localStorage.removeItem("addressbookArrr") + const newItems = JSON.parse((file) || "[]") + localStorage.setItem("addressbookArrr", JSON.stringify(newItems)) + this.arrrBook = JSON.parse(localStorage.getItem("addressbookArrr") || "[]") + this.shadowRoot.querySelector('#importArrrAddressbookDialog').close() } closeQortDialog() { @@ -2110,6 +3595,12 @@ class MultiWallet extends LitElement { this.errorMessage = '' } + closeArrrDialog() { + this.shadowRoot.querySelector('#sendArrrDialog').close() + this.successMessage = '' + this.errorMessage = '' + } + sendToQortAddress() { this.recipient = this.selectedTransaction.recipient this.openSendQort() @@ -2146,6 +3637,12 @@ class MultiWallet extends LitElement { this.shadowRoot.querySelector('#showRvnTransactionDetailsDialog').close() } + sendToArrrAddress() { + this.arrrRecipient = this.selectedTransaction.arrrReceiver + this.openSendArrr() + this.shadowRoot.querySelector('#showArrrTransactionDetailsDialog').close() + } + calculateQortAll() { if (this.balance < 0.00100000) { let not_enough_string = get("walletpage.wchange26") @@ -2205,12 +3702,25 @@ class MultiWallet extends LitElement { } } + calculateArrrAll() { + if (this.balance < 0.00000002) { + let not_enough_string = get("walletpage.wchange26") + parentEpml.request('showSnackBar', `${not_enough_string}`) + } else { + this.arrrAmount = (this.balance - 0.00000001).toFixed(8) + } + } + renderSQB() { let displaybutton = this.selectedTransaction.recipient if (displaybutton == null) { return html`${this.selectedTransaction.recipient}` } else { - return html`${this.selectedTransaction.recipient} this.sendToQortAddress()} title="${translate("walletpage.wchange46")}">` + return html` + ${this.selectedTransaction.recipient} + this.sendToQortAddress()} title="${translate("walletpage.wchange46")}"> + this.openAddQortAddressDialog()} title="${translate("walletpage.wchange49")}"> + ` } } @@ -2635,7 +4145,7 @@ class MultiWallet extends LitElement { this.showWallet() } - async sendRvn() { + async sendRvn() { const rvnAmount = this.shadowRoot.getElementById('rvnAmountInput').value let rvnRecipient = this.shadowRoot.getElementById('rvnRecipient').value const xprv58 = this.wallets.get(this._selectedWallet).wallet.derivedMasterPrivateKey @@ -2696,7 +4206,6 @@ class MultiWallet extends LitElement { receivingAddress: arrrRecipient, arrrAmount: arrrAmount, memo: arrrMemo - //feePerByte: (this.arrrFeePerByte / 1e8).toFixed(8), // Not supported in ARRR } const response = await parentEpml.request('sendArrr', opts) return response @@ -2742,7 +4251,6 @@ class MultiWallet extends LitElement { } } const coin = this._selectedWallet - await this.fetchWalletAddress(this._selectedWallet) await this.fetchWalletDetails(this._selectedWallet) if (this._selectedWallet == coin) { await this.renderTransactions() @@ -2754,9 +4262,9 @@ class MultiWallet extends LitElement { } async fetchWalletDetails(coin) { + this.balanceString = this.renderFetchText() switch (coin) { case 'qort': - this.balanceString = this.renderFetchText() parentEpml.request('apiCall', { url: `/addresses/balance/${this.wallets.get('qort').wallet.address}?apiKey=${this.getApiKey()}`, }) @@ -2787,7 +4295,6 @@ class MultiWallet extends LitElement { case 'doge': case 'dgb': case 'rvn': - this.balanceString = this.renderFetchText() const walletName = `${coin}Wallet` parentEpml.request('apiCall', { url: `/crosschain/${coin}/walletbalance?apiKey=${this.getApiKey()}`, @@ -2910,19 +4417,79 @@ class MultiWallet extends LitElement { renderSendButton() { if ( this._selectedWallet === "qort" ) { - return html` this.openSendQort()}> ${translate("walletpage.wchange17")} QORT` + return html` this.openSendQort()}> ${translate("walletpage.wchange17")} QORT` + } else if ( this._selectedWallet === "btc" ) { + return html` this.openSendBtc()}> ${translate("walletpage.wchange17")} BTC` + } else if ( this._selectedWallet === "ltc" ) { + return html` this.openSendLtc()}> ${translate("walletpage.wchange17")} LTC` + } else if ( this._selectedWallet === "doge" ) { + return html` this.openSendDoge()}> ${translate("walletpage.wchange17")} DOGE` + } else if ( this._selectedWallet === "dgb" ) { + 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 === "arrr" ) { + return html` this.openSendArrr()}> ${translate("walletpage.wchange17")} ARRR` + } else { + return html`` + } + } + + renderAddressbookButton() { + if ( this._selectedWallet === "qort" ) { + return html` this.openQortAddressbook()}> ${translate("walletpage.wchange47")}` + } else if ( this._selectedWallet === "btc" ) { + return html` this.openBtcAddressbook()}> ${translate("walletpage.wchange47")}` + } else if ( this._selectedWallet === "ltc" ) { + return html` this.openLtcAddressbook()}> ${translate("walletpage.wchange47")}` + } else if ( this._selectedWallet === "doge" ) { + return html` this.openDogeAddressbook()}> ${translate("walletpage.wchange47")}` + } else if ( this._selectedWallet === "dgb" ) { + return html` this.openDgbAddressbook()}> ${translate("walletpage.wchange47")}` + } else if ( this._selectedWallet === "rvn" ) { + return html` this.openRvnAddressbook()}> ${translate("walletpage.wchange47")}` + } else if ( this._selectedWallet === "arrr" ) { + return html` this.openArrrAddressbook()}> ${translate("walletpage.wchange47")}` + } else { + return html`` + } + } + + renderExportAddressbookButton() { + if ( this._selectedWallet === "qort" ) { + return html` this.exportQortAddressbook()}> ${translate("walletpage.wchange54")}` + } else if ( this._selectedWallet === "btc" ) { + return html` this.exportBtcAddressbook()}> ${translate("walletpage.wchange54")}` + } else if ( this._selectedWallet === "ltc" ) { + return html` this.exportKLtcAddressbook()}> ${translate("walletpage.wchange54")}` + } else if ( this._selectedWallet === "doge" ) { + return html` this.exportDogeAddressbook()}> ${translate("walletpage.wchange54")}` + } else if ( this._selectedWallet === "dgb" ) { + return html` this.exportDgbAddressbook()}> ${translate("walletpage.wchange54")}` + } else if ( this._selectedWallet === "rvn" ) { + return html` this.exportRvnAddressbook()}> ${translate("walletpage.wchange54")}` + } else if ( this._selectedWallet === "arrr" ) { + return html` this.exportArrrAddressbook()}> ${translate("walletpage.wchange54")}` + } else { + return html`` + } + } + + renderImportAddressbookButton() { + if ( this._selectedWallet === "qort" ) { + return html` this.openImportQortAddressbook()}> ${translate("walletpage.wchange53")}` } else if ( this._selectedWallet === "btc" ) { - return html` this.openSendBtc()}> ${translate("walletpage.wchange17")} BTC` + return html` this.openImportBtcAddressbook()}> ${translate("walletpage.wchange53")}` } else if ( this._selectedWallet === "ltc" ) { - return html` this.openSendLtc()}> ${translate("walletpage.wchange17")} LTC` + return html` this.openImportLtcAddressbook()}> ${translate("walletpage.wchange53")}` } else if ( this._selectedWallet === "doge" ) { - return html` this.openSendDoge()}> ${translate("walletpage.wchange17")} DOGE` + return html` this.openImportDogeAddressbook()}> ${translate("walletpage.wchange53")}` } else if ( this._selectedWallet === "dgb" ) { - return html` this.openSendDgb()}> ${translate("walletpage.wchange17")} DGB` + return html` this.openImportDgbAddressbook()}> ${translate("walletpage.wchange53")}` } else if ( this._selectedWallet === "rvn" ) { - return html` this.openSendRvn()}> ${translate("walletpage.wchange17")} RVN` + return html` this.openImportRvnAddressbook()}> ${translate("walletpage.wchange53")}` } else if ( this._selectedWallet === "arrr" ) { - return html` this.openSendArrr()}> ${translate("walletpage.wchange17")} ARRR` + return html` this.openImportArrrAddressbook()}> ${translate("walletpage.wchange53")}` } else { return html`` } @@ -2948,7 +4515,7 @@ class MultiWallet extends LitElement { this.shadowRoot.querySelector("#sendDgbDialog").show(); } - openSendRvn() { + openSendRvn() { this.shadowRoot.querySelector("#sendRvnDialog").show(); } @@ -3045,13 +4612,12 @@ class MultiWallet extends LitElement { }, { passive: true } ) - } - else if (coin === 'arrr') { + } else if (coin === 'arrr') { this.transactionsGrid.addEventListener( 'click', (e) => { - let dgbItem = this.transactionsGrid.getEventContext(e).item - this.showArrrTransactionDetails(dgbItem, this.wallets.get(this._selectedWallet).transactions) + let arrrItem = this.transactionsGrid.getEventContext(e).item + this.showArrrTransactionDetails(arrrItem, this.wallets.get(this._selectedWallet).transactions) }, { passive: true } ) @@ -3074,7 +4640,7 @@ 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 === 'arrr') { + } else if (this._selectedWallet === 'arrr') { render(this.renderArrrTransactions(this.wallets.get(this._selectedWallet).transactions, this._selectedWallet), this.transactionsDOM) } } @@ -3399,7 +4965,7 @@ class MultiWallet extends LitElement { ` } - renderRvnTransactions(transactions, coin) { + renderRvnTransactions(transactions, coin) { return html`
${translate("walletpage.wchange38")}
@@ -3461,7 +5027,7 @@ class MultiWallet extends LitElement {
- ` + ` } renderArrrTransactions(transactions, coin) { @@ -3535,7 +5101,7 @@ class MultiWallet extends LitElement {
- ` + ` } async updateItemsFromPage(page, changeWallet = false) { @@ -3724,7 +5290,7 @@ class MultiWallet extends LitElement { }) } - showRvnTransactionDetails(myTransaction, allTransactions) { + showRvnTransactionDetails(myTransaction, allTransactions) { allTransactions.forEach((transaction) => { if (myTransaction.txHash === transaction.txHash) { let rvnTxnFlow = myTransaction.inputs[0].address === this.wallets.get(this._selectedWallet).wallet.address ? 'OUT' : 'IN' @@ -3752,6 +5318,7 @@ class MultiWallet extends LitElement { }) } + isEmptyArray(arr) { if (!arr) { return true