4
1
mirror of https://github.com/Qortal/qortal-ui.git synced 2025-02-11 09:45:52 +00:00

Merge pull request #305 from AlphaX-Projects/master

modifications to Qortal wallet views, vaadin support for scroller on older macs, fix issue with local storage and new tab links, updated and added dependencies.
This commit is contained in:
crowetic 2024-05-23 08:38:14 -07:00 committed by GitHub
commit 368f80e8b7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
27 changed files with 563 additions and 104 deletions

View File

@ -248,7 +248,9 @@
"balance": "Guthaben",
"balances": "IHR WALLET-GUTHABEN",
"update": "AKTUALISIERE WALLET-GUTHABEN",
"view": "Ansehen"
"view": "Ansehen",
"all": "Alle",
"page": "Seite"
},
"gifs": {
"gchange1": "GIF-Explorer",

View File

@ -248,7 +248,9 @@
"balance": "Saldo",
"balances": "LOS SALDOS DE TU BILLETERA",
"update": "ACTUALIZAR SALDOS DE CARTERA",
"view": "Vista"
"view": "Vista",
"all": "Todo",
"page": "Página"
},
"gifs": {
"gchange1": "Explorador de gifs",

View File

@ -248,7 +248,9 @@
"balance": "Saldo",
"balances": "Sinu saldoseisud",
"update": "Saldoseisude uuendamine",
"view": "Vaata"
"view": "Vaata",
"all": "Kõik",
"page": "Lehekülg"
},
"gifs": {
"gchange1": "Gif avastaja",

View File

@ -248,7 +248,9 @@
"balance": "Saldosi",
"balances": "Sinun saldosi",
"update": "Saldot päivitetään",
"view": "Katso"
"view": "Katso",
"all": "Kaikki",
"page": "Sivu"
},
"gifs": {
"gchange1": "Gif tutkija",

View File

@ -248,7 +248,9 @@
"balance": "Solde",
"balances": "VOS SOLDES DE PORTEFEUILLE",
"update": "METTRE À JOUR LES SOLDES DES PORTEFEUILLES",
"view": "Voir"
"view": "Voir",
"all": "Tous",
"page": "Page"
},
"gifs": {
"gchange1": "Explorateur GIF",

View File

@ -248,7 +248,9 @@
"balance": "संतुलन",
"balances": "आपका वॉलेट बैलेंस",
"update": "अपडेट वॉलेट बैलेंस",
"view": "देखना"
"view": "देखना",
"all": "सभी",
"page": "पृष्ठ"
},
"gifs": {
"gchange1": "जीआईएफ एक्सप्लोरर",

View File

@ -248,7 +248,9 @@
"balance": "Kreditna",
"balances": "VAŠ NOVČANIK JE NA SALJU",
"update": "AŽURIRAJTE STANJE NOVČANIKA",
"view": "Pogled"
"view": "Pogled",
"all": "svi",
"page": "Stranica"
},
"gifs": {
"gchange1": "Gif Explorer",

View File

@ -248,7 +248,9 @@
"balance": "Hitel",
"balances": "A PÉNZTÁRCSA EGYENLEGEK",
"update": "FRISSÍTSE A PÉNZTÁRCSA-EGYENLEGEKET",
"view": "Kilátás"
"view": "Kilátás",
"all": "Minden",
"page": "Oldal"
},
"gifs": {
"gchange1": "Gif Explorer",

View File

@ -248,7 +248,9 @@
"balance": "Saldo",
"balances": "I SALDI DEL TUO PORTAFOGLIO",
"update": "AGGIORNA I SALDI DEL PORTAFOGLIO",
"view": "Vedere"
"view": "Vedere",
"all": "Tutto",
"page": "Pagina"
},
"gifs": {
"gchange1": "Esplora Gif",

View File

@ -248,7 +248,9 @@
"balance": "残高",
"balances": "あなたのウォレット残高",
"update": "ウォレット残高を更新",
"view": "表示"
"view": "表示",
"all": "全て",
"page": "ページ"
},
"gifs": {
"gchange1": "GIF エクスプローラー",

View File

@ -248,7 +248,9 @@
"balance": "균형",
"balances": "지갑 잔액",
"update": "월렛 잔액 업데이트",
"view": "보다"
"view": "보다",
"all": "모두",
"page": "페이지"
},
"gifs": {
"gchange1": "Gif 탐색기",

View File

@ -248,7 +248,9 @@
"balance": "Saldo",
"balances": "SALDI VAN UW PORTEFEUILLES",
"update": "SALDI VAN PORTEFEUILLES HEROPVRAGEN",
"view": "Bekijken"
"view": "Bekijken",
"all": "Alle",
"page": "Bladzijde"
},
"gifs": {
"gchange1": "GIF-Explorer",

View File

@ -248,7 +248,9 @@
"balance": "Saldo",
"balances": "DIN WALLET-SALDO",
"update": "OPPDATERT WALLET-SALDOER",
"view": "Utsikt"
"view": "Utsikt",
"all": "Alle",
"page": "Side"
},
"gifs": {
"gchange1": "Gif Explorer",

View File

@ -248,7 +248,9 @@
"balance": "Saldo",
"balances": "SALDO TWOJEGO PORTFELA",
"update": "AKTUALIZUJ SALDA W PORTFELU",
"view": "Pogląd"
"view": "Pogląd",
"all": "Wszystko",
"page": "Strona"
},
"gifs": {
"gchange1": "Eksplorator gifów",

View File

@ -248,7 +248,9 @@
"balance": "Saldo",
"balances": "SEUS SALDOS DE CARTEIRA",
"update": "ATUALIZAR SALDOS DA CARTEIRA",
"view": "Ver"
"view": "Ver",
"all": "Todos",
"page": "Página"
},
"gifs": {
"gchange1": "Gif Explorer",

View File

@ -248,7 +248,9 @@
"balance": "Credit",
"balances": "SOLDELE PORTOTELULUI DVS",
"update": "ACTUALIZAȚI SOLDELE PORTOTELULUI",
"view": "Vedere"
"view": "Vedere",
"all": "Toate",
"page": "Pagină"
},
"gifs": {
"gchange1": "Explorator GIF",

View File

@ -248,7 +248,9 @@
"balance": "Kredit",
"balances": "VAŠI STANJE U NOVČANIKU",
"update": "AŽURIRAJTE STANJE NOVČANIKA",
"view": "Pogled"
"view": "Pogled",
"all": "Sve",
"page": "Strana"
},
"gifs": {
"gchange1": "Gif Ekplorer",

View File

@ -248,7 +248,9 @@
"balance": "кредит",
"balances": "БАЛАНС ВАШЕГО КОШЕЛЬКА",
"update": "ОБНОВИТЬ БАЛАНС КОШЕЛЬКА",
"view": "Вид"
"view": "Вид",
"all": "Все",
"page": "Страница"
},
"gifs": {
"gchange1": "Проводник гифок",

View File

@ -248,7 +248,9 @@
"balance": "Balance",
"balances": "YOUR WALLET BALANCES",
"update": "UPDATE WALLET BALANCES",
"view": "View"
"view": "View",
"all": "All",
"page": "Page"
},
"gifs": {
"gchange1": "Gif Explorer",

View File

@ -248,7 +248,9 @@
"balance": "余额",
"balances": "您的钱包余额",
"update": "更新钱包余额",
"view": "看法"
"view": "看法",
"all": "全部",
"page": "页"
},
"gifs": {
"gchange1": "Gif 浏览器",

View File

@ -248,7 +248,9 @@
"balance": "餘額",
"balances": "您的錢包餘額",
"update": "更新錢包餘額",
"view": "看法"
"view": "看法",
"all": "全部",
"page": "頁"
},
"gifs": {
"gchange1": "Gif 瀏覽器",

View File

@ -1225,6 +1225,34 @@ class NavBar extends connect(store)(LitElement) {
this.myMenuPlugins = JSON.parse(localStorage.getItem('myMenuPlugs') || '[]')
} else {
let newPluginMenu = JSON.parse(localStorage.getItem('myMenuPlugs') || '[]')
const oldQchat = 'messaging/q-chat/index.html'
const newQchat = 'q-chat/index.html'
const oldMinting = 'minting/index.html'
const newMinting = 'minting-info/index.html'
const oldWebsites = 'qdn/index.html'
const newWebsites = 'q-website/index.html'
const oldDatamanager = 'qdn/data-management/index.html'
const newDatamanager = 'data-management/index.html'
// Check if local storage have broken links and replace them
newPluginMenu.find(a => {
if (a.page === oldQchat) {
a.page = newQchat
} else if (a.page === oldMinting) {
a.page = newMinting
} else if (a.page === oldWebsites) {
a.page = newWebsites
} else if (a.page === oldDatamanager) {
a.page = newDatamanager
} else {}
})
localStorage.setItem('myMenuPlugs', JSON.stringify(newPluginMenu))
await appDelay(250)
this.myMenuPlugins = JSON.parse(localStorage.getItem('myMenuPlugs') || '[]')
}
}

83
package-lock.json generated
View File

@ -47,7 +47,7 @@
"prosemirror-state": "1.4.3",
"prosemirror-transform": "1.9.0",
"prosemirror-view": "1.33.6",
"sass": "1.77.1",
"sass": "1.77.2",
"short-unique-id": "5.2.0",
"xhr2": "0.2.1"
},
@ -101,10 +101,13 @@
"@vaadin/grid": "24.2.9",
"@vaadin/icons": "24.2.9",
"@vaadin/password-field": "24.2.9",
"@vaadin/scroller": "24.2.9",
"@vaadin/tabs": "24.2.9",
"@vaadin/tabsheet": "24.2.9",
"@vaadin/tooltip": "24.2.9",
"@zip.js/zip.js": "2.7.44",
"axios": "1.6.8",
"electron": "30.0.5",
"axios": "1.7.1",
"electron": "30.0.6",
"electron-builder": "24.13.3",
"epml": "0.3.3",
"eslint": "8.57.0",
@ -3965,6 +3968,50 @@
"@vaadin/vaadin-themable-mixin": "~24.2.9"
}
},
"node_modules/@vaadin/scroller": {
"version": "24.2.9",
"resolved": "https://registry.npmjs.org/@vaadin/scroller/-/scroller-24.2.9.tgz",
"integrity": "sha512-CFAaJ6hGzncq46wARiu+B+AoSBiW+qJ4mJ4jmn2gIeTEAbv/IhMPv7GeuF2zKO6/eW6YyHm6wJRTMWcJszOYaQ==",
"dev": true,
"dependencies": {
"@polymer/polymer": "^3.0.0",
"@vaadin/a11y-base": "~24.2.9",
"@vaadin/component-base": "~24.2.9",
"@vaadin/vaadin-lumo-styles": "~24.2.9",
"@vaadin/vaadin-material-styles": "~24.2.9",
"@vaadin/vaadin-themable-mixin": "~24.2.9"
}
},
"node_modules/@vaadin/tabs": {
"version": "24.2.9",
"resolved": "https://registry.npmjs.org/@vaadin/tabs/-/tabs-24.2.9.tgz",
"integrity": "sha512-cmiFzWyhEKXPGk7r3ExvZLiHJ7aVrN2fN//6PCPwag2ofLqNXvL2xw9RJrCDx1n8/aabNpRvYz0mAf+ucuE1Sw==",
"dev": true,
"dependencies": {
"@polymer/polymer": "^3.0.0",
"@vaadin/a11y-base": "~24.2.9",
"@vaadin/component-base": "~24.2.9",
"@vaadin/item": "~24.2.9",
"@vaadin/vaadin-lumo-styles": "~24.2.9",
"@vaadin/vaadin-material-styles": "~24.2.9",
"@vaadin/vaadin-themable-mixin": "~24.2.9"
}
},
"node_modules/@vaadin/tabsheet": {
"version": "24.2.9",
"resolved": "https://registry.npmjs.org/@vaadin/tabsheet/-/tabsheet-24.2.9.tgz",
"integrity": "sha512-M5Wn60dEJepSQR6BmLveHVQqeZ+OiaoHBG4KAl8cAg3xFRy7peO3w6fVJfn5XhHO1BEoGx5rqAa31YXguV9hiw==",
"dev": true,
"dependencies": {
"@polymer/polymer": "^3.0.0",
"@vaadin/component-base": "~24.2.9",
"@vaadin/scroller": "~24.2.9",
"@vaadin/tabs": "~24.2.9",
"@vaadin/vaadin-lumo-styles": "~24.2.9",
"@vaadin/vaadin-material-styles": "~24.2.9",
"@vaadin/vaadin-themable-mixin": "~24.2.9"
}
},
"node_modules/@vaadin/text-field": {
"version": "24.2.9",
"resolved": "https://registry.npmjs.org/@vaadin/text-field/-/text-field-24.2.9.tgz",
@ -4619,9 +4666,9 @@
}
},
"node_modules/axios": {
"version": "1.6.8",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz",
"integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==",
"version": "1.7.1",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.7.1.tgz",
"integrity": "sha512-+LV37nQcd1EpFalkXksWNBiA17NZ5m5/WspmHGmZmdx1qBOg/VNq/c4eRJiA9VQQHBOs+N0ZhhdU10h2TyNK7Q==",
"dev": true,
"dependencies": {
"follow-redirects": "^1.15.6",
@ -5018,9 +5065,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001618",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001618.tgz",
"integrity": "sha512-p407+D1tIkDvsEAPS22lJxLQQaG8OTBEqo0KhzfABGk0TU4juBNDSfH0hyAp/HRyx+M8L17z/ltyhxh27FTfQg==",
"version": "1.0.30001620",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz",
"integrity": "sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==",
"dev": true,
"funding": [
{
@ -5741,9 +5788,9 @@
}
},
"node_modules/electron": {
"version": "30.0.5",
"resolved": "https://registry.npmjs.org/electron/-/electron-30.0.5.tgz",
"integrity": "sha512-+a7PjcAq2HrfF1l+Ez8n0W9YeZIam7E9ERHEGs+L2dqKu7qxk8GNSEFoBEPCpLI00p/fc0d76L9IcLCQJdNFqA==",
"version": "30.0.6",
"resolved": "https://registry.npmjs.org/electron/-/electron-30.0.6.tgz",
"integrity": "sha512-PkhEPFdpYcTzjAO3gMHZ+map7g2+xCrMDedo/L1i0ir2BRXvAB93IkTJX497U6Srb/09r2cFt+k20VPNVCdw3Q==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
@ -6032,9 +6079,9 @@
}
},
"node_modules/electron-to-chromium": {
"version": "1.4.769",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.769.tgz",
"integrity": "sha512-bZu7p623NEA2rHTc9K1vykl57ektSPQYFFqQir8BOYf6EKOB+yIsbFB9Kpm7Cgt6tsLr9sRkqfqSZUw7LP1XxQ==",
"version": "1.4.774",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.774.tgz",
"integrity": "sha512-132O1XCd7zcTkzS3FgkAzKmnBuNJjK8WjcTtNuoylj7MYbqw5eXehjQ5OK91g0zm7OTKIPeaAG4CPoRfD9M1Mg==",
"dev": true
},
"node_modules/electron-updater": {
@ -9701,9 +9748,9 @@
}
},
"node_modules/sass": {
"version": "1.77.1",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.77.1.tgz",
"integrity": "sha512-OMEyfirt9XEfyvocduUIOlUSkWOXS/LAt6oblR/ISXCTukyavjex+zQNm51pPCOiFKY1QpWvEH1EeCkgyV3I6w==",
"version": "1.77.2",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.77.2.tgz",
"integrity": "sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA==",
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0",

View File

@ -69,7 +69,7 @@
"prosemirror-state": "1.4.3",
"prosemirror-transform": "1.9.0",
"prosemirror-view": "1.33.6",
"sass": "1.77.1",
"sass": "1.77.2",
"short-unique-id": "5.2.0",
"xhr2": "0.2.1"
},
@ -123,10 +123,13 @@
"@vaadin/grid": "24.2.9",
"@vaadin/icons": "24.2.9",
"@vaadin/password-field": "24.2.9",
"@vaadin/scroller": "24.2.9",
"@vaadin/tabs": "24.2.9",
"@vaadin/tabsheet": "24.2.9",
"@vaadin/tooltip": "24.2.9",
"@zip.js/zip.js": "2.7.44",
"axios": "1.6.8",
"electron": "30.0.5",
"axios": "1.7.1",
"electron": "30.0.6",
"electron-builder": "24.13.3",
"epml": "0.3.3",
"eslint": "8.57.0",

View File

@ -6791,8 +6791,6 @@ export const qchatStyles = css`
--_lumo-grid-border-color: var(--border);
--_lumo-grid-secondary-border-color: var(--border2);
--mdc-dialog-min-width: 750px;
scrollbar-width: thin;
scrollbar-color: #6a6c75 #a1a1a1;
}
paper-spinner-lite {
@ -6824,7 +6822,7 @@ export const qchatStyles = css`
float: left;
height: 100vh;
overflow-y: hidden;
border-right: 3px #ddd solid;
border-right: 2px #ddd solid;
}
.people-list .blockedusers {
@ -6972,20 +6970,6 @@ export const qchatStyles = css`
overflow-x: hidden;
}
.people-list ul::-webkit-scrollbar-track {
background: #a1a1a1;
}
.people-list ul::-webkit-scrollbar {
width: 11px;
}
.people-list ul::-webkit-scrollbar-thumb {
background-color: #6a6c75;
border-radius: 6px;
border: 3px solid #a1a1a1;
}
.chat {
width: 80vw;
height: 100vh;
@ -13205,7 +13189,7 @@ export const multiWalletStyles = css`
}
#transactions {
margin-top: 30px;
margin-top: 25px;
margin-left: 20px;
margin-right: 20px;
border-top: 1px solid var(--border);

View File

@ -24,6 +24,7 @@ import '@material/mwc-icon'
import '@material/mwc-snackbar'
import '@polymer/paper-spinner/paper-spinner-lite.js'
import '@vaadin/grid'
import '@vaadin/scroller'
import '@vaadin/tooltip'
// Multi language support
@ -149,9 +150,14 @@ class Chat extends LitElement {
</div>
</div>
</div>
<ul class="list">
${this.isEmptyArray(this.chatHeads) ? this.renderLoadingText() : this.renderChatHead(this.chatHeads)}
</ul>
<vaadin-scroller
scroll-direction="vertical"
style="border-bottom: 1px solid var(--lumo-contrast-20pct); padding: var(--lumo-space-s);"
>
<ul class="list">
${this.isEmptyArray(this.chatHeads) ? this.renderLoadingText() : this.renderChatHead(this.chatHeads)}
</ul>
</vaadin-scroller>
</div>
<div class="chat">
<div id="newMessageBar" class="new-message-bar hide-new-message-bar clearfix" @click=${() => this.scrollToBottom()}>

View File

@ -29,6 +29,8 @@ import '@vaadin/grid'
import '@vaadin/icon'
import '@vaadin/icons'
import '@vaadin/password-field'
import '@vaadin/tabs'
import '@vaadin/tabsheet'
// Multi language support
import { get, registerTranslateConfig, translate, use } from '../../../../core/translate'
@ -127,7 +129,12 @@ class MultiWallet extends LitElement {
bookDogecoinAddress: { type: String },
bookDigibyteAddress: { type: String },
bookRavencoinAddress: { type: String },
bookPiratechainAddress: { type: String }
bookPiratechainAddress: { type: String },
visitedTab: { type: Number },
searchOffset: { type: Number },
searchLimit: { type: Number },
counter: { type: Number },
pageButtonsHidden: { type: Boolean }
}
}
@ -235,6 +242,11 @@ class MultiWallet extends LitElement {
this.bookDigibyteAddress = ''
this.bookRavencoinAddress = ''
this.bookPiratechainAddress = ''
this.visitedTab = 0
this.searchOffset = 0
this.searchLimit = 10
this.counter = 1
this.pageButtonsHidden = false
this.wallets = new Map()
let coinProp = {
@ -387,6 +399,7 @@ class MultiWallet extends LitElement {
<div class="qrcode-pos" ?hidden="${this.getSelectedWalletAddress().length < 1}">
<qortal-qrcode-generator data="${this.getSelectedWalletAddress()}" mode="octet" format="html" auto></qortal-qrcode-generator>
</div>
${this.renderTabTransactions()}
<div id="transactions">
${this.loading ? html`
<paper-spinner-lite style="display: block; margin: 5px auto;" active></paper-spinner-lite>
@ -2246,7 +2259,7 @@ class MultiWallet extends LitElement {
this.transactionsDOM = this.shadowRoot.getElementById('transactionsDOM')
this.showWallet()
this.showNewQortWallet()
window.addEventListener('storage', () => {
const checkLanguage = localStorage.getItem('qortalLanguage')
@ -2282,6 +2295,38 @@ class MultiWallet extends LitElement {
}, 600000)
}
async myTabChanged(value) {
this.pageButtonsHidden = false
this.visitedTab = value
this.searchOffset = 0
this.searchLimit = 10
this.counter = 1
await this.renderNewDom()
}
renderTabTransactions() {
if (this._selectedWallet == 'qort') {
return html`
<div style="margin-top: 10px;">
<vaadin-tabs>
<vaadin-tab id="type" disabled><span style="color: var(--black);">${translate("walletpage.wchange6")} :</span></vaadin-tab>
<vaadin-tab id="payment-tab" style="cursor: pointer;" @click=${(e) => this.myTabChanged(0)}>PAYMENT</vaadin-tab>
<vaadin-tab id="arbitary-tab" style="cursor: pointer;" @click=${(e) => this.myTabChanged(1)}>ARBITARY</vaadin-tab>
<vaadin-tab id="at-tab" style="cursor: pointer;" @click=${(e) => this.myTabChanged(2)}>AT</vaadin-tab>
<vaadin-tab id="group-tab" style="cursor: pointer;" @click=${(e) => this.myTabChanged(3)}>GROUP</vaadin-tab>
<vaadin-tab id="name-tab" style="cursor: pointer;" @click=${(e) => this.myTabChanged(4)}>NAME</vaadin-tab>
<vaadin-tab id="asset-tab" style="cursor: pointer;" @click=${(e) => this.myTabChanged(5)}>ASSET</vaadin-tab>
<vaadin-tab id="poll-tab" style="cursor: pointer;" @click=${(e) => this.myTabChanged(6)}>POLL</vaadin-tab>
<vaadin-tab id="rewarshare-tab" style="cursor: pointer;" @click=${(e) => this.myTabChanged(7)}>REWARDSHARE</vaadin-tab>
<vaadin-tab id="misc-tab" style="cursor: pointer;" @click=${(e) => this.myTabChanged(8)}>MISC</vaadin-tab>
</vaadin-tabs>
</div>
`
} else {
return html``
}
}
async paymentFee() {
const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node]
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
@ -2499,7 +2544,11 @@ class MultiWallet extends LitElement {
tabWalletQort() {
this._selectedWallet = 'qort'
this.showWallet()
this.visitedTab = 0
this.searchOffset = 0
this.searchLimit = 10
this.pageButtonsHidden = false
this.showNewQortWallet()
}
tabWalletBtc() {
@ -3538,19 +3587,18 @@ class MultiWallet extends LitElement {
renderCAB() {
return html`
<span>${this.selectedTransaction.aTAddress}</span>
<button-icon-copy
title="${translate("blockpage.bcchange8")}"
onSuccessMessage="${translate("walletpage.wchange4")}"
onErrorMessage="${translate("walletpage.wchange39")}"
textToCopy=${this.selectedTransaction.aTAddress}
buttonSize="24px"
iconSize="16px"
color="var(--copybutton)"
offsetLeft="4px"
>
</button-icon-copy>
`
<span>${this.selectedTransaction.aTAddress}</span>
<button-icon-copy
title="${translate("blockpage.bcchange8")}"
onSuccessMessage="${translate("walletpage.wchange4")}"
onErrorMessage="${translate("walletpage.wchange39")}"
textToCopy=${this.selectedTransaction.aTAddress}
buttonSize="24px"
iconSize="16px"
color="var(--copybutton)"
offsetLeft="4px"
></button-icon-copy>
`
}
renderFetchText() {
@ -3857,7 +3905,7 @@ class MultiWallet extends LitElement {
}
}
await validateReceiver(recipient)
await this.showWallet()
await this.showNewQortWallet()
}
async sendBtc() {
@ -4139,15 +4187,21 @@ class MultiWallet extends LitElement {
if (this._selectedWallet == 'qort') {
if (!window.parent.reduxStore.getState().app.blockInfo.height) {
await parentEpml.request('apiCall', { url: `/blocks/height`, type: 'api' })
.then(height => parentEpml.request('updateBlockInfo', { height }))
await parentEpml.request('apiCall', {
url: `/blocks/height`,
type: 'api'
}).then(height => parentEpml.request('updateBlockInfo', {
height
}))
}
}
const coin = this._selectedWallet
await this.fetchWalletAddress(this._selectedWallet)
await this.fetchWalletServer(this._selectedWallet)
await this.fetchWalletDetails(this._selectedWallet)
await this.fetchWalletServer(this._selectedWallet)
if (this._selectedWallet == coin) {
await this.renderTransactions()
await this.getTransactionGrid(this._selectedWallet)
@ -4157,32 +4211,314 @@ class MultiWallet extends LitElement {
}
}
async showNewQortWallet() {
this.pageButtonsHidden = false
this.transactionsDOM.hidden = true
this.loading = true
if (!window.parent.reduxStore.getState().app.blockInfo.height) {
await parentEpml.request('apiCall', {
url: `/blocks/height`,
type: 'api'
}).then(height => parentEpml.request('updateBlockInfo', {
height
}))
}
const coin = this._selectedWallet
this.balanceString = this.renderFetchText()
parentEpml.request('apiCall', {
url: `/addresses/balance/${this.wallets.get('qort').wallet.address}`
}).then((res) => {
if (isNaN(Number(res))) {
let snack4string = get("walletpage.wchange32")
parentEpml.request('showSnackBar', `${snack4string}`)
} else {
if (this._selectedWallet == coin) {
this.wallets.get(coin).balance = Number(res).toFixed(8)
this.balanceString = this.wallets.get(this._selectedWallet).balance + " " + this._selectedWallet.toLocaleUpperCase()
this.balance = this.wallets.get(this._selectedWallet).balance
}
}
})
await this.fetchWalletDetails(this._selectedWallet)
await this.fetchWalletServer(this._selectedWallet)
this.shadowRoot.getElementById('type').selected = false
this.shadowRoot.getElementById('payment-tab').selected = true
this.shadowRoot.getElementById('arbitary-tab').selected = false
this.shadowRoot.getElementById('at-tab').selected = false
this.shadowRoot.getElementById('group-tab').selected = false
this.shadowRoot.getElementById('name-tab').selected = false
this.shadowRoot.getElementById('asset-tab').selected = false
this.shadowRoot.getElementById('poll-tab').selected = false
this.shadowRoot.getElementById('rewarshare-tab').selected = false
this.shadowRoot.getElementById('misc-tab').selected = false
if (this._selectedWallet == coin) {
await this.renderTransactions()
await this.getTransactionGrid(this._selectedWallet)
this.loading = false
this.transactionsDOM.hidden = false
}
}
async renderNewDom() {
this.transactionsDOM.hidden = true
this.loading = true
if (!window.parent.reduxStore.getState().app.blockInfo.height) {
await parentEpml.request('apiCall', {
url: `/blocks/height`,
type: 'api'
}).then(height => parentEpml.request('updateBlockInfo', {
height
}))
}
const coin = this._selectedWallet
await this.fetchWalletDetails(this._selectedWallet)
if (this._selectedWallet == coin) {
await this.renderTransactions()
await this.getTransactionGrid(this._selectedWallet)
this.loading = false
this.transactionsDOM.hidden = false
}
}
goBackwardTX() {
if (this.searchOffset === 0) {
this.pageButtonsHidden = false
this.searchLimit = 10
this.counter = 1
} else {
this.pageButtonsHidden = false
this.searchLimit = 10
this.counter = this.searchOffset / 10
this.searchOffset = this.searchOffset - 10
this.renderNewDom()
}
}
goForwardTX() {
this.pageButtonsHidden = false
this.searchLimit = 10
this.searchOffset = this.searchOffset + 10
this.counter = (this.searchOffset / 10) + 1
this.renderNewDom()
}
showAllTX() {
this.pageButtonsHidden = true
this.searchLimit = 0
this.searchOffset = 0
this.counter = 1
this.renderNewDom()
}
async fetchWalletDetails(coin) {
switch (coin) {
case 'qort':
this.balanceString = this.renderFetchText()
parentEpml.request('apiCall', {
url: `/addresses/balance/${this.wallets.get('qort').wallet.address}?apiKey=${this.getApiKey()}`
}).then((res) => {
if (isNaN(Number(res))) {
let snack4string = get("walletpage.wchange32")
parentEpml.request('showSnackBar', `${snack4string}`)
} else {
if (this._selectedWallet == coin) {
this.wallets.get(coin).balance = Number(res).toFixed(8)
this.balanceString = this.wallets.get(this._selectedWallet).balance + " " + this._selectedWallet.toLocaleUpperCase()
this.balance = this.wallets.get(this._selectedWallet).balance
}
}
const paymentTxsQort = await parentEpml.request('apiCall', {
url: `/transactions/search?address=${this.wallets.get('qort').wallet.address}&confirmationStatus=CONFIRMED&reverse=true
&limit=${this.searchLimit}
&offset=${this.searchOffset}
&txType=PAYMENT
`
})
const txsQort = await parentEpml.request('apiCall', {
url: `/transactions/search?address=${this.wallets.get('qort').wallet.address}&confirmationStatus=CONFIRMED&reverse=true&txType=PAYMENT&txType=REGISTER_NAME&txType=UPDATE_NAME&txType=SELL_NAME&txType=CANCEL_SELL_NAME&txType=BUY_NAME&txType=CREATE_POLL&txType=VOTE_ON_POLL&txType=ARBITRARY&txType=ISSUE_ASSET&txType=TRANSFER_ASSET&txType=CREATE_ASSET_ORDER&txType=CANCEL_ASSET_ORDER&txType=MULTI_PAYMENT&txType=DEPLOY_AT&txType=MESSAGE&txType=AIRDROP&txType=AT&txType=CREATE_GROUP&txType=UPDATE_GROUP&txType=ADD_GROUP_ADMIN&txType=REMOVE_GROUP_ADMIN&txType=GROUP_BAN&txType=CANCEL_GROUP_BAN&txType=GROUP_KICK&txType=GROUP_INVITE&txType=CANCEL_GROUP_INVITE&txType=JOIN_GROUP&txType=LEAVE_GROUP&txType=GROUP_APPROVAL&txType=SET_GROUP&txType=UPDATE_ASSET&txType=ACCOUNT_FLAGS&txType=ENABLE_FORGING&txType=REWARD_SHARE&txType=ACCOUNT_LEVEL&txType=TRANSFER_PRIVS&txType=PRESENCE`,
const pendingPaymentTxsQort = await parentEpml.request('apiCall', {
url: `/transactions/unconfirmed?creator=${this.wallets.get('qort').wallet.base58PublicKey}&reverse=true
&limit=${this.searchLimit}
&offset=${this.searchOffset}
&txType=PAYMENT
`
})
const pendingTxsQort = await parentEpml.request('apiCall', {
url: `/transactions/unconfirmed?creator=${this.wallets.get('qort').wallet.base58PublicKey}&reverse=true&txType=PAYMENT&txType=REGISTER_NAME&txType=UPDATE_NAME&txType=SELL_NAME&txType=CANCEL_SELL_NAME&txType=BUY_NAME&txType=CREATE_POLL&txType=VOTE_ON_POLL&txType=ARBITRARY&txType=ISSUE_ASSET&txType=TRANSFER_ASSET&txType=CREATE_ASSET_ORDER&txType=CANCEL_ASSET_ORDER&txType=MULTI_PAYMENT&txType=DEPLOY_AT&txType=MESSAGE&txType=AIRDROP&txType=AT&txType=CREATE_GROUP&txType=UPDATE_GROUP&txType=ADD_GROUP_ADMIN&txType=REMOVE_GROUP_ADMIN&txType=GROUP_BAN&txType=CANCEL_GROUP_BAN&txType=GROUP_KICK&txType=GROUP_INVITE&txType=CANCEL_GROUP_INVITE&txType=JOIN_GROUP&txType=LEAVE_GROUP&txType=GROUP_APPROVAL&txType=SET_GROUP&txType=UPDATE_ASSET&txType=ACCOUNT_FLAGS&txType=ENABLE_FORGING&txType=REWARD_SHARE&txType=ACCOUNT_LEVEL&txType=TRANSFER_PRIVS&txType=PRESENCE`,
const arbitaryTxsQort = await parentEpml.request('apiCall', {
url: `/transactions/search?address=${this.wallets.get('qort').wallet.address}&confirmationStatus=CONFIRMED&reverse=true
&limit=${this.searchLimit}
&offset=${this.searchOffset}
&txType=ARBITRARY
`
})
const pendingArbitaryTxsQort = await parentEpml.request('apiCall', {
url: `/transactions/unconfirmed?creator=${this.wallets.get('qort').wallet.base58PublicKey}&reverse=true
&limit=${this.searchLimit}
&offset=${this.searchOffset}
&txType=ARBITRARY
`
})
const atTxsQort = await parentEpml.request('apiCall', {
url: `/transactions/search?address=${this.wallets.get('qort').wallet.address}&confirmationStatus=CONFIRMED&reverse=true
&limit=${this.searchLimit}
&offset=${this.searchOffset}
&txType=AT
&txType=DEPLOY_AT
&txType=MESSAGE
`
})
const pendingAtTxsQort = await parentEpml.request('apiCall', {
url: `/transactions/unconfirmed?creator=${this.wallets.get('qort').wallet.base58PublicKey}&reverse=true
&limit=${this.searchLimit}
&offset=${this.searchOffset}
&txType=AT
&txType=DEPLOY_AT
&txType=MESSAGE
`
})
const groupTxsQort = await parentEpml.request('apiCall', {
url: `/transactions/search?address=${this.wallets.get('qort').wallet.address}&confirmationStatus=CONFIRMED&reverse=true
&limit=${this.searchLimit}
&offset=${this.searchOffset}
&txType=CREATE_GROUP
&txType=UPDATE_GROUP
&txType=ADD_GROUP_ADMIN
&txType=REMOVE_GROUP_ADMIN
&txType=GROUP_BAN
&txType=CANCEL_GROUP_BAN
&txType=GROUP_KICK
&txType=GROUP_INVITE
&txType=CANCEL_GROUP_INVITE
&txType=JOIN_GROUP
&txType=LEAVE_GROUP
&txType=GROUP_APPROVAL
&txType=SET_GROUP
`
})
const pendingGroupTxsQort = await parentEpml.request('apiCall', {
url: `/transactions/unconfirmed?creator=${this.wallets.get('qort').wallet.base58PublicKey}&reverse=true
&limit=${this.searchLimit}
&offset=${this.searchOffset}
&txType=CREATE_GROUP
&txType=UPDATE_GROUP
&txType=ADD_GROUP_ADMIN
&txType=REMOVE_GROUP_ADMIN
&txType=GROUP_BAN
&txType=CANCEL_GROUP_BAN
&txType=GROUP_KICK
&txType=GROUP_INVITE
&txType=CANCEL_GROUP_INVITE
&txType=JOIN_GROUP
&txType=LEAVE_GROUP
&txType=GROUP_APPROVAL
&txType=SET_GROUP
`
})
const nameTxsQort = await parentEpml.request('apiCall', {
url: `/transactions/search?address=${this.wallets.get('qort').wallet.address}&confirmationStatus=CONFIRMED&reverse=true
&limit=${this.searchLimit}
&offset=${this.searchOffset}
&txType=REGISTER_NAME
&txType=UPDATE_NAME
&txType=SELL_NAME
&txType=CANCEL_SELL_NAME
&txType=BUY_NAME
`
})
const pendingNameTxsQort = await parentEpml.request('apiCall', {
url: `/transactions/unconfirmed?creator=${this.wallets.get('qort').wallet.base58PublicKey}&reverse=true
&limit=${this.searchLimit}
&offset=${this.searchOffset}
&txType=REGISTER_NAME
&txType=UPDATE_NAME
&txType=SELL_NAME
&txType=CANCEL_SELL_NAME
&txType=BUY_NAME
`
})
const assetTxsQort = await parentEpml.request('apiCall', {
url: `/transactions/search?address=${this.wallets.get('qort').wallet.address}&confirmationStatus=CONFIRMED&reverse=true
&limit=${this.searchLimit}
&offset=${this.searchOffset}
&txType=ISSUE_ASSET
&txType=TRANSFER_ASSET
&txType=CREATE_ASSET_ORDER
&txType=CANCEL_ASSET_ORDER
&txType=UPDATE_ASSET
`
})
const pendingAssetTxsQort = await parentEpml.request('apiCall', {
url: `/transactions/unconfirmed?creator=${this.wallets.get('qort').wallet.base58PublicKey}&reverse=true
&limit=${this.searchLimit}
&offset=${this.searchOffset}
&txType=ISSUE_ASSET
&txType=TRANSFER_ASSET
&txType=CREATE_ASSET_ORDER
&txType=CANCEL_ASSET_ORDER
&txType=UPDATE_ASSET
`
})
const pollTxsQort = await parentEpml.request('apiCall', {
url: `/transactions/search?address=${this.wallets.get('qort').wallet.address}&confirmationStatus=CONFIRMED&reverse=true
&limit=${this.searchLimit}
&offset=${this.searchOffset}
&txType=CREATE_POLL
&txType=VOTE_ON_POLL
`
})
const pendingPollTxsQort = await parentEpml.request('apiCall', {
url: `/transactions/unconfirmed?creator=${this.wallets.get('qort').wallet.base58PublicKey}&reverse=true
&limit=${this.searchLimit}
&offset=${this.searchOffset}
&txType=CREATE_POLL
&txType=VOTE_ON_POLL
`
})
const rewardshareTxsQort = await parentEpml.request('apiCall', {
url: `/transactions/search?address=${this.wallets.get('qort').wallet.address}&confirmationStatus=CONFIRMED&reverse=true
&limit=${this.searchLimit}
&offset=${this.searchOffset}
&txType=REWARD_SHARE
`
})
const pendingRewardshareTxsQort = await parentEpml.request('apiCall', {
url: `/transactions/unconfirmed?creator=${this.wallets.get('qort').wallet.base58PublicKey}&reverse=true
&limit=${this.searchLimit}
&offset=${this.searchOffset}
&txType=REWARD_SHARE
`
})
const miscTxsQort = await parentEpml.request('apiCall', {
url: `/transactions/search?address=${this.wallets.get('qort').wallet.address}&confirmationStatus=CONFIRMED&reverse=true
&limit=${this.searchLimit}
&offset=${this.searchOffset}
&txType=TRANSFER_PRIVS
&txType=PRESENCE
`
})
const pendingMiscTxsQort = await parentEpml.request('apiCall', {
url: `/transactions/unconfirmed?creator=${this.wallets.get('qort').wallet.base58PublicKey}&reverse=true
&limit=${this.searchLimit}
&offset=${this.searchOffset}
&txType=TRANSFER_PRIVS
&txType=PRESENCE
`
})
if (this._selectedWallet == coin) {
this.wallets.get(coin).transactions = pendingTxsQort.concat(txsQort)
if (this.visitedTab === 0) {
this.wallets.get(coin).transactions = pendingPaymentTxsQort.concat(paymentTxsQort)
} else if (this.visitedTab === 1) {
this.wallets.get(coin).transactions = pendingArbitaryTxsQort.concat(arbitaryTxsQort)
} else if (this.visitedTab === 2) {
this.wallets.get(coin).transactions = pendingAtTxsQort.concat(atTxsQort)
} else if (this.visitedTab === 3) {
this.wallets.get(coin).transactions = pendingGroupTxsQort.concat(groupTxsQort)
} else if (this.visitedTab === 4) {
this.wallets.get(coin).transactions = pendingNameTxsQort.concat(nameTxsQort)
} else if (this.visitedTab === 5) {
this.wallets.get(coin).transactions = pendingAssetTxsQort.concat(assetTxsQort)
} else if (this.visitedTab === 6) {
this.wallets.get(coin).transactions = pendingPollTxsQort.concat(pollTxsQort)
} else if (this.visitedTab === 7) {
this.wallets.get(coin).transactions = pendingRewardshareTxsQort.concat(rewardshareTxsQort)
} else if (this.visitedTab === 8) {
this.wallets.get(coin).transactions = pendingMiscTxsQort.concat(miscTxsQort)
}
}
break
case 'btc':
@ -4643,7 +4979,7 @@ class MultiWallet extends LitElement {
}
return html`
<div style="padding-left:12px;" ?hidden="${!this.isEmptyArray(transactions)}"><span style="color: var(--black);">${translate("walletpage.wchange38")}</span></div>
<vaadin-grid theme="large" id="${coin}TransactionsGrid" ?hidden="${this.isEmptyArray(this.wallets.get(this._selectedWallet).transactions)}" page-size="25" all-rows-visible>
<vaadin-grid theme="large" id="${coin}TransactionsGrid" ?hidden="${this.isEmptyArray(this.wallets.get(this._selectedWallet).transactions)}" .items="${this.wallets.get(this._selectedWallet).transactions}" all-rows-visible>
<vaadin-grid-column
auto-width
header="${translate("walletpage.wchange41")}"
@ -4709,7 +5045,20 @@ class MultiWallet extends LitElement {
>
</vaadin-grid-column>
</vaadin-grid>
<div id="pages"></div>
<div style="margin-top: 10px;">
<vaadin-button theme="primary small" style="cursor: pointer;" ?hidden="${this.pageButtonsHidden}" @click=${() => this.goBackwardTX()}>
<< <span style="text-transform: uppercase; font-size: 14px;">${translate("general.back")}</span>
</vaadin-button>
<span style="color: var(--black); font-size: 16px; font-weight: 600;">&nbsp;${translate("general.page")} ${this.counter}&nbsp;</span>
<vaadin-button theme="primary small" style="cursor: pointer;" ?hidden="${this.wallets.get(this._selectedWallet).transactions.length < 10 || this.pageButtonsHidden}" @click=${() => this.goForwardTX()}>
<span style="text-transform: uppercase; font-size: 14px;">${translate("general.next")}</span> >>
</vaadin-button>
<div style="float: right;">
<vaadin-button theme="primary small" style="cursor: pointer;" @click=${() => this.showAllTX()}>
<span style="text-transform: uppercase; font-size: 14px;">${translate("general.view")} ${translate("general.all")}</span>
</vaadin-button>
</div>
</div>
`
}