mirror of
https://github.com/Qortal/qortal-ui.git
synced 2025-03-30 09:15:54 +00:00
Merge branch 'master' into pirate-chain
# Conflicts: # qortal-ui-core/src/plugins/routes.js
This commit is contained in:
commit
59fb31f84d
14
README.md
14
README.md
@ -41,19 +41,7 @@ Clone the main UI repo
|
|||||||
|
|
||||||
Installation and linking
|
Installation and linking
|
||||||
------------------------
|
------------------------
|
||||||
In `qortal-ui-core/`, `qortal-ui-plugins/`, `qortal-ui-crypto/` directories, run:
|
In `qortal-ui/` install_link:all
|
||||||
```
|
|
||||||
yarn install
|
|
||||||
yarn link
|
|
||||||
```
|
|
||||||
|
|
||||||
Finally, in the `qortal-ui` directory, run:
|
|
||||||
```
|
|
||||||
yarn link qortal-ui-core
|
|
||||||
yarn link qortal-ui-plugins
|
|
||||||
yarn link qortal-ui-crypto
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Build UI server and files
|
Build UI server and files
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
"author": "QORTAL <admin@qortal.org>",
|
"author": "QORTAL <admin@qortal.org>",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
"install_link:all": "(cd qortal-ui-core && yarn install && yarn link) && (cd qortal-ui-plugins && yarn install && yarn link) && (cd qortal-ui-crypto && yarn install && yarn link) && (yarn link qortal-ui-core && yarn link qortal-ui-plugins && yarn link qortal-ui-crypto)",
|
||||||
"dev": "node server.js",
|
"dev": "node server.js",
|
||||||
"prebuild": "node -p \"'export const UI_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > qortal-ui-core/src/redux/app/version.js",
|
"prebuild": "node -p \"'export const UI_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > qortal-ui-core/src/redux/app/version.js",
|
||||||
"build-dev": "node build.js",
|
"build-dev": "node build.js",
|
||||||
@ -31,12 +32,12 @@
|
|||||||
"publish": "electron-builder -p always"
|
"publish": "electron-builder -p always"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"electron-updater": "5.0.5",
|
"electron-updater": "5.2.1",
|
||||||
"electron-log": "4.4.8"
|
"electron-log": "4.4.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"electron": "19.0.9",
|
"electron": "19.0.11",
|
||||||
"electron-builder": "23.1.0",
|
"electron-builder": "23.3.3",
|
||||||
"electron-notarize": "1.2.1",
|
"electron-notarize": "1.2.1",
|
||||||
"electron-packager": "15.5.1",
|
"electron-packager": "15.5.1",
|
||||||
"shelljs": "0.8.5"
|
"shelljs": "0.8.5"
|
||||||
|
@ -21,12 +21,15 @@
|
|||||||
"korean":"Koreanisch"
|
"korean":"Koreanisch"
|
||||||
},
|
},
|
||||||
"sidemenu":{
|
"sidemenu":{
|
||||||
|
"minting":"PRÄGUNG",
|
||||||
"mintingdetails":"PRÄGUNGSDETAILS",
|
"mintingdetails":"PRÄGUNGSDETAILS",
|
||||||
|
"becomeAMinter":"WERDE EIN MINTER",
|
||||||
"wallets":"GELDBÖRSEN",
|
"wallets":"GELDBÖRSEN",
|
||||||
"tradeportal":"HANDELSPORTAL",
|
"tradeportal":"HANDELSPORTAL",
|
||||||
"rewardshare":"BELOHNUNGSANTEIL",
|
"rewardshare":"BELOHNUNGSANTEIL",
|
||||||
"nameregistration":"NAMENSREGISTRIERUNG",
|
"nameregistration":"NAMENSREGISTRIERUNG",
|
||||||
"websites":"WEBSEITEN",
|
"websites":"WEBSEITEN",
|
||||||
|
"management":"MANAGEMENT",
|
||||||
"datamanagement":"DATENMANAGEMENT",
|
"datamanagement":"DATENMANAGEMENT",
|
||||||
"qchat":"Q-CHAT",
|
"qchat":"Q-CHAT",
|
||||||
"groupmanagement":"GRUPPENMANAGEMENT",
|
"groupmanagement":"GRUPPENMANAGEMENT",
|
||||||
@ -180,6 +183,18 @@
|
|||||||
"mchange37":"Wenden Sie sich einfach an einen Minter in Qortal, der hoch genug ist, um einen Sponsoring-Schlüssel auszustellen, erhalten Sie diesen Schlüssel, kommen Sie dann hierher zurück und geben Sie den Schlüssel ein, um Ihre Minting-Reise zu beginnen!",
|
"mchange37":"Wenden Sie sich einfach an einen Minter in Qortal, der hoch genug ist, um einen Sponsoring-Schlüssel auszustellen, erhalten Sie diesen Schlüssel, kommen Sie dann hierher zurück und geben Sie den Schlüssel ein, um Ihre Minting-Reise zu beginnen!",
|
||||||
"mchange38":"in"
|
"mchange38":"in"
|
||||||
},
|
},
|
||||||
|
"becomeMinterPage":{
|
||||||
|
"bchange7":"Geben Sie den Sponsoring-Schlüssel ein",
|
||||||
|
"bchange8":"Geben Sie hier den Schlüssel Ihres Sponsors ein",
|
||||||
|
"bchange10":"Aktueller Sponsoring-Status",
|
||||||
|
"bchange12":"Prägung mit Sponsorenschlüssel",
|
||||||
|
"bchange13":"Verbleibende Blöcke im Sponsoring-Zeitraum",
|
||||||
|
"bchange15":"Sponsoring-Beziehung",
|
||||||
|
"bchange16":"Sponsorkonto",
|
||||||
|
"bchange17":"Sponsoring-Schlüssel kopieren",
|
||||||
|
"bchange18":"Prägen beginnen",
|
||||||
|
"bchange19":"Erfolg! Sie prägen derzeit."
|
||||||
|
},
|
||||||
"walletpage":{
|
"walletpage":{
|
||||||
"wchange1":"Hole Kontostand ...",
|
"wchange1":"Hole Kontostand ...",
|
||||||
"wchange2":"Aktuelle Brieftasche",
|
"wchange2":"Aktuelle Brieftasche",
|
||||||
@ -224,7 +239,8 @@
|
|||||||
"wchange41":"Status",
|
"wchange41":"Status",
|
||||||
"wchange42":"Bestätigungen",
|
"wchange42":"Bestätigungen",
|
||||||
"wchange43":"Ihre Transaktion wird erst angezeigt, wenn sie bestätigt wurde. Seien Sie geduldig...",
|
"wchange43":"Ihre Transaktion wird erst angezeigt, wenn sie bestätigt wurde. Seien Sie geduldig...",
|
||||||
"wchange44": "Bitte versuche es erneut..."
|
"wchange44":"Bitte versuche es erneut...",
|
||||||
|
"wchange45":"Sende alle"
|
||||||
},
|
},
|
||||||
"tradepage":{
|
"tradepage":{
|
||||||
"tchange1":"Handelsportal",
|
"tchange1":"Handelsportal",
|
||||||
|
@ -21,12 +21,15 @@
|
|||||||
"korean":"Coreano"
|
"korean":"Coreano"
|
||||||
},
|
},
|
||||||
"sidemenu":{
|
"sidemenu":{
|
||||||
|
"minting":"ACUÑACIÓN",
|
||||||
"mintingdetails":"DETALLES DE ACUÑACIÓN",
|
"mintingdetails":"DETALLES DE ACUÑACIÓN",
|
||||||
|
"becomeAMinter":"CONVIERTASE EN UN ACUÑADOR",
|
||||||
"wallets":"MONEDEROS",
|
"wallets":"MONEDEROS",
|
||||||
"tradeportal":"PORTAL DE COMERCIO",
|
"tradeportal":"PORTAL DE COMERCIO",
|
||||||
"rewardshare":"RECOMPENSA COMPARTIDA",
|
"rewardshare":"RECOMPENSA COMPARTIDA",
|
||||||
"nameregistration":"REGISTRO DE NOMBRE",
|
"nameregistration":"REGISTRO DE NOMBRE",
|
||||||
"websites":"SITIOS WEB",
|
"websites":"SITIOS WEB",
|
||||||
|
"management":"GESTIÓN",
|
||||||
"datamanagement":"GESTIÓN DE DATOS",
|
"datamanagement":"GESTIÓN DE DATOS",
|
||||||
"qchat":"Q-CHAT",
|
"qchat":"Q-CHAT",
|
||||||
"groupmanagement":"GESTIÓN DE GRUPO",
|
"groupmanagement":"GESTIÓN DE GRUPO",
|
||||||
@ -180,6 +183,18 @@
|
|||||||
"mchange37":"Simplemente acércate a un acuñador en Qortal que tenga el nivel suficiente para emitir una clave de patrocinio, obtén esa clave, luego vuelve aquí e introduce la clave para comenzar tu viaje de acuñación!",
|
"mchange37":"Simplemente acércate a un acuñador en Qortal que tenga el nivel suficiente para emitir una clave de patrocinio, obtén esa clave, luego vuelve aquí e introduce la clave para comenzar tu viaje de acuñación!",
|
||||||
"mchange38":"en"
|
"mchange38":"en"
|
||||||
},
|
},
|
||||||
|
"becomeMinterPage":{
|
||||||
|
"bchange7":"Introduzca la clave de patrocinio",
|
||||||
|
"bchange8":"Clave de entrada de su patrocinador aquí",
|
||||||
|
"bchange10":"Estado de patrocinio actual",
|
||||||
|
"bchange12":"Acuñación con clave de patrocinador",
|
||||||
|
"bchange13":"Bloques restantes en el período de patrocinio",
|
||||||
|
"bchange15":"Relación de patrocinio",
|
||||||
|
"bchange16":"Cuenta de patrocinador",
|
||||||
|
"bchange17":"Copiar clave de patrocinio",
|
||||||
|
"bchange18":"Empezar a acuñar",
|
||||||
|
"bchange19":"Éxito! Actualmente estás acuñando."
|
||||||
|
},
|
||||||
"walletpage":{
|
"walletpage":{
|
||||||
"wchange1":"Obteniendo saldo ...",
|
"wchange1":"Obteniendo saldo ...",
|
||||||
"wchange2":"Monedero Actual",
|
"wchange2":"Monedero Actual",
|
||||||
@ -224,7 +239,8 @@
|
|||||||
"wchange41":"Estado",
|
"wchange41":"Estado",
|
||||||
"wchange42":"Confirmaciones",
|
"wchange42":"Confirmaciones",
|
||||||
"wchange43":"Su transacción no se mostrará hasta que se confirme, sea paciente...",
|
"wchange43":"Su transacción no se mostrará hasta que se confirme, sea paciente...",
|
||||||
"wchange44": "Inténtalo de nuevo..."
|
"wchange44":"Inténtalo de nuevo...",
|
||||||
|
"wchange45":"Envia todo"
|
||||||
},
|
},
|
||||||
"tradepage":{
|
"tradepage":{
|
||||||
"tchange1":"Portal de Comercio",
|
"tchange1":"Portal de Comercio",
|
||||||
|
@ -21,12 +21,15 @@
|
|||||||
"korean":"Coréen"
|
"korean":"Coréen"
|
||||||
},
|
},
|
||||||
"sidemenu":{
|
"sidemenu":{
|
||||||
|
"minting":"MONNAIE",
|
||||||
"mintingdetails":"DETAILS DE FRAPPE",
|
"mintingdetails":"DETAILS DE FRAPPE",
|
||||||
|
"becomeAMinter":"DEVENIR UN FRAPPEUR",
|
||||||
"wallets":"PORTEFEUILLES",
|
"wallets":"PORTEFEUILLES",
|
||||||
"tradeportal":"PORTAIL DE COMMERCE",
|
"tradeportal":"PORTAIL DE COMMERCE",
|
||||||
"rewardshare":"PARTAGE DE RECOMPENCES",
|
"rewardshare":"PARTAGE DE RECOMPENCES",
|
||||||
"nameregistration":"ENREGISTREMENT DE NOM",
|
"nameregistration":"ENREGISTREMENT DE NOM",
|
||||||
"websites":"SITES WEB",
|
"websites":"SITES WEB",
|
||||||
|
"management":"GESTIÓN",
|
||||||
"datamanagement":"GESTION DE DONNEES",
|
"datamanagement":"GESTION DE DONNEES",
|
||||||
"qchat":"Q-CHAT",
|
"qchat":"Q-CHAT",
|
||||||
"groupmanagement":"GESTION DE GROUPES",
|
"groupmanagement":"GESTION DE GROUPES",
|
||||||
@ -180,6 +183,18 @@
|
|||||||
"mchange37":"Il vous suffit de communiquer avec un frappeur de Qortal qui est assez haut placé pour émettre une clé de parrainage, d’obtenir cette clé, puis de revenir ici et d’entrer la clé pour commencer à frapper. !",
|
"mchange37":"Il vous suffit de communiquer avec un frappeur de Qortal qui est assez haut placé pour émettre une clé de parrainage, d’obtenir cette clé, puis de revenir ici et d’entrer la clé pour commencer à frapper. !",
|
||||||
"mchange38":"dans"
|
"mchange38":"dans"
|
||||||
},
|
},
|
||||||
|
"becomeMinterPage":{
|
||||||
|
"bchange7":"Entrez la clé de parrainage",
|
||||||
|
"bchange8":"Entrez la clé de votre parrain ici",
|
||||||
|
"bchange10":"Statut actuel du parrainage",
|
||||||
|
"bchange12":"Frappe avec clé de sponsor",
|
||||||
|
"bchange13":"Blocages restants pendant la période de parrainage",
|
||||||
|
"bchange15":"Relation de parrainage",
|
||||||
|
"bchange16":"Compte Parrain",
|
||||||
|
"bchange17":"Copier la clé de parrainage",
|
||||||
|
"bchange18":"Commencer à frapper",
|
||||||
|
"bchange19":"Succès! Vous frappez actuellement."
|
||||||
|
},
|
||||||
"walletpage":{
|
"walletpage":{
|
||||||
"wchange1":"Récupération du solde ...",
|
"wchange1":"Récupération du solde ...",
|
||||||
"wchange2":"Portefeuille actuel",
|
"wchange2":"Portefeuille actuel",
|
||||||
@ -224,7 +239,8 @@
|
|||||||
"wchange41":"Status",
|
"wchange41":"Status",
|
||||||
"wchange42":"Confirmations",
|
"wchange42":"Confirmations",
|
||||||
"wchange43":"Votre transaction ne s'affichera pas tant qu'elle n'aura pas été confirmée, soyez patient...",
|
"wchange43":"Votre transaction ne s'affichera pas tant qu'elle n'aura pas été confirmée, soyez patient...",
|
||||||
"wchange44": "Veuillez réessayer..."
|
"wchange44":"Veuillez réessayer...",
|
||||||
|
"wchange45":"Envoyer tout"
|
||||||
},
|
},
|
||||||
"tradepage":{
|
"tradepage":{
|
||||||
"tchange1":"Portail de commerce",
|
"tchange1":"Portail de commerce",
|
||||||
|
@ -22,12 +22,15 @@
|
|||||||
"korean":"कोरियाई"
|
"korean":"कोरियाई"
|
||||||
},
|
},
|
||||||
"sidemenu":{
|
"sidemenu":{
|
||||||
|
"minting":"मिंटिंग",
|
||||||
"mintingdetails":"खनन विवरण",
|
"mintingdetails":"खनन विवरण",
|
||||||
|
"becomeAMinter":"एक मिन्टर बनें",
|
||||||
"wallets":"वॉलेट",
|
"wallets":"वॉलेट",
|
||||||
"tradeportal":"व्यापार पोर्टल",
|
"tradeportal":"व्यापार पोर्टल",
|
||||||
"rewardshare":"रिवॉर्ड शेयर",
|
"rewardshare":"रिवॉर्ड शेयर",
|
||||||
"nameregistration":"नाम पंजीकरण",
|
"nameregistration":"नाम पंजीकरण",
|
||||||
"websites":"वेबसाइटों",
|
"websites":"वेबसाइटों",
|
||||||
|
"management":"प्रबंधन",
|
||||||
"datamanagement":"डेटा प्रबंधन",
|
"datamanagement":"डेटा प्रबंधन",
|
||||||
"qchat":"क्यू-चैट",
|
"qchat":"क्यू-चैट",
|
||||||
"groupmanagement":"समूह प्रबंधन",
|
"groupmanagement":"समूह प्रबंधन",
|
||||||
@ -181,6 +184,18 @@
|
|||||||
"mchange37":"बस क्वॉर्टल में एक मिन्टर तक पहुंचें जो प्रायोजन कुंजी जारी करने के लिए पर्याप्त उच्च स्तर का है, उस कुंजी को प्राप्त करें, फिर यहां वापस आएं और अपनी खनन यात्रा शुरू करने के लिए कुंजी इनपुट करें!",
|
"mchange37":"बस क्वॉर्टल में एक मिन्टर तक पहुंचें जो प्रायोजन कुंजी जारी करने के लिए पर्याप्त उच्च स्तर का है, उस कुंजी को प्राप्त करें, फिर यहां वापस आएं और अपनी खनन यात्रा शुरू करने के लिए कुंजी इनपुट करें!",
|
||||||
"mchange38":"में"
|
"mchange38":"में"
|
||||||
},
|
},
|
||||||
|
"becomeMinterPage":{
|
||||||
|
"bchange7":"प्रायोजन कुंजी दर्ज करें",
|
||||||
|
"bchange8":"यहां आपके प्रायोजक से इनपुट कुंजी",
|
||||||
|
"bchange10":"वर्तमान प्रायोजन स्थिति",
|
||||||
|
"bchange12":"प्रायोजक कुंजी के साथ मिंटिंग",
|
||||||
|
"bchange13":"प्रायोजन अवधि में शेष ब्लॉक",
|
||||||
|
"bchange15":"प्रायोजन संबंध",
|
||||||
|
"bchange16":"प्रायोजक खाता",
|
||||||
|
"bchange17":"कॉपी प्रायोजन कुंजी",
|
||||||
|
"bchange18":"मिंटिंग शुरू करें",
|
||||||
|
"bchange19":"सफलता! आप वर्तमान में खनन कर रहे हैं।"
|
||||||
|
},
|
||||||
"walletpage":{
|
"walletpage":{
|
||||||
"wchange1":"शेष लाया जा रहा है...",
|
"wchange1":"शेष लाया जा रहा है...",
|
||||||
"wchange2":"वर्तमान वॉलेट",
|
"wchange2":"वर्तमान वॉलेट",
|
||||||
@ -225,7 +240,8 @@
|
|||||||
"wchange41":"स्थिति",
|
"wchange41":"स्थिति",
|
||||||
"wchange42":"पुष्टियों",
|
"wchange42":"पुष्टियों",
|
||||||
"wchange43":"कन्फर्म होने तक आपका ट्रांजैक्शन नहीं दिखेगा, धैर्य रखें...",
|
"wchange43":"कन्फर्म होने तक आपका ट्रांजैक्शन नहीं दिखेगा, धैर्य रखें...",
|
||||||
"wchange44": "कृपया पुन: प्रयास करें..."
|
"wchange44":"कृपया पुन: प्रयास करें...",
|
||||||
|
"wchange45":"सब भेजें"
|
||||||
},
|
},
|
||||||
"tradepage":{
|
"tradepage":{
|
||||||
"tchange1":"व्यापार पोर्टल",
|
"tchange1":"व्यापार पोर्टल",
|
||||||
|
@ -21,12 +21,15 @@
|
|||||||
"korean":"Korejski"
|
"korean":"Korejski"
|
||||||
},
|
},
|
||||||
"sidemenu":{
|
"sidemenu":{
|
||||||
|
"minting":"KOVANJE",
|
||||||
"mintingdetails":"DETALJI O MINTANJU",
|
"mintingdetails":"DETALJI O MINTANJU",
|
||||||
|
"becomeAMinter":"POSTANI MINTER",
|
||||||
"wallets":"NOVČANICI",
|
"wallets":"NOVČANICI",
|
||||||
"tradeportal":"PORTAL RAZMJENE",
|
"tradeportal":"PORTAL RAZMJENE",
|
||||||
"rewardshare":"NAGRADNI UDIO",
|
"rewardshare":"NAGRADNI UDIO",
|
||||||
"nameregistration":"REGISTRACIJA IMENA",
|
"nameregistration":"REGISTRACIJA IMENA",
|
||||||
"websites":"WEB STRANICE",
|
"websites":"WEB STRANICE",
|
||||||
|
"management":"UPRAVLJANJE",
|
||||||
"datamanagement":"UPRAVLJANJE PODACIMA",
|
"datamanagement":"UPRAVLJANJE PODACIMA",
|
||||||
"qchat":"Q-ČAVRLJANJE",
|
"qchat":"Q-ČAVRLJANJE",
|
||||||
"groupmanagement":"UPRAVLJANJE GRUPAMA",
|
"groupmanagement":"UPRAVLJANJE GRUPAMA",
|
||||||
@ -180,6 +183,18 @@
|
|||||||
"mchange37":"Jednostavno kontaktirajte Mintera u Qortalu koji je dovoljno visok level za izdavanje sponzorskog ključa, nabavite taj ključ, a zatim se vratite ovdje i unesite ključ za početak vašeg minterskog putovanja!",
|
"mchange37":"Jednostavno kontaktirajte Mintera u Qortalu koji je dovoljno visok level za izdavanje sponzorskog ključa, nabavite taj ključ, a zatim se vratite ovdje i unesite ključ za početak vašeg minterskog putovanja!",
|
||||||
"mchange38":"za"
|
"mchange38":"za"
|
||||||
},
|
},
|
||||||
|
"becomeMinterPage":{
|
||||||
|
"bchange7":"Unesite ključ sponzorstva",
|
||||||
|
"bchange8":"Ovdje unesite ključ vašeg sponzora",
|
||||||
|
"bchange10":"Trenutačni status sponzorstva",
|
||||||
|
"bchange12":"Kovanje sa sponzorskim ključem",
|
||||||
|
"bchange13":"Preostali blokovi u razdoblju sponzoriranja",
|
||||||
|
"bchange15":"Sponzorski odnos",
|
||||||
|
"bchange16":"Račun sponzora",
|
||||||
|
"bchange17":"Kopiraj ključ sponzorstva",
|
||||||
|
"bchange18":"Pokrenite kovanje",
|
||||||
|
"bchange19":"Uspjeh! Trenutno kovate."
|
||||||
|
},
|
||||||
"walletpage":{
|
"walletpage":{
|
||||||
"wchange1":"Dohvaćanje stanja ...",
|
"wchange1":"Dohvaćanje stanja ...",
|
||||||
"wchange2":"Trenutni novčanik",
|
"wchange2":"Trenutni novčanik",
|
||||||
@ -224,7 +239,8 @@
|
|||||||
"wchange41":"Status",
|
"wchange41":"Status",
|
||||||
"wchange42":"Potvrde",
|
"wchange42":"Potvrde",
|
||||||
"wchange43":"Vaša transakcija se neće prikazati dok se ne potvrdi, budite strpljivi...",
|
"wchange43":"Vaša transakcija se neće prikazati dok se ne potvrdi, budite strpljivi...",
|
||||||
"wchange44": "Molim te pokušaj ponovno..."
|
"wchange44":"Molim te pokušaj ponovno...",
|
||||||
|
"wchange45":"Pošalji sve"
|
||||||
},
|
},
|
||||||
"tradepage":{
|
"tradepage":{
|
||||||
"tchange1":"Portal razmjene",
|
"tchange1":"Portal razmjene",
|
||||||
|
@ -21,12 +21,15 @@
|
|||||||
"korean":"Koreai"
|
"korean":"Koreai"
|
||||||
},
|
},
|
||||||
"sidemenu":{
|
"sidemenu":{
|
||||||
|
"minting":"BÉRTÉS",
|
||||||
"mintingdetails":"VERÉSI RÉSZLETEK",
|
"mintingdetails":"VERÉSI RÉSZLETEK",
|
||||||
"wallets": "Pénztárca",
|
"becomeAMinter":"LEGYEN PÉNZVERÓ",
|
||||||
|
"wallets":"PÉNZTÁRCA",
|
||||||
"tradeportal":"KERESKEDELEM PORTÁL",
|
"tradeportal":"KERESKEDELEM PORTÁL",
|
||||||
"rewardshare":"JUTALOM RÉSZVÉNY",
|
"rewardshare":"JUTALOM RÉSZVÉNY",
|
||||||
"nameregistration":"NÉV REGISZTRÁCIÓ",
|
"nameregistration":"NÉV REGISZTRÁCIÓ",
|
||||||
"websites":"WEBHELY",
|
"websites":"WEBHELY",
|
||||||
|
"management":"MENEDZSMENT",
|
||||||
"datamanagement":"ADATKEZELÉS",
|
"datamanagement":"ADATKEZELÉS",
|
||||||
"qchat":"Q-CHAT",
|
"qchat":"Q-CHAT",
|
||||||
"groupmanagement":"CSOPORTKEZELÉS",
|
"groupmanagement":"CSOPORTKEZELÉS",
|
||||||
@ -180,6 +183,18 @@
|
|||||||
"mchange37":"Egyszerűen lépjen kapcsolatba egy Qortal-i pénzverdével, aki elég magas ahhoz, hogy kiadjon egy szponzorációs kulcsot, megszerezze azt a kulcsot, majd jöjjön vissza ide, és adja meg a kulcsot a verési út megkezdéséhez!",
|
"mchange37":"Egyszerűen lépjen kapcsolatba egy Qortal-i pénzverdével, aki elég magas ahhoz, hogy kiadjon egy szponzorációs kulcsot, megszerezze azt a kulcsot, majd jöjjön vissza ide, és adja meg a kulcsot a verési út megkezdéséhez!",
|
||||||
"mchange38":"Ben"
|
"mchange38":"Ben"
|
||||||
},
|
},
|
||||||
|
"becomeMinterPage":{
|
||||||
|
"bchange7":"Írja be a szponzori kulcsot",
|
||||||
|
"bchange8":"Itt adja meg a szponzorától kapott kulcsot",
|
||||||
|
"bchange10":"Jelenlegi szponzorálási állapot",
|
||||||
|
"bchange12":"Pénzverés szponzorkulccsal",
|
||||||
|
"bchange13":"A szponzorálási időszakból hátralévő blokkok",
|
||||||
|
"bchange15":"Szponzori kapcsolat",
|
||||||
|
"bchange16":"Szponzori fiók",
|
||||||
|
"bchange17":"Szponzori kulcs másolása",
|
||||||
|
"bchange18":"Kezdje el a pénzverést",
|
||||||
|
"bchange19":"Siker! Jelenleg pénzverés folyik."
|
||||||
|
},
|
||||||
"walletpage":{
|
"walletpage":{
|
||||||
"wchange1":"Egyenleg lekérése...",
|
"wchange1":"Egyenleg lekérése...",
|
||||||
"wchange2":"Jelenlegi Pénztárca",
|
"wchange2":"Jelenlegi Pénztárca",
|
||||||
@ -224,7 +239,8 @@
|
|||||||
"wchange41":"Állapot",
|
"wchange41":"Állapot",
|
||||||
"wchange42":"Visszaigazolások",
|
"wchange42":"Visszaigazolások",
|
||||||
"wchange43":"A tranzakció nem jelenik meg a megerősítésig, legyen türelemmel...",
|
"wchange43":"A tranzakció nem jelenik meg a megerősítésig, legyen türelemmel...",
|
||||||
"wchange44": "Kérlek próbáld újra..."
|
"wchange44":"Kérlek próbáld újra...",
|
||||||
|
"wchange45":"Az összes elküldése"
|
||||||
},
|
},
|
||||||
"tradepage":{
|
"tradepage":{
|
||||||
"tchange1":"Kereskedelmi Portál",
|
"tchange1":"Kereskedelmi Portál",
|
||||||
|
@ -21,12 +21,15 @@
|
|||||||
"korean":"Coreano"
|
"korean":"Coreano"
|
||||||
},
|
},
|
||||||
"sidemenu":{
|
"sidemenu":{
|
||||||
|
"minting":"CONIAZIONE",
|
||||||
"mintingdetails":"DETTAGLI DI MINTING",
|
"mintingdetails":"DETTAGLI DI MINTING",
|
||||||
|
"becomeAMinter":"DIVENTA UN MINATORE",
|
||||||
"wallets":"PORTAFOGLI",
|
"wallets":"PORTAFOGLI",
|
||||||
"tradeportal":"PORTALE COMMERCIALE",
|
"tradeportal":"PORTALE COMMERCIALE",
|
||||||
"rewardshare":"QUOTA DI RICOMPENSA",
|
"rewardshare":"QUOTA DI RICOMPENSA",
|
||||||
"nameregistration":"REGISTRAZIONE DI NOME",
|
"nameregistration":"REGISTRAZIONE DI NOME",
|
||||||
"websites":"SITI",
|
"websites":"SITI",
|
||||||
|
"management":"GESTIONE",
|
||||||
"datamanagement":"GESTIONE DATI",
|
"datamanagement":"GESTIONE DATI",
|
||||||
"qchat":"Q-CHAT",
|
"qchat":"Q-CHAT",
|
||||||
"groupmanagement":"GESTIONE DEI GRUPPI",
|
"groupmanagement":"GESTIONE DEI GRUPPI",
|
||||||
@ -180,6 +183,18 @@
|
|||||||
"mchange37":"Semplicemente trova uno/a minatore di un livello sufficientemente alto per poter fornire una chiave di sponsorizzazione, ottieni la chiave, poi torna qui e inserisci la chiave per iniziare il tuo viaggio nella minazione!",
|
"mchange37":"Semplicemente trova uno/a minatore di un livello sufficientemente alto per poter fornire una chiave di sponsorizzazione, ottieni la chiave, poi torna qui e inserisci la chiave per iniziare il tuo viaggio nella minazione!",
|
||||||
"mchange38":"in"
|
"mchange38":"in"
|
||||||
},
|
},
|
||||||
|
"becomeMinterPage":{
|
||||||
|
"bchange7":"Inserisci la chiave di sponsorizzazione",
|
||||||
|
"bchange8":"Inserisci qui la chiave del tuo sponsor",
|
||||||
|
"bchange10":"Stato di sponsorizzazione attuale",
|
||||||
|
"bchange12":"Conio con chiave sponsor",
|
||||||
|
"bchange13":"Blocchi rimanenti nel periodo di sponsorizzazione",
|
||||||
|
"bchange15":"Relazione di sponsorizzazione",
|
||||||
|
"bchange16":"Conto sponsor",
|
||||||
|
"bchange17":"Copia la chiave di sponsorizzazione",
|
||||||
|
"bchange18":"Inizia a coniare",
|
||||||
|
"bchange19":"Successo! Attualmente stai coniando."
|
||||||
|
},
|
||||||
"walletpage":{
|
"walletpage":{
|
||||||
"wchange1":"Recupero saldo ...",
|
"wchange1":"Recupero saldo ...",
|
||||||
"wchange2":"Portafoglio corrente",
|
"wchange2":"Portafoglio corrente",
|
||||||
@ -224,7 +239,8 @@
|
|||||||
"wchange41":"Stato",
|
"wchange41":"Stato",
|
||||||
"wchange42":"Conferme",
|
"wchange42":"Conferme",
|
||||||
"wchange43":"La tua transazione non verrà mostrata fino a quando non sarà confermata, sii paziente...",
|
"wchange43":"La tua transazione non verrà mostrata fino a quando non sarà confermata, sii paziente...",
|
||||||
"wchange44": "Per favore riprova..."
|
"wchange44":"Per favore riprova...",
|
||||||
|
"wchange45":"Invia tutto"
|
||||||
},
|
},
|
||||||
"tradepage":{
|
"tradepage":{
|
||||||
"tchange1":"Portale commerciale",
|
"tchange1":"Portale commerciale",
|
||||||
|
@ -21,12 +21,15 @@
|
|||||||
"korean":"한국어"
|
"korean":"한국어"
|
||||||
},
|
},
|
||||||
"sidemenu":{
|
"sidemenu":{
|
||||||
|
"minting":"주조",
|
||||||
"mintingdetails":"민팅 세부정보",
|
"mintingdetails":"민팅 세부정보",
|
||||||
|
"becomeAMinter":"민터 되기",
|
||||||
"wallets":"지갑",
|
"wallets":"지갑",
|
||||||
"tradeportal":"무역 포털",
|
"tradeportal":"무역 포털",
|
||||||
"rewardshare":"보상 공유",
|
"rewardshare":"보상 공유",
|
||||||
"nameregistration":"이름 등록",
|
"nameregistration":"이름 등록",
|
||||||
"websites":"웹사이트",
|
"websites":"웹사이트",
|
||||||
|
"management":"관리",
|
||||||
"datamanagement":"데이터 관리",
|
"datamanagement":"데이터 관리",
|
||||||
"qchat":"Q-CHAT",
|
"qchat":"Q-CHAT",
|
||||||
"groupmanagement":"그룹 관리",
|
"groupmanagement":"그룹 관리",
|
||||||
@ -180,6 +183,18 @@
|
|||||||
"mchange37":"qortal에 있는 후원 키를 발급할 수 있을 정도로 높은 수준의 광부에게 연락하여 해당 키를 받은 다음 여기로 돌아와 주조 여행을 시작할 수 있는 키를 입력하기만 하면 됩니다.",
|
"mchange37":"qortal에 있는 후원 키를 발급할 수 있을 정도로 높은 수준의 광부에게 연락하여 해당 키를 받은 다음 여기로 돌아와 주조 여행을 시작할 수 있는 키를 입력하기만 하면 됩니다.",
|
||||||
"mchange38":"안"
|
"mchange38":"안"
|
||||||
},
|
},
|
||||||
|
"becomeMinterPage":{
|
||||||
|
"bchange7":"후원 키 입력",
|
||||||
|
"bchange8":"여기에 스폰서의 키를 입력하세요.",
|
||||||
|
"bchange10":"현재 후원현황",
|
||||||
|
"bchange12":"후원 키로 주조",
|
||||||
|
"bchange13":"후원 기간 남은 블록",
|
||||||
|
"bchange15":"후원 관계",
|
||||||
|
"bchange16":"후원자 계정",
|
||||||
|
"bchange17":"후원 키 복사",
|
||||||
|
"bchange18":"주조 시작",
|
||||||
|
"bchange19":"성공! 당신은 현재 주조 중입니다."
|
||||||
|
},
|
||||||
"walletpage":{
|
"walletpage":{
|
||||||
"wchange1":"밸런스를 가져오는 중...",
|
"wchange1":"밸런스를 가져오는 중...",
|
||||||
"wchange2":"현재 지갑",
|
"wchange2":"현재 지갑",
|
||||||
@ -224,7 +239,8 @@
|
|||||||
"wchange41":"상황",
|
"wchange41":"상황",
|
||||||
"wchange42":"확인",
|
"wchange42":"확인",
|
||||||
"wchange43":"확인될 때까지 거래가 표시되지 않습니다. 기다려 주십시오.",
|
"wchange43":"확인될 때까지 거래가 표시되지 않습니다. 기다려 주십시오.",
|
||||||
"wchange44": "다시 시도하십시오..."
|
"wchange44":"다시 시도하십시오...",
|
||||||
|
"wchange45":"모두 보내기"
|
||||||
},
|
},
|
||||||
"tradepage":{
|
"tradepage":{
|
||||||
"tchange1":"무역 포털",
|
"tchange1":"무역 포털",
|
||||||
|
@ -21,12 +21,15 @@
|
|||||||
"korean":"Koreansk"
|
"korean":"Koreansk"
|
||||||
},
|
},
|
||||||
"sidemenu":{
|
"sidemenu":{
|
||||||
|
"minting":"UTBYTTE",
|
||||||
"mintingdetails":"MINTEDETALJER",
|
"mintingdetails":"MINTEDETALJER",
|
||||||
|
"becomeAMinter":"BLI EN MINTER",
|
||||||
"wallets":"LOMMEBØKER",
|
"wallets":"LOMMEBØKER",
|
||||||
"tradeportal":"HANDELSPORTAL",
|
"tradeportal":"HANDELSPORTAL",
|
||||||
"rewardshare":"BELØNNINGSDEL",
|
"rewardshare":"BELØNNINGSDEL",
|
||||||
"nameregistration":"REGISTRERING AV NAVN",
|
"nameregistration":"REGISTRERING AV NAVN",
|
||||||
"websites":"NETTSIDER",
|
"websites":"NETTSIDER",
|
||||||
|
"management":"LEDELSE",
|
||||||
"datamanagement":"DATA-ADMINISTRASJON",
|
"datamanagement":"DATA-ADMINISTRASJON",
|
||||||
"qchat":"Q-CHAT",
|
"qchat":"Q-CHAT",
|
||||||
"groupmanagement":"GRUPPEADMINISTRASJON",
|
"groupmanagement":"GRUPPEADMINISTRASJON",
|
||||||
@ -180,6 +183,18 @@
|
|||||||
"mchange37":"Simpelthen ta kontakt med en minter i Qortal som har et høyt nok nivå til å utstede en sponsenøkkel, skaff den nøkkelen, og kom så tilbake hit og fyll inn nøkkelen for å begynne mintereisen!",
|
"mchange37":"Simpelthen ta kontakt med en minter i Qortal som har et høyt nok nivå til å utstede en sponsenøkkel, skaff den nøkkelen, og kom så tilbake hit og fyll inn nøkkelen for å begynne mintereisen!",
|
||||||
"mchange38":"i"
|
"mchange38":"i"
|
||||||
},
|
},
|
||||||
|
"becomeMinterPage":{
|
||||||
|
"bchange7":"Skriv inn sponsornøkkel",
|
||||||
|
"bchange8":"Inntast nøkkel fra sponsoren din her",
|
||||||
|
"bchange10":"Nåværende sponsorstatus",
|
||||||
|
"bchange12":"Preging med sponsornøkkel",
|
||||||
|
"bchange13":"Blokkerer som gjenstår i sponsorperioden",
|
||||||
|
"bchange15":"Sponsorforhold",
|
||||||
|
"bchange16":"Sponsorkonto",
|
||||||
|
"bchange17":"Kopier sponsornøkkel",
|
||||||
|
"bchange18":"Start mynting",
|
||||||
|
"bchange19":"Suksess! Du preger for øyeblikket."
|
||||||
|
},
|
||||||
"walletpage":{
|
"walletpage":{
|
||||||
"wchange1":"Henter saldo ...",
|
"wchange1":"Henter saldo ...",
|
||||||
"wchange2":"Nåværende lommebok",
|
"wchange2":"Nåværende lommebok",
|
||||||
@ -222,7 +237,10 @@
|
|||||||
"wchange39":"Kan ikke kopiere adressen.",
|
"wchange39":"Kan ikke kopiere adressen.",
|
||||||
"wchange40":"BETALING",
|
"wchange40":"BETALING",
|
||||||
"wchange41":"Status",
|
"wchange41":"Status",
|
||||||
"wchange42": "Bekreftelser"
|
"wchange42":"Bekreftelser",
|
||||||
|
"wchange43":"Transaksjonen din vises ikke før den er bekreftet, vær tålmodig...",
|
||||||
|
"wchange44":"Vær så snill, prøv på nytt...",
|
||||||
|
"wchange45":"Send alle"
|
||||||
},
|
},
|
||||||
"tradepage":{
|
"tradepage":{
|
||||||
"tchange1":"Handelsportal",
|
"tchange1":"Handelsportal",
|
||||||
|
@ -21,12 +21,15 @@
|
|||||||
"korean":"Koreański"
|
"korean":"Koreański"
|
||||||
},
|
},
|
||||||
"sidemenu":{
|
"sidemenu":{
|
||||||
|
"minting":"BICIE",
|
||||||
"mintingdetails":"SZCZEGÓŁY MINTOWANIA",
|
"mintingdetails":"SZCZEGÓŁY MINTOWANIA",
|
||||||
|
"becomeAMinter":"ZOSTAN MINTEREM",
|
||||||
"wallets":"PORTFELE",
|
"wallets":"PORTFELE",
|
||||||
"tradeportal":"PORTAL HANDLOWY",
|
"tradeportal":"PORTAL HANDLOWY",
|
||||||
"rewardshare":"UDZIAŁ W NAGRODZIE",
|
"rewardshare":"UDZIAŁ W NAGRODZIE",
|
||||||
"nameregistration":"REJESTRACJA IMIENIA",
|
"nameregistration":"REJESTRACJA IMIENIA",
|
||||||
"websites":"STRONY INTERNETOWE",
|
"websites":"STRONY INTERNETOWE",
|
||||||
|
"management":"KIEROWNICTWO",
|
||||||
"datamanagement":"ZARZĄDZANIE DANYMI",
|
"datamanagement":"ZARZĄDZANIE DANYMI",
|
||||||
"qchat":"Q-CHAT",
|
"qchat":"Q-CHAT",
|
||||||
"groupmanagement":"ZARZĄDZANIE GRUPAMI",
|
"groupmanagement":"ZARZĄDZANIE GRUPAMI",
|
||||||
@ -180,6 +183,18 @@
|
|||||||
"mchange37":"Po prostu skontaktuj się z minterem w Qortal, który jest wystarczająco wysoko, aby mógł wydać Ci klucz sponsorski, zdobądź ten klucz, a następnie wróć tutaj i wprowadź klucz, aby rozpocząć swoją podróż minterską!",
|
"mchange37":"Po prostu skontaktuj się z minterem w Qortal, który jest wystarczająco wysoko, aby mógł wydać Ci klucz sponsorski, zdobądź ten klucz, a następnie wróć tutaj i wprowadź klucz, aby rozpocząć swoją podróż minterską!",
|
||||||
"mchange38":"wejdź"
|
"mchange38":"wejdź"
|
||||||
},
|
},
|
||||||
|
"becomeMinterPage":{
|
||||||
|
"bchange7":"Wprowadź klucz sponsorowania",
|
||||||
|
"bchange8":"Wprowadź klucz od swojego sponsora tutaj",
|
||||||
|
"bchange10":"Aktualny status sponsorowania",
|
||||||
|
"bchange12":"Minting z kluczem sponsora",
|
||||||
|
"bchange13":"Bloki pozostałe w okresie sponsorowania",
|
||||||
|
"bchange15":"Relacja sponsorska",
|
||||||
|
"bchange16":"Konto sponsora",
|
||||||
|
"bchange17":"Kopiuj klucz sponsorski",
|
||||||
|
"bchange18":"Rozpocznij bicie",
|
||||||
|
"bchange19":"Powodzenie! Aktualnie bijesz."
|
||||||
|
},
|
||||||
"walletpage":{
|
"walletpage":{
|
||||||
"wchange1":"Pobieram saldo...",
|
"wchange1":"Pobieram saldo...",
|
||||||
"wchange2":"Bieżący Portfel",
|
"wchange2":"Bieżący Portfel",
|
||||||
@ -224,7 +239,8 @@
|
|||||||
"wchange41":"Status",
|
"wchange41":"Status",
|
||||||
"wchange42":"Potwierdzenia",
|
"wchange42":"Potwierdzenia",
|
||||||
"wchange43":"Twoja transakcja nie pojawi się, dopóki nie zostanie potwierdzona, bądź cierpliwy...",
|
"wchange43":"Twoja transakcja nie pojawi się, dopóki nie zostanie potwierdzona, bądź cierpliwy...",
|
||||||
"wchange44": "Proszę spróbuj ponownie..."
|
"wchange44":"Proszę spróbuj ponownie...",
|
||||||
|
"wchange45":"Wyślij wszystko"
|
||||||
},
|
},
|
||||||
"tradepage":{
|
"tradepage":{
|
||||||
"tchange1":"Portal Handlowy",
|
"tchange1":"Portal Handlowy",
|
||||||
|
@ -21,12 +21,15 @@
|
|||||||
"korean":"Coreano"
|
"korean":"Coreano"
|
||||||
},
|
},
|
||||||
"sidemenu":{
|
"sidemenu":{
|
||||||
|
"minting":"CARTEIRA",
|
||||||
"mintingdetails":"DETALHES DA MINERAÇÃO",
|
"mintingdetails":"DETALHES DA MINERAÇÃO",
|
||||||
|
"becomeAMinter":"TORNE-SE UM MINERADOR",
|
||||||
"wallets":"CARTEIRAS",
|
"wallets":"CARTEIRAS",
|
||||||
"tradeportal":"PORTAL DE COMÉRCIO",
|
"tradeportal":"PORTAL DE COMÉRCIO",
|
||||||
"rewardshare":"PARTICIPAÇÃO NA RECOMPENSA",
|
"rewardshare":"PARTICIPAÇÃO NA RECOMPENSA",
|
||||||
"nameregistration":"REGISTRO DE NOME",
|
"nameregistration":"REGISTRO DE NOME",
|
||||||
"websites":"SITES",
|
"websites":"SITES",
|
||||||
|
"management":"GESTÃO",
|
||||||
"datamanagement":"GESTÃO DE DADOS",
|
"datamanagement":"GESTÃO DE DADOS",
|
||||||
"qchat":"Q-CHAT",
|
"qchat":"Q-CHAT",
|
||||||
"groupmanagement":"GESTÃO DE GRUPOS",
|
"groupmanagement":"GESTÃO DE GRUPOS",
|
||||||
@ -180,6 +183,18 @@
|
|||||||
"mchange37":"Mande menssagem a um minter no Qortal que seja nível 5 ou acima para emitir uma chave de patrocínio, obtenha essa chave, e em seguida, volte aqui para inserir-la e começar sua jornada de mineração !",
|
"mchange37":"Mande menssagem a um minter no Qortal que seja nível 5 ou acima para emitir uma chave de patrocínio, obtenha essa chave, e em seguida, volte aqui para inserir-la e começar sua jornada de mineração !",
|
||||||
"mchange38":"Dentro"
|
"mchange38":"Dentro"
|
||||||
},
|
},
|
||||||
|
"becomeMinterPage":{
|
||||||
|
"bchange7":"Digite a chave de patrocínio",
|
||||||
|
"bchange8":"Insira a chave do seu patrocinador aqui",
|
||||||
|
"bchange10":"Status atual do patrocínio",
|
||||||
|
"bchange12":"Cunhagem com chave de patrocinador",
|
||||||
|
"bchange13":"Blocos restantes no período de patrocínio",
|
||||||
|
"bchange15":"Relacionamento de patrocínio",
|
||||||
|
"bchange16":"Conta do patrocinador",
|
||||||
|
"bchange17":"Copiar chave de patrocínio",
|
||||||
|
"bchange18":"Iniciar a cunhagem",
|
||||||
|
"bchange19":"Sucesso! Você está cunhando no momento."
|
||||||
|
},
|
||||||
"walletpage":{
|
"walletpage":{
|
||||||
"wchange1":"Buscando Saldo ...",
|
"wchange1":"Buscando Saldo ...",
|
||||||
"wchange2":"Carteira Atual",
|
"wchange2":"Carteira Atual",
|
||||||
@ -224,7 +239,8 @@
|
|||||||
"wchange41":"Status",
|
"wchange41":"Status",
|
||||||
"wchange42":"Confirmações",
|
"wchange42":"Confirmações",
|
||||||
"wchange43":"Sua transação não será exibida até ser confirmada, seja paciente...",
|
"wchange43":"Sua transação não será exibida até ser confirmada, seja paciente...",
|
||||||
"wchange44": "Por favor, tente novamente..."
|
"wchange44":"Por favor, tente novamente...",
|
||||||
|
"wchange45":"Envie todos"
|
||||||
},
|
},
|
||||||
"tradepage":{
|
"tradepage":{
|
||||||
"tchange1":"Portal do Comércio",
|
"tchange1":"Portal do Comércio",
|
||||||
|
@ -21,12 +21,15 @@
|
|||||||
"korean":"Coreeana"
|
"korean":"Coreeana"
|
||||||
},
|
},
|
||||||
"sidemenu":{
|
"sidemenu":{
|
||||||
|
"minting":"MONTAREA",
|
||||||
"mintingdetails":"DETALII RECOMPENSARE MINTING)",
|
"mintingdetails":"DETALII RECOMPENSARE MINTING)",
|
||||||
|
"becomeAMinter":"DEVINO PRODUCATOR DE MONEDA",
|
||||||
"wallets":"PORTOFELE",
|
"wallets":"PORTOFELE",
|
||||||
"tradeportal":"PORTAL TRANZACTIONARE",
|
"tradeportal":"PORTAL TRANZACTIONARE",
|
||||||
"rewardshare":"COTA RECOMPENSA",
|
"rewardshare":"COTA RECOMPENSA",
|
||||||
"nameregistration":"INREGISTRARE NUME",
|
"nameregistration":"INREGISTRARE NUME",
|
||||||
"websites":"WEBSITE-URI",
|
"websites":"WEBSITE-URI",
|
||||||
|
"management":"MANAGEMENT",
|
||||||
"datamanagement":"GESTIONARE DATE",
|
"datamanagement":"GESTIONARE DATE",
|
||||||
"qchat":"Q-CHAT",
|
"qchat":"Q-CHAT",
|
||||||
"groupmanagement":"GESTIONARE GRUP",
|
"groupmanagement":"GESTIONARE GRUP",
|
||||||
@ -180,6 +183,18 @@
|
|||||||
"mchange37":"Pur si simplu contactati un productor de moneda din Qortal care are un nivel suficient de ridicat pentru a emite o cheie de sponsorizare, obtineti acea cheie, apoi reveniti aici si introduceti cheia pentru a va incepe calatoria de productor de moneda !",
|
"mchange37":"Pur si simplu contactati un productor de moneda din Qortal care are un nivel suficient de ridicat pentru a emite o cheie de sponsorizare, obtineti acea cheie, apoi reveniti aici si introduceti cheia pentru a va incepe calatoria de productor de moneda !",
|
||||||
"mchange38":"in"
|
"mchange38":"in"
|
||||||
},
|
},
|
||||||
|
"becomeMinterPage":{
|
||||||
|
"bchange7":"Introduceti cheia de sponsorizare",
|
||||||
|
"bchange8":"Cheia de introducere de la sponsorul dvs. aici",
|
||||||
|
"bchange10":"Starea actuala a sponsorizarii",
|
||||||
|
"bchange12":"Minting cu cheia sponsorului",
|
||||||
|
"bchange13":"Blocuri ramase în perioada de sponsorizare",
|
||||||
|
"bchange15":"Relatia de sponsorizare",
|
||||||
|
"bchange16":"Cont de sponsor",
|
||||||
|
"bchange17":"Copiati cheia de sponsorizare",
|
||||||
|
"bchange18":"Incepeti baterea",
|
||||||
|
"bchange19":"Succes! Momentan bateti."
|
||||||
|
},
|
||||||
"walletpage":{
|
"walletpage":{
|
||||||
"wchange1":"Se actualizeaza balanta ...",
|
"wchange1":"Se actualizeaza balanta ...",
|
||||||
"wchange2":"Portofel Actual",
|
"wchange2":"Portofel Actual",
|
||||||
@ -224,7 +239,8 @@
|
|||||||
"wchange41":"Stare",
|
"wchange41":"Stare",
|
||||||
"wchange42":"Confirmari",
|
"wchange42":"Confirmari",
|
||||||
"wchange43":"Tranzactia nu va aparea pana ce nu este confirmata, ai rabdare...",
|
"wchange43":"Tranzactia nu va aparea pana ce nu este confirmata, ai rabdare...",
|
||||||
"wchange44": "Te rog incearca din nou..."
|
"wchange44":"Te rog incearca din nou...",
|
||||||
|
"wchange45":"Trimite toate"
|
||||||
},
|
},
|
||||||
"tradepage":{
|
"tradepage":{
|
||||||
"tchange1":"Portal de Tranzactionare",
|
"tchange1":"Portal de Tranzactionare",
|
||||||
|
@ -21,12 +21,15 @@
|
|||||||
"korean":"Korejski"
|
"korean":"Korejski"
|
||||||
},
|
},
|
||||||
"sidemenu":{
|
"sidemenu":{
|
||||||
|
"minting":"KOVANJE",
|
||||||
"mintingdetails":"DETALJI MINTOVANJA",
|
"mintingdetails":"DETALJI MINTOVANJA",
|
||||||
|
"becomeAMinter":"POSTANITE MINTER",
|
||||||
"wallets":"NOVČANICI",
|
"wallets":"NOVČANICI",
|
||||||
"tradeportal":"TRGOVINSKI PROZOR",
|
"tradeportal":"TRGOVINSKI PROZOR",
|
||||||
"rewardshare":"UDEO U NAGRADI",
|
"rewardshare":"UDEO U NAGRADI",
|
||||||
"nameregistration":"REGISTRACIJA IMENA",
|
"nameregistration":"REGISTRACIJA IMENA",
|
||||||
"websites":"WEBSITEOVI",
|
"websites":"WEBSITEOVI",
|
||||||
|
"management":"MENADŽMENT",
|
||||||
"datamanagement":"MENADŽMENT PODATAKA",
|
"datamanagement":"MENADŽMENT PODATAKA",
|
||||||
"qchat":"Q-ĆASKANJE",
|
"qchat":"Q-ĆASKANJE",
|
||||||
"groupmanagement":"MENADŽMENT GRUPA",
|
"groupmanagement":"MENADŽMENT GRUPA",
|
||||||
@ -98,7 +101,7 @@
|
|||||||
"qr_login_menu_item":"QR Login",
|
"qr_login_menu_item":"QR Login",
|
||||||
"qr_login_description_1":"Skenirajte ovaj kod da biste otključali novčanik na drugom uređaju koristeći istu lozinku sa kojom ste se prijavili.",
|
"qr_login_description_1":"Skenirajte ovaj kod da biste otključali novčanik na drugom uređaju koristeći istu lozinku sa kojom ste se prijavili.",
|
||||||
"qr_login_description_2":"Izaberite lozinku koju ćete koristiti za otključavanje novčanika na drugom uređaju nakon skeniranja QR koda.",
|
"qr_login_description_2":"Izaberite lozinku koju ćete koristiti za otključavanje novčanika na drugom uređaju nakon skeniranja QR koda.",
|
||||||
"qr_login_button_1": "Prikaži QR kod za prijavu,
|
"qr_login_button_1":"Prikaži QR kod za prijavu",
|
||||||
"qr_login_button_2":"Generišite QR kod za prijavu",
|
"qr_login_button_2":"Generišite QR kod za prijavu",
|
||||||
"notifications":"Notifikacije",
|
"notifications":"Notifikacije",
|
||||||
"accountsecurity":"Bezbednost Naloga",
|
"accountsecurity":"Bezbednost Naloga",
|
||||||
@ -180,6 +183,18 @@
|
|||||||
"mchange37":"Jednostavno se javite bilo kom minteru u Qortal-u koji ima dovoljno visok nivo da dodeli sponzorski ključ, nabavite taj ključ, a zatim se vratite ovde i unesite taj ključ da bi započeli svoj minting putovanje!",
|
"mchange37":"Jednostavno se javite bilo kom minteru u Qortal-u koji ima dovoljno visok nivo da dodeli sponzorski ključ, nabavite taj ključ, a zatim se vratite ovde i unesite taj ključ da bi započeli svoj minting putovanje!",
|
||||||
"mchange38":"U"
|
"mchange38":"U"
|
||||||
},
|
},
|
||||||
|
"becomeMinterPage":{
|
||||||
|
"bchange7":"Unesite ključ za sponzorstvo",
|
||||||
|
"bchange8":"Ovde unesite ključ od svog sponzora",
|
||||||
|
"bchange10":"Trenutni status sponzorstva",
|
||||||
|
"bchange12":"Kovanje sa sponzorskim ključem",
|
||||||
|
"bchange13":"Preostali blokovi u periodu sponzorstva",
|
||||||
|
"bchange15":"Sponzorski odnos",
|
||||||
|
"bchange16":"Sponzorski nalog",
|
||||||
|
"bchange17":"Kopiraj sponzorski ključ",
|
||||||
|
"bchange18":"Počnite kovati",
|
||||||
|
"bchange19":"Uspeh! Trenutno kujete."
|
||||||
|
},
|
||||||
"walletpage":{
|
"walletpage":{
|
||||||
"wchange1":"Proveravam stanje ...",
|
"wchange1":"Proveravam stanje ...",
|
||||||
"wchange2":"Trenutni Novčanik",
|
"wchange2":"Trenutni Novčanik",
|
||||||
@ -224,7 +239,8 @@
|
|||||||
"wchange41":"Status",
|
"wchange41":"Status",
|
||||||
"wchange42":"Potvrde",
|
"wchange42":"Potvrde",
|
||||||
"wchange43":"Vaša transakcija se neće prikazati dok se ne potvrdi, budite strpljivi...",
|
"wchange43":"Vaša transakcija se neće prikazati dok se ne potvrdi, budite strpljivi...",
|
||||||
"wchange44": "Molim vas, pokušajte ponovo..."
|
"wchange44":"Molim vas, pokušajte ponovo...",
|
||||||
|
"wchange45":"Poslati sve"
|
||||||
},
|
},
|
||||||
"tradepage":{
|
"tradepage":{
|
||||||
"tchange1":"Trgovinski prozor",
|
"tchange1":"Trgovinski prozor",
|
||||||
|
@ -21,12 +21,15 @@
|
|||||||
"korean":"Корейский"
|
"korean":"Корейский"
|
||||||
},
|
},
|
||||||
"sidemenu":{
|
"sidemenu":{
|
||||||
|
"minting":"ЧЕКАНКA",
|
||||||
"mintingdetails":"ДЕТАЛИ ЧЕКАНКИ",
|
"mintingdetails":"ДЕТАЛИ ЧЕКАНКИ",
|
||||||
|
"becomeAMinter":"СТАТЬ МИНТЕРОМ",
|
||||||
"wallets":"КОШЕЛЬКИ",
|
"wallets":"КОШЕЛЬКИ",
|
||||||
"tradeportal":"ТОРГОВЫЙ ПОРТАЛ",
|
"tradeportal":"ТОРГОВЫЙ ПОРТАЛ",
|
||||||
"rewardshare":"ДОЛЕВОЕ УЧАСТИЕ",
|
"rewardshare":"ДОЛЕВОЕ УЧАСТИЕ",
|
||||||
"nameregistration":"РЕГИСТРАЦИЯ ИМЕНИ",
|
"nameregistration":"РЕГИСТРАЦИЯ ИМЕНИ",
|
||||||
"websites":"ВЕБ-САЙТЫ",
|
"websites":"ВЕБ-САЙТЫ",
|
||||||
|
"management":"УПРАВЛЕНИЕ",
|
||||||
"datamanagement":"УПРАВЛЕНИЕ ДАННЫМИ",
|
"datamanagement":"УПРАВЛЕНИЕ ДАННЫМИ",
|
||||||
"qchat":"Q-ЧАТ",
|
"qchat":"Q-ЧАТ",
|
||||||
"groupmanagement":"УПРАВЛЕНИЕ ГРУППАМИ",
|
"groupmanagement":"УПРАВЛЕНИЕ ГРУППАМИ",
|
||||||
@ -180,6 +183,18 @@
|
|||||||
"mchange37":"Просто обратитесь к минтеру в Qortal, уровень которого позволяет выдавать спонсорские ключи, получите этот ключ, затем вернитесь сюда и введите ключ, чтобы начать чеканку!",
|
"mchange37":"Просто обратитесь к минтеру в Qortal, уровень которого позволяет выдавать спонсорские ключи, получите этот ключ, затем вернитесь сюда и введите ключ, чтобы начать чеканку!",
|
||||||
"mchange38":"в"
|
"mchange38":"в"
|
||||||
},
|
},
|
||||||
|
"becomeMinterPage":{
|
||||||
|
"bchange7":"Введите спонсорский ключ",
|
||||||
|
"bchange8":"Введите ключ от вашего спонсора здесь",
|
||||||
|
"bchange10":"Текущий спонсорский статус",
|
||||||
|
"bchange12":"Минтинг со спонсорским ключом",
|
||||||
|
"bchange13":"Блоки, оставшиеся в периоде спонсорства",
|
||||||
|
"bchange15":"Спонсорские отношения",
|
||||||
|
"bchange16":"Спонсорский аккаунт",
|
||||||
|
"bchange17":"Копировать спонсорский ключ",
|
||||||
|
"bchange18":"Начать чеканку",
|
||||||
|
"bchange19":"Успех! В настоящее время вы занимаетесь чеканкой."
|
||||||
|
},
|
||||||
"walletpage":{
|
"walletpage":{
|
||||||
"wchange1":"Получение баланса...",
|
"wchange1":"Получение баланса...",
|
||||||
"wchange2":"Текущий кошелек",
|
"wchange2":"Текущий кошелек",
|
||||||
@ -197,7 +212,7 @@
|
|||||||
"wchange14":"Время",
|
"wchange14":"Время",
|
||||||
"wchange15":"Подпись транзакции",
|
"wchange15":"Подпись транзакции",
|
||||||
"wchange16":"Хэш транзакции",
|
"wchange16":"Хэш транзакции",
|
||||||
"wchange17": "Отправитель",
|
"wchange17":"Отправлять",
|
||||||
"wchange18":"От адреса",
|
"wchange18":"От адреса",
|
||||||
"wchange19":"Доступные средства",
|
"wchange19":"Доступные средства",
|
||||||
"wchange20":"Кому (адрес или имя)",
|
"wchange20":"Кому (адрес или имя)",
|
||||||
@ -224,7 +239,8 @@
|
|||||||
"wchange41":"Статус",
|
"wchange41":"Статус",
|
||||||
"wchange42":"Подтверждено",
|
"wchange42":"Подтверждено",
|
||||||
"wchange43":"Ваша транзакция не будет отображаться, пока не будет подтверждена, наберитесь терпения...",
|
"wchange43":"Ваша транзакция не будет отображаться, пока не будет подтверждена, наберитесь терпения...",
|
||||||
"wchange44": "Пожалуйста, попробуйте еще раз..."
|
"wchange44":"Пожалуйста, попробуйте еще раз...",
|
||||||
|
"wchange45":"Отправь все"
|
||||||
},
|
},
|
||||||
"tradepage":{
|
"tradepage":{
|
||||||
"tchange1":"Торговый портал",
|
"tchange1":"Торговый портал",
|
||||||
|
@ -21,12 +21,15 @@
|
|||||||
"korean":"Korean"
|
"korean":"Korean"
|
||||||
},
|
},
|
||||||
"sidemenu":{
|
"sidemenu":{
|
||||||
|
"minting":"MINTING",
|
||||||
"mintingdetails":"MINTING DETAILS",
|
"mintingdetails":"MINTING DETAILS",
|
||||||
|
"becomeAMinter":"BECOME A MINTER",
|
||||||
"wallets":"WALLETS",
|
"wallets":"WALLETS",
|
||||||
"tradeportal":"TRADE PORTAL",
|
"tradeportal":"TRADE PORTAL",
|
||||||
"rewardshare":"REWARD SHARE",
|
"rewardshare":"REWARD SHARE",
|
||||||
"nameregistration":"NAME REGISTRATION",
|
"nameregistration":"NAME REGISTRATION",
|
||||||
"websites":"WEBSITES",
|
"websites":"WEBSITES",
|
||||||
|
"management":"MANAGEMENT",
|
||||||
"datamanagement":"DATA MANAGEMENT",
|
"datamanagement":"DATA MANAGEMENT",
|
||||||
"qchat":"Q-CHAT",
|
"qchat":"Q-CHAT",
|
||||||
"groupmanagement":"GROUP MANAGEMENT",
|
"groupmanagement":"GROUP MANAGEMENT",
|
||||||
@ -175,6 +178,18 @@
|
|||||||
"mchange37":"Simply reach out to a minter in Qortal who is high enough level to issue a sponsorship key, obtain that key, then come back here and input the key to begin your minting journey !",
|
"mchange37":"Simply reach out to a minter in Qortal who is high enough level to issue a sponsorship key, obtain that key, then come back here and input the key to begin your minting journey !",
|
||||||
"mchange38":"in"
|
"mchange38":"in"
|
||||||
},
|
},
|
||||||
|
"becomeMinterPage":{
|
||||||
|
"bchange7":"Enter Sponsorship Key",
|
||||||
|
"bchange8":"Input key from your sponsor here",
|
||||||
|
"bchange10":"Current Sponsorship Status",
|
||||||
|
"bchange12":"Minting with sponsor key",
|
||||||
|
"bchange13":"Blocks Remaining in Sponsorship Period",
|
||||||
|
"bchange15":"Sponsorship Relationship",
|
||||||
|
"bchange16":"Sponsor Account",
|
||||||
|
"bchange17":"Copy Sponsorship Key",
|
||||||
|
"bchange18":"Start Minting",
|
||||||
|
"bchange19":"Success! You are currently minting."
|
||||||
|
},
|
||||||
"walletpage":{
|
"walletpage":{
|
||||||
"wchange1":"Fetching balance ...",
|
"wchange1":"Fetching balance ...",
|
||||||
"wchange2":"Current Wallet",
|
"wchange2":"Current Wallet",
|
||||||
@ -219,7 +234,8 @@
|
|||||||
"wchange41":"Status",
|
"wchange41":"Status",
|
||||||
"wchange42":"Confirmations",
|
"wchange42":"Confirmations",
|
||||||
"wchange43":"Your transaction will not show until confirmed, be patient...",
|
"wchange43":"Your transaction will not show until confirmed, be patient...",
|
||||||
"wchange44": "Please try again..."
|
"wchange44":"Please try again...",
|
||||||
|
"wchange45":"Send all"
|
||||||
},
|
},
|
||||||
"tradepage":{
|
"tradepage":{
|
||||||
"tchange1":"Trade Portal",
|
"tchange1":"Trade Portal",
|
||||||
|
@ -21,12 +21,15 @@
|
|||||||
"korean":"韩语"
|
"korean":"韩语"
|
||||||
},
|
},
|
||||||
"sidemenu":{
|
"sidemenu":{
|
||||||
|
"minting":"铸币",
|
||||||
"mintingdetails":"铸币信息",
|
"mintingdetails":"铸币信息",
|
||||||
|
"becomeAMinter":"成为一个铸币者",
|
||||||
"wallets":"钱包",
|
"wallets":"钱包",
|
||||||
"tradeportal":"交易门户",
|
"tradeportal":"交易门户",
|
||||||
"rewardshare":"铸币密钥",
|
"rewardshare":"铸币密钥",
|
||||||
"nameregistration":"注册名称",
|
"nameregistration":"注册名称",
|
||||||
"websites":"网站",
|
"websites":"网站",
|
||||||
|
"management":"管理",
|
||||||
"datamanagement":"资料管理",
|
"datamanagement":"资料管理",
|
||||||
"qchat":"Q-CHAT",
|
"qchat":"Q-CHAT",
|
||||||
"groupmanagement":"群组管理",
|
"groupmanagement":"群组管理",
|
||||||
@ -180,6 +183,18 @@
|
|||||||
"mchange37":"因此你只需寻找赞助商并获得赞助码,然后返回此处输入赞助码即可开始您的铸币之旅!",
|
"mchange37":"因此你只需寻找赞助商并获得赞助码,然后返回此处输入赞助码即可开始您的铸币之旅!",
|
||||||
"mchange38":"在"
|
"mchange38":"在"
|
||||||
},
|
},
|
||||||
|
"becomeMinterPage":{
|
||||||
|
"bchange7":"输入赞助密钥",
|
||||||
|
"bchange8":"您的赞助商在此处输入密钥",
|
||||||
|
"bchange10":"目前的赞助状态",
|
||||||
|
"bchange12":"使用赞助商密钥铸造",
|
||||||
|
"bchange13":"赞助期内剩余的区块",
|
||||||
|
"bchange15":"赞助关系",
|
||||||
|
"bchange16":"赞助商账户",
|
||||||
|
"bchange17":"复制赞助密钥",
|
||||||
|
"bchange18":"开始铸币",
|
||||||
|
"bchange19":"成功!您目前正在铸币。"
|
||||||
|
},
|
||||||
"walletpage":{
|
"walletpage":{
|
||||||
"wchange1":"正在加载钱包余额...",
|
"wchange1":"正在加载钱包余额...",
|
||||||
"wchange2":"当前钱包地址",
|
"wchange2":"当前钱包地址",
|
||||||
@ -224,7 +239,8 @@
|
|||||||
"wchange41":"状态",
|
"wchange41":"状态",
|
||||||
"wchange42":"确认数",
|
"wchange42":"确认数",
|
||||||
"wchange43":"您的交易在确认之前不会显示,请耐心等待...",
|
"wchange43":"您的交易在确认之前不会显示,请耐心等待...",
|
||||||
"wchange44": "请再试一次..."
|
"wchange44":"请再试一次...",
|
||||||
|
"wchange45":"全部发送"
|
||||||
},
|
},
|
||||||
"tradepage":{
|
"tradepage":{
|
||||||
"tchange1":"交易门户",
|
"tchange1":"交易门户",
|
||||||
|
@ -21,12 +21,15 @@
|
|||||||
"korean":"韓語"
|
"korean":"韓語"
|
||||||
},
|
},
|
||||||
"sidemenu":{
|
"sidemenu":{
|
||||||
|
"minting":"鑄幣",
|
||||||
"mintingdetails":"鑄幣信息",
|
"mintingdetails":"鑄幣信息",
|
||||||
|
"becomeAMinter":"成為一個鑄幣者",
|
||||||
"wallets":"錢包",
|
"wallets":"錢包",
|
||||||
"tradeportal":"交易門戶",
|
"tradeportal":"交易門戶",
|
||||||
"rewardshare":"鑄幣密鑰",
|
"rewardshare":"鑄幣密鑰",
|
||||||
"nameregistration":"註冊名稱",
|
"nameregistration":"註冊名稱",
|
||||||
"websites":"網站",
|
"websites":"網站",
|
||||||
|
"management":"管理",
|
||||||
"datamanagement":"資料管理",
|
"datamanagement":"資料管理",
|
||||||
"qchat":"Q-CHAT",
|
"qchat":"Q-CHAT",
|
||||||
"groupmanagement":"群組管理",
|
"groupmanagement":"群組管理",
|
||||||
@ -180,6 +183,18 @@
|
|||||||
"mchange37":"因此你只需尋找贊助商並獲得贊助碼,然後返回此處輸入贊助碼即可開始您的鑄幣之旅!",
|
"mchange37":"因此你只需尋找贊助商並獲得贊助碼,然後返回此處輸入贊助碼即可開始您的鑄幣之旅!",
|
||||||
"mchange38":"在"
|
"mchange38":"在"
|
||||||
},
|
},
|
||||||
|
"becomeMinterPage":{
|
||||||
|
"bchange7":"輸入贊助密鑰",
|
||||||
|
"bchange8":"您的讚助商在此處輸入密鑰",
|
||||||
|
"bchange10":"目前的讚助狀態",
|
||||||
|
"bchange12":"使用贊助商密鑰鑄造",
|
||||||
|
"bchange13":"贊助期內剩餘的區塊",
|
||||||
|
"bchange15":"贊助關係",
|
||||||
|
"bchange16":"贊助商賬戶",
|
||||||
|
"bchange17":"複製贊助密鑰",
|
||||||
|
"bchange18":"開始鑄幣",
|
||||||
|
"bchange19":"成功!您目前正在鑄幣。"
|
||||||
|
},
|
||||||
"walletpage":{
|
"walletpage":{
|
||||||
"wchange1":"正在加載錢包餘額...",
|
"wchange1":"正在加載錢包餘額...",
|
||||||
"wchange2":"當前錢包地址",
|
"wchange2":"當前錢包地址",
|
||||||
@ -224,7 +239,8 @@
|
|||||||
"wchange41":"狀態",
|
"wchange41":"狀態",
|
||||||
"wchange42":"確認數",
|
"wchange42":"確認數",
|
||||||
"wchange43":"您的交易在確認之前不會顯示,請耐心等待...",
|
"wchange43":"您的交易在確認之前不會顯示,請耐心等待...",
|
||||||
"wchange44": "請再試一次..."
|
"wchange44":"請再試一次...",
|
||||||
|
"wchange45":"全部發送"
|
||||||
},
|
},
|
||||||
"tradepage":{
|
"tradepage":{
|
||||||
"tchange1":"交易門戶",
|
"tchange1":"交易門戶",
|
||||||
|
@ -19,10 +19,10 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@hapi/hapi": "20.2.2",
|
"@hapi/hapi": "20.2.2",
|
||||||
"@hapi/inert": "7.0.0",
|
"@hapi/inert": "7.0.0",
|
||||||
"sass": "1.53.0"
|
"sass": "1.54.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "7.18.9",
|
"@babel/core": "7.18.10",
|
||||||
"@material/mwc-button": "0.26.1",
|
"@material/mwc-button": "0.26.1",
|
||||||
"@material/mwc-checkbox": "0.26.1",
|
"@material/mwc-checkbox": "0.26.1",
|
||||||
"@material/mwc-dialog": "0.26.1",
|
"@material/mwc-dialog": "0.26.1",
|
||||||
@ -55,24 +55,24 @@
|
|||||||
"@polymer/paper-tooltip": "3.0.1",
|
"@polymer/paper-tooltip": "3.0.1",
|
||||||
"@rollup/plugin-alias": "3.1.9",
|
"@rollup/plugin-alias": "3.1.9",
|
||||||
"@rollup/plugin-babel": "5.3.1",
|
"@rollup/plugin-babel": "5.3.1",
|
||||||
"@rollup/plugin-commonjs": "22.0.1",
|
"@rollup/plugin-commonjs": "22.0.2",
|
||||||
"@rollup/plugin-node-resolve": "13.3.0",
|
"@rollup/plugin-node-resolve": "13.3.0",
|
||||||
"@rollup/plugin-replace": "4.0.0",
|
"@rollup/plugin-replace": "4.0.0",
|
||||||
"@vaadin/grid": "23.1.4",
|
"@vaadin/grid": "23.1.5",
|
||||||
"@vaadin/icons": "23.1.4",
|
"@vaadin/icons": "23.1.5",
|
||||||
"@vaadin/password-field": "23.1.4",
|
"@vaadin/password-field": "23.1.5",
|
||||||
"asmcrypto.js": "2.3.2",
|
"asmcrypto.js": "2.3.2",
|
||||||
"bcryptjs": "2.4.3",
|
"bcryptjs": "2.4.3",
|
||||||
"epml": "0.3.3",
|
"epml": "0.3.3",
|
||||||
"file-saver": "2.0.5",
|
"file-saver": "2.0.5",
|
||||||
"lit": "2.2.7",
|
"lit": "2.2.8",
|
||||||
"lit-translate": "2.0.1",
|
"lit-translate": "2.0.1",
|
||||||
"postcss": "8.4.14",
|
"postcss": "8.4.16",
|
||||||
"pwa-helpers": "0.9.1",
|
"pwa-helpers": "0.9.1",
|
||||||
"random-sentence-generator": "0.0.8",
|
"random-sentence-generator": "0.0.8",
|
||||||
"redux": "4.2.0",
|
"redux": "4.2.0",
|
||||||
"redux-thunk": "2.4.1",
|
"redux-thunk": "2.4.1",
|
||||||
"rollup": "2.77.0",
|
"rollup": "2.77.2",
|
||||||
"rollup-plugin-node-globals": "1.4.0",
|
"rollup-plugin-node-globals": "1.4.0",
|
||||||
"rollup-plugin-postcss": "4.0.2",
|
"rollup-plugin-postcss": "4.0.2",
|
||||||
"rollup-plugin-progress": "1.1.2",
|
"rollup-plugin-progress": "1.1.2",
|
||||||
|
@ -5,6 +5,8 @@ import { translate, translateUnsafeHTML } from 'lit-translate'
|
|||||||
|
|
||||||
import '@polymer/paper-icon-button/paper-icon-button.js'
|
import '@polymer/paper-icon-button/paper-icon-button.js'
|
||||||
import '@polymer/iron-icons/iron-icons.js'
|
import '@polymer/iron-icons/iron-icons.js'
|
||||||
|
import '@polymer/app-layout/app-layout.js'
|
||||||
|
import '@polymer/paper-ripple'
|
||||||
|
|
||||||
import './wallet-profile.js'
|
import './wallet-profile.js'
|
||||||
import './app-info.js'
|
import './app-info.js'
|
||||||
@ -12,10 +14,6 @@ import './sidenav-menu.js'
|
|||||||
import './show-plugin.js'
|
import './show-plugin.js'
|
||||||
import './qort-theme-toggle.js'
|
import './qort-theme-toggle.js'
|
||||||
import './language-selector.js'
|
import './language-selector.js'
|
||||||
|
|
||||||
import '@polymer/app-layout/app-layout.js'
|
|
||||||
import '@polymer/paper-ripple'
|
|
||||||
|
|
||||||
import './settings-view/user-settings.js'
|
import './settings-view/user-settings.js'
|
||||||
import './logout-view/logout-view.js'
|
import './logout-view/logout-view.js'
|
||||||
|
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
import { LitElement, html, css } from 'lit'
|
import { LitElement, html, css } from 'lit';
|
||||||
import { connect } from 'pwa-helpers'
|
import { connect } from 'pwa-helpers';
|
||||||
import { store } from '../store.js'
|
import { store } from '../store.js';
|
||||||
import { translate, translateUnsafeHTML } from 'lit-translate'
|
import { translate, translateUnsafeHTML } from 'lit-translate';
|
||||||
|
|
||||||
import '@polymer/paper-ripple'
|
import '@polymer/paper-ripple';
|
||||||
import '@vaadin/icon'
|
import '@vaadin/icon';
|
||||||
import '@vaadin/icons'
|
import '@vaadin/icons';
|
||||||
|
|
||||||
import '../functional-components/side-menu.js'
|
import '../functional-components/side-menu.js';
|
||||||
import '../functional-components/side-menu-item.js'
|
import '../functional-components/side-menu-item.js';
|
||||||
|
|
||||||
class SidenavMenu extends connect(store)(LitElement) {
|
class SidenavMenu extends connect(store)(LitElement) {
|
||||||
static get properties() {
|
static get properties() {
|
||||||
@ -16,8 +16,9 @@ class SidenavMenu extends connect(store)(LitElement) {
|
|||||||
config: { type: Object },
|
config: { type: Object },
|
||||||
urls: { type: Object },
|
urls: { type: Object },
|
||||||
nodeType: { type: String, reflect: true },
|
nodeType: { type: String, reflect: true },
|
||||||
theme: { type: String, reflect: true }
|
theme: { type: String, reflect: true },
|
||||||
}
|
addressInfo: { type: Object },
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
static get styles() {
|
static get styles() {
|
||||||
@ -43,15 +44,25 @@ class SidenavMenu extends connect(store)(LitElement) {
|
|||||||
border-top: 1px solid var(--border);
|
border-top: 1px solid var(--border);
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
`
|
|
||||||
]
|
.start-minting-wrapper {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 130px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(calc(-50% - 10px));
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super()
|
super();
|
||||||
this.urls = []
|
this.urls = [];
|
||||||
this.nodeType = ''
|
this.nodeType = '';
|
||||||
this.theme = localStorage.getItem('qortalTheme') ? localStorage.getItem('qortalTheme') : 'light'
|
this.theme = localStorage.getItem('qortalTheme')
|
||||||
|
? localStorage.getItem('qortalTheme')
|
||||||
|
: 'light';
|
||||||
|
this.addressInfo = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
@ -59,101 +70,179 @@ class SidenavMenu extends connect(store)(LitElement) {
|
|||||||
<div class="s-menu">
|
<div class="s-menu">
|
||||||
<side-menu>
|
<side-menu>
|
||||||
${this.renderNodeTypeMenu()}
|
${this.renderNodeTypeMenu()}
|
||||||
${this.renderNodeManagement()}
|
|
||||||
</side-menu>
|
</side-menu>
|
||||||
</div>
|
</div>
|
||||||
`
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
firstUpdated() {
|
firstUpdated() {
|
||||||
this.getNodeType()
|
this.getNodeType();
|
||||||
}
|
}
|
||||||
|
|
||||||
async getNodeType() {
|
async getNodeType() {
|
||||||
const myNode = store.getState().app.nodeConfig.knownNodes[store.getState().app.nodeConfig.node]
|
const myNode =
|
||||||
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
|
store.getState().app.nodeConfig.knownNodes[
|
||||||
const url = `${nodeUrl}/admin/info`
|
store.getState().app.nodeConfig.node
|
||||||
|
];
|
||||||
|
const nodeUrl =
|
||||||
|
myNode.protocol + '://' + myNode.domain + ':' + myNode.port;
|
||||||
|
const url = `${nodeUrl}/admin/info`;
|
||||||
await fetch(url)
|
await fetch(url)
|
||||||
.then(response => {
|
.then((response) => {
|
||||||
return response.json()
|
return response.json();
|
||||||
})
|
})
|
||||||
.then(data => {
|
.then((data) => {
|
||||||
this.nodeType = data.type
|
this.nodeType = data.type;
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch((err) => {
|
||||||
console.error('Request failed', err);
|
console.error('Request failed', err);
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
renderNodeTypeMenu() {
|
renderNodeTypeMenu() {
|
||||||
|
const addressInfo = this.addressInfo;
|
||||||
|
const isMinter = addressInfo?.error !== 124 && +addressInfo?.level > 0;
|
||||||
|
|
||||||
if (this.nodeType === 'lite') {
|
if (this.nodeType === 'lite') {
|
||||||
return html`
|
return html`
|
||||||
<side-menu-item label="${translate("sidemenu.wallets")}" href="/app/wallet" selected>
|
<side-menu-item
|
||||||
|
label="${translate('sidemenu.wallets')}"
|
||||||
|
href="/app/wallet"
|
||||||
|
selected
|
||||||
|
>
|
||||||
<vaadin-icon icon="vaadin:wallet" slot="icon"></vaadin-icon>
|
<vaadin-icon icon="vaadin:wallet" slot="icon"></vaadin-icon>
|
||||||
</side-menu-item>
|
</side-menu-item>
|
||||||
<side-menu-item label="${translate("sidemenu.nameregistration")}" href="/app/name-registration">
|
<side-menu-item
|
||||||
|
label="${translate('sidemenu.nameregistration')}"
|
||||||
|
href="/app/name-registration"
|
||||||
|
>
|
||||||
<vaadin-icon icon="vaadin:user-check" slot="icon"></vaadin-icon>
|
<vaadin-icon icon="vaadin:user-check" slot="icon"></vaadin-icon>
|
||||||
</side-menu-item>
|
</side-menu-item>
|
||||||
<side-menu-item label="${translate("sidemenu.datamanagement")}" href="/app/data-management">
|
<side-menu-item
|
||||||
|
label="${translate('sidemenu.datamanagement')}"
|
||||||
|
href="/app/data-management"
|
||||||
|
>
|
||||||
<vaadin-icon icon="vaadin:database" slot="icon"></vaadin-icon>
|
<vaadin-icon icon="vaadin:database" slot="icon"></vaadin-icon>
|
||||||
</side-menu-item>
|
</side-menu-item>
|
||||||
<side-menu-item label="${translate("sidemenu.qchat")}" href="/app/q-chat">
|
<side-menu-item
|
||||||
|
label="${translate('sidemenu.qchat')}"
|
||||||
|
href="/app/q-chat"
|
||||||
|
>
|
||||||
<vaadin-icon icon="vaadin:chat" slot="icon"></vaadin-icon>
|
<vaadin-icon icon="vaadin:chat" slot="icon"></vaadin-icon>
|
||||||
</side-menu-item>
|
</side-menu-item>
|
||||||
`
|
${this.renderNodeManagement()}
|
||||||
|
`;
|
||||||
} else {
|
} else {
|
||||||
return html`
|
return html`
|
||||||
<side-menu-item label="${translate("sidemenu.mintingdetails")}" href="/app/minting">
|
<side-menu-item
|
||||||
|
label="${translate('sidemenu.minting')}"
|
||||||
|
expanded
|
||||||
|
>
|
||||||
<vaadin-icon icon="vaadin:info-circle" slot="icon"></vaadin-icon>
|
<vaadin-icon icon="vaadin:info-circle" slot="icon"></vaadin-icon>
|
||||||
|
${isMinter
|
||||||
|
? html`<side-menu-item
|
||||||
|
label="${translate('sidemenu.mintingdetails')}"
|
||||||
|
href="/app/minting"
|
||||||
|
>
|
||||||
|
<vaadin-icon icon="vaadin:info-circle" slot="icon"></vaadin-icon>
|
||||||
|
</side-menu-item>`
|
||||||
|
: html`<side-menu-item
|
||||||
|
label="${translate('sidemenu.becomeAMinter')}"
|
||||||
|
href="/app/become-minter"
|
||||||
|
>
|
||||||
|
<vaadin-icon icon="vaadin:thumbs-up" slot="icon"></vaadin-icon>
|
||||||
|
</side-menu-item>`}
|
||||||
</side-menu-item>
|
</side-menu-item>
|
||||||
<side-menu-item label="${translate("sidemenu.wallets")}" href="/app/wallet" selected>
|
<side-menu-item
|
||||||
|
label="${translate('sidemenu.wallets')}"
|
||||||
|
href="/app/wallet"
|
||||||
|
selected
|
||||||
|
>
|
||||||
<vaadin-icon icon="vaadin:wallet" slot="icon"></vaadin-icon>
|
<vaadin-icon icon="vaadin:wallet" slot="icon"></vaadin-icon>
|
||||||
</side-menu-item>
|
</side-menu-item>
|
||||||
<side-menu-item label="${translate("sidemenu.tradeportal")}" href="/app/trade-portal">
|
<side-menu-item
|
||||||
|
label="${translate('sidemenu.tradeportal')}"
|
||||||
|
href="/app/trade-portal"
|
||||||
|
>
|
||||||
<vaadin-icon icon="vaadin:bullets" slot="icon"></vaadin-icon>
|
<vaadin-icon icon="vaadin:bullets" slot="icon"></vaadin-icon>
|
||||||
</side-menu-item>
|
</side-menu-item>
|
||||||
<side-menu-item label="${translate("sidemenu.rewardshare")}" href="/app/reward-share">
|
<side-menu-item
|
||||||
|
label="${translate('sidemenu.rewardshare')}"
|
||||||
|
href="/app/reward-share"
|
||||||
|
>
|
||||||
<vaadin-icon icon="vaadin:share-square" slot="icon"></vaadin-icon>
|
<vaadin-icon icon="vaadin:share-square" slot="icon"></vaadin-icon>
|
||||||
</side-menu-item>
|
</side-menu-item>
|
||||||
<side-menu-item label="${translate("sidemenu.nameregistration")}" href="/app/name-registration">
|
<side-menu-item
|
||||||
<vaadin-icon icon="vaadin:user-check" slot="icon"></vaadin-icon>
|
label="${translate('sidemenu.qchat')}"
|
||||||
</side-menu-item>
|
href="/app/q-chat"
|
||||||
<side-menu-item label="${translate("sidemenu.websites")}" href="/app/websites">
|
>
|
||||||
<vaadin-icon icon="vaadin:desktop" slot="icon"></vaadin-icon>
|
|
||||||
</side-menu-item>
|
|
||||||
<side-menu-item label="${translate("sidemenu.datamanagement")}" href="/app/data-management">
|
|
||||||
<vaadin-icon icon="vaadin:database" slot="icon"></vaadin-icon>
|
|
||||||
</side-menu-item>
|
|
||||||
<side-menu-item label="${translate("sidemenu.qchat")}" href="/app/q-chat">
|
|
||||||
<vaadin-icon icon="vaadin:chat" slot="icon"></vaadin-icon>
|
<vaadin-icon icon="vaadin:chat" slot="icon"></vaadin-icon>
|
||||||
</side-menu-item>
|
</side-menu-item>
|
||||||
<side-menu-item label="${translate("sidemenu.groupmanagement")}" href="/app/group-management">
|
<side-menu-item
|
||||||
|
label="${translate('sidemenu.nameregistration')}"
|
||||||
|
href="/app/name-registration"
|
||||||
|
>
|
||||||
|
<vaadin-icon icon="vaadin:user-check" slot="icon"></vaadin-icon>
|
||||||
|
</side-menu-item>
|
||||||
|
<side-menu-item
|
||||||
|
label="${translate('sidemenu.websites')}"
|
||||||
|
href="/app/websites"
|
||||||
|
>
|
||||||
|
<vaadin-icon icon="vaadin:desktop" slot="icon" ></vaadin-icon>
|
||||||
|
</side-menu-item>
|
||||||
|
<side-menu-item
|
||||||
|
label="${translate('sidemenu.management')}"
|
||||||
|
expanded
|
||||||
|
>
|
||||||
|
<vaadin-icon icon="vaadin:cogs" slot="icon"></vaadin-icon>
|
||||||
|
<side-menu-item
|
||||||
|
label="${translate('sidemenu.datamanagement')}"
|
||||||
|
href="/app/data-management"
|
||||||
|
>
|
||||||
|
<vaadin-icon icon="vaadin:database" slot="icon"></vaadin-icon>
|
||||||
|
</side-menu-item>
|
||||||
|
<side-menu-item
|
||||||
|
label="${translate('sidemenu.groupmanagement')}"
|
||||||
|
href="/app/group-management"
|
||||||
|
>
|
||||||
<vaadin-icon icon="vaadin:group" slot="icon"></vaadin-icon>
|
<vaadin-icon icon="vaadin:group" slot="icon"></vaadin-icon>
|
||||||
</side-menu-item>
|
</side-menu-item>
|
||||||
<side-menu-item label="${translate("sidemenu.puzzles")}" href="/app/puzzles">
|
${this.renderNodeManagement()}
|
||||||
|
</side-menu-item>
|
||||||
|
<side-menu-item
|
||||||
|
label="${translate('sidemenu.puzzles')}"
|
||||||
|
href="/app/puzzles"
|
||||||
|
>
|
||||||
<vaadin-icon icon="vaadin:puzzle-piece" slot="icon"></vaadin-icon>
|
<vaadin-icon icon="vaadin:puzzle-piece" slot="icon"></vaadin-icon>
|
||||||
</side-menu-item>
|
</side-menu-item>
|
||||||
`
|
`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
renderNodeManagement() {
|
renderNodeManagement() {
|
||||||
const checkNodeManagement = store.getState().app.nodeConfig.knownNodes[store.getState().app.nodeConfig.node]
|
const checkNodeManagement =
|
||||||
if (checkNodeManagement.enableManagement = true) {
|
store.getState().app.nodeConfig.knownNodes[
|
||||||
|
store.getState().app.nodeConfig.node
|
||||||
|
];
|
||||||
|
if ((checkNodeManagement.enableManagement = true)) {
|
||||||
return html`
|
return html`
|
||||||
<side-menu-item label="${translate("sidemenu.nodemanagement")}" href="/app/node-management">
|
<side-menu-item
|
||||||
|
label="${translate('sidemenu.nodemanagement')}"
|
||||||
|
href="/app/node-management"
|
||||||
|
>
|
||||||
<vaadin-icon icon="vaadin:cloud" slot="icon"></vaadin-icon>
|
<vaadin-icon icon="vaadin:cloud" slot="icon"></vaadin-icon>
|
||||||
</side-menu-item>
|
</side-menu-item>
|
||||||
`
|
`;
|
||||||
} else {
|
} else {
|
||||||
return html``
|
return html``;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stateChanged(state) {
|
stateChanged(state) {
|
||||||
this.config = state.config
|
this.config = state.config;
|
||||||
this.urls = state.app.registeredUrls
|
this.urls = state.app.registeredUrls;
|
||||||
|
this.addressInfo = state.app.accountInfo.addressInfo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
window.customElements.define('sidenav-menu', SidenavMenu)
|
window.customElements.define('sidenav-menu', SidenavMenu);
|
||||||
|
259
qortal-ui-core/src/components/start-minting.js
Normal file
259
qortal-ui-core/src/components/start-minting.js
Normal file
@ -0,0 +1,259 @@
|
|||||||
|
import { LitElement, html, css } from 'lit';
|
||||||
|
import { connect } from 'pwa-helpers';
|
||||||
|
import { store } from '../store.js';
|
||||||
|
import { translate, get } from 'lit-translate';
|
||||||
|
|
||||||
|
import '../functional-components/my-button.js';
|
||||||
|
import { routes } from '../plugins/routes.js';
|
||||||
|
|
||||||
|
class StartMinting extends connect(store)(LitElement) {
|
||||||
|
static get properties() {
|
||||||
|
return {
|
||||||
|
addressInfo: { type: Object },
|
||||||
|
mintingAccountData: { type: Array },
|
||||||
|
errorMsg: { type: String },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
static get styles() {
|
||||||
|
return [
|
||||||
|
css`
|
||||||
|
.start-minting-wrapper {
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(calc(-50% - 10px));
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
this.addressInfo = {};
|
||||||
|
this.mintingAccountData = [];
|
||||||
|
this.errorMsg = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return html` ${this.renderStartMintingButton()} `;
|
||||||
|
}
|
||||||
|
|
||||||
|
firstUpdated() {
|
||||||
|
this.getMintingAcccounts();
|
||||||
|
}
|
||||||
|
|
||||||
|
async getMintingAcccounts() {
|
||||||
|
const myNode =
|
||||||
|
store.getState().app.nodeConfig.knownNodes[
|
||||||
|
store.getState().app.nodeConfig.node
|
||||||
|
];
|
||||||
|
const nodeUrl =
|
||||||
|
myNode.protocol + '://' + myNode.domain + ':' + myNode.port;
|
||||||
|
const url = `${nodeUrl}/admin/mintingaccounts`;
|
||||||
|
try {
|
||||||
|
const res = await fetch(url);
|
||||||
|
const mintingAccountData = await res.json();
|
||||||
|
|
||||||
|
this.mintingAccountData = mintingAccountData;
|
||||||
|
} catch (error) {
|
||||||
|
this.errorMsg = 'Cannot fetch minting accounts';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
renderStartMintingButton() {
|
||||||
|
const myNode =
|
||||||
|
store.getState().app.nodeConfig.knownNodes[
|
||||||
|
store.getState().app.nodeConfig.node
|
||||||
|
];
|
||||||
|
const nodeUrl =
|
||||||
|
myNode.protocol + '://' + myNode.domain + ':' + myNode.port;
|
||||||
|
const mintingAccountData = this.mintingAccountData;
|
||||||
|
|
||||||
|
const addressInfo = this.addressInfo;
|
||||||
|
const rewardShares = async (minterAddr) => {
|
||||||
|
const url = `${nodeUrl}/addresses/rewardshares?minters=${minterAddr}&recipients=${minterAddr}`;
|
||||||
|
const res = await fetch(url);
|
||||||
|
const data = await res.json();
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
const address =
|
||||||
|
window.parent.reduxStore.getState().app?.selectedAddress?.address;
|
||||||
|
const nonce =
|
||||||
|
window.parent.reduxStore.getState().app?.selectedAddress?.nonce;
|
||||||
|
const publicAddress =
|
||||||
|
window.parent.reduxStore.getState().app?.selectedAddress
|
||||||
|
?.base58PublicKey;
|
||||||
|
|
||||||
|
const findMintingAccount = mintingAccountData.find((ma) =>
|
||||||
|
ma.publicKey.includes(publicAddress)
|
||||||
|
);
|
||||||
|
const isMinterButKeyMintingKeyNotAssigned =
|
||||||
|
addressInfo?.error !== 124 &&
|
||||||
|
addressInfo?.level === 1 &&
|
||||||
|
!findMintingAccount;
|
||||||
|
|
||||||
|
const removeMintingAccount = async (publicKey) => {
|
||||||
|
const url = `${nodeUrl}/admin/mintingaccounts?apiKey=${myNode.apiKey}`;
|
||||||
|
|
||||||
|
return await fetch(url, {
|
||||||
|
method: 'DELETE',
|
||||||
|
body: publicKey,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const makeTransactionRequest = async (lastRef) => {
|
||||||
|
let mylastRef = lastRef;
|
||||||
|
let rewarddialog1 = get('transactions.rewarddialog1');
|
||||||
|
let rewarddialog2 = get('transactions.rewarddialog2');
|
||||||
|
let rewarddialog3 = get('transactions.rewarddialog3');
|
||||||
|
let rewarddialog4 = get('transactions.rewarddialog4');
|
||||||
|
|
||||||
|
let myTxnrequest = await routes.transaction({
|
||||||
|
data: {
|
||||||
|
type: 38,
|
||||||
|
nonce: nonce,
|
||||||
|
params: {
|
||||||
|
recipientPublicKey: publicAddress,
|
||||||
|
percentageShare: 0,
|
||||||
|
lastReference: mylastRef,
|
||||||
|
rewarddialog1: rewarddialog1,
|
||||||
|
rewarddialog2: rewarddialog2,
|
||||||
|
rewarddialog3: rewarddialog3,
|
||||||
|
rewarddialog4: rewarddialog4,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
disableModal: true,
|
||||||
|
});
|
||||||
|
return myTxnrequest;
|
||||||
|
};
|
||||||
|
|
||||||
|
const getTxnRequestResponse = (txnResponse) => {
|
||||||
|
if (txnResponse.success === false && txnResponse.message) {
|
||||||
|
throw new Error(txnResponse);
|
||||||
|
} else if (
|
||||||
|
txnResponse.success === true &&
|
||||||
|
!txnResponse.data.error
|
||||||
|
) {
|
||||||
|
let err6string = get('rewardsharepage.rchange21');
|
||||||
|
return err6string;
|
||||||
|
} else {
|
||||||
|
throw new Error(txnResponse);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const createSponsorshipKey = async () => {
|
||||||
|
let lastRef = await getLastRef();
|
||||||
|
|
||||||
|
let myTransaction = await makeTransactionRequest(lastRef);
|
||||||
|
|
||||||
|
getTxnRequestResponse(myTransaction);
|
||||||
|
return myTransaction.data;
|
||||||
|
};
|
||||||
|
const addMintingAccount = async (sponsorshipKeyValue) => {
|
||||||
|
const url = `${nodeUrl}/admin/mintingaccounts?apiKey=${myNode.apiKey}`;
|
||||||
|
|
||||||
|
return await fetch(url, {
|
||||||
|
method: 'POST',
|
||||||
|
body: sponsorshipKeyValue,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const getLastRef = async () => {
|
||||||
|
const url = `${nodeUrl}/addresses/lastreference/${address}`;
|
||||||
|
|
||||||
|
const res = await fetch(url);
|
||||||
|
|
||||||
|
const data = await res.text();
|
||||||
|
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
const startMinting = async () => {
|
||||||
|
this.errorMsg = '';
|
||||||
|
let rewardSharesList;
|
||||||
|
try {
|
||||||
|
rewardSharesList = await rewardShares(address);
|
||||||
|
} catch (error) {
|
||||||
|
this.errorMsg = 'Cannot fetch reward shares';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// check to see if self-share exists
|
||||||
|
|
||||||
|
const findRewardShareData = rewardSharesList.find(
|
||||||
|
(rs) =>
|
||||||
|
rs?.mintingAccount === address && rs?.recipient === address
|
||||||
|
);
|
||||||
|
let sponsorshipKeyValue = null;
|
||||||
|
try {
|
||||||
|
if (!findRewardShareData) {
|
||||||
|
// if no self-share exits, create one.
|
||||||
|
sponsorshipKeyValue = await createSponsorshipKey();
|
||||||
|
} else {
|
||||||
|
sponsorshipKeyValue =
|
||||||
|
findRewardShareData.rewardSharePublicKey;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
this.errorMsg = 'Cannot create sponsorship key';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check to see if a sponsorship key on a newly-level 1 minter exists. If it does, remove it.
|
||||||
|
const findMintingAccountFromOtherUser = mintingAccountData.find(
|
||||||
|
(ma) => !ma.publicKey.includes(publicAddress)
|
||||||
|
);
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (
|
||||||
|
findMintingAccountFromOtherUser &&
|
||||||
|
findMintingAccountFromOtherUser?.publicKey[0]
|
||||||
|
) {
|
||||||
|
await removeMintingAccount(
|
||||||
|
findMintingAccountFromOtherUser?.publicKey[0]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
this.errorMsg = 'Failed to remove key';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
await addMintingAccount(sponsorshipKeyValue);
|
||||||
|
routes.showSnackBar({
|
||||||
|
data: translate('becomeMinterPage.bchange19'),
|
||||||
|
});
|
||||||
|
this.getMintingAcccounts();
|
||||||
|
} catch (error) {
|
||||||
|
this.errorMsg = 'Failed to add minting key';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return html`
|
||||||
|
${isMinterButKeyMintingKeyNotAssigned
|
||||||
|
? html`
|
||||||
|
<div class="start-minting-wrapper">
|
||||||
|
<my-button
|
||||||
|
label="${translate(
|
||||||
|
'becomeMinterPage.bchange18'
|
||||||
|
)}"
|
||||||
|
?isLoading=${false}
|
||||||
|
.onClick=${async () => {
|
||||||
|
await startMinting();
|
||||||
|
if (this.errorMsg) {
|
||||||
|
routes.showSnackBar({
|
||||||
|
data: this.errorMsg,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
></my-button>
|
||||||
|
</div>
|
||||||
|
`
|
||||||
|
: ''}
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
stateChanged(state) {
|
||||||
|
this.addressInfo = state.app.accountInfo.addressInfo;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.customElements.define('start-minting', StartMinting);
|
@ -6,6 +6,8 @@ import { translate, translateUnsafeHTML } from 'lit-translate'
|
|||||||
import '@polymer/paper-toast'
|
import '@polymer/paper-toast'
|
||||||
import '@material/mwc-icon-button'
|
import '@material/mwc-icon-button'
|
||||||
|
|
||||||
|
import './start-minting.js'
|
||||||
|
|
||||||
class WalletProfile extends connect(store)(LitElement) {
|
class WalletProfile extends connect(store)(LitElement) {
|
||||||
static get properties() {
|
static get properties() {
|
||||||
return {
|
return {
|
||||||
@ -88,6 +90,7 @@ class WalletProfile extends connect(store)(LitElement) {
|
|||||||
<p id="blocksMinted">${translate("walletprofile.blocksminted")} - ${this.accountInfo.addressInfo.blocksMinted + this.accountInfo.addressInfo.blocksMintedAdjustment}</p>
|
<p id="blocksMinted">${translate("walletprofile.blocksminted")} - ${this.accountInfo.addressInfo.blocksMinted + this.accountInfo.addressInfo.blocksMintedAdjustment}</p>
|
||||||
<p id="address">${this.wallet.addresses[0].address}</p>
|
<p id="address">${this.wallet.addresses[0].address}</p>
|
||||||
</div>
|
</div>
|
||||||
|
<start-minting></start-minting>
|
||||||
</div>
|
</div>
|
||||||
<paper-toast id="toast" horizontal-align="right" vertical-align="top" vertical-offset="64"></paper-toast>
|
<paper-toast id="toast" horizontal-align="right" vertical-align="top" vertical-offset="64"></paper-toast>
|
||||||
`
|
`
|
||||||
|
47
qortal-ui-core/src/functional-components/my-button.js
Normal file
47
qortal-ui-core/src/functional-components/my-button.js
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
import { LitElement, html, css } from 'lit';
|
||||||
|
import '@vaadin/button';
|
||||||
|
import '@polymer/paper-spinner/paper-spinner-lite.js';
|
||||||
|
|
||||||
|
export class MyButton extends LitElement {
|
||||||
|
static properties = {
|
||||||
|
onClick: { type: Function },
|
||||||
|
isLoading: { type: Boolean },
|
||||||
|
label: { type: String },
|
||||||
|
};
|
||||||
|
|
||||||
|
static styles = css`
|
||||||
|
vaadin-button {
|
||||||
|
height: 100%;
|
||||||
|
margin: 0;
|
||||||
|
cursor: pointer;
|
||||||
|
min-width: 80px;
|
||||||
|
background-color: #03a9f4;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
vaadin-button:hover {
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
this.onClick = () => {};
|
||||||
|
this.isLoading = false;
|
||||||
|
this.label = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return html`
|
||||||
|
<vaadin-button
|
||||||
|
?disabled="${this.isLoading}"
|
||||||
|
@click="${this.onClick}"
|
||||||
|
>
|
||||||
|
${this.isLoading === false
|
||||||
|
? html`${this.label}`
|
||||||
|
: html`<paper-spinner-lite active></paper-spinner-lite>`}
|
||||||
|
</vaadin-button>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
customElements.define('my-button', MyButton);
|
@ -1,84 +1,96 @@
|
|||||||
import { store } from '../store.js'
|
import { store } from '../store.js';
|
||||||
import { doAddPluginUrl, doUpdateBlockInfo, doUpdateNodeStatus, doUpdateNodeInfo, doSetNode, doPageUrl, doSetChatHeads, doUpdateAccountInfo } from '../redux/app/app-actions.js'
|
import {
|
||||||
import * as api from 'qortal-ui-crypto'
|
doAddPluginUrl,
|
||||||
import { requestTransactionDialog } from '../functional-components/confirm-transaction-dialog.js'
|
doUpdateBlockInfo,
|
||||||
import { doNewMessage } from '../notifications/controller.js'
|
doUpdateNodeStatus,
|
||||||
import snackbar from '../functional-components/snackbar.js'
|
doUpdateNodeInfo,
|
||||||
import { loadStateFromLocalStorage, saveStateToLocalStorage } from '../localStorageHelpers.js'
|
doSetNode,
|
||||||
import copyTextMenu from '../functional-components/copy-text-menu.js'
|
doPageUrl,
|
||||||
import framePasteMenu from '../functional-components/frame-paste-menu.js'
|
doSetChatHeads,
|
||||||
|
doUpdateAccountInfo,
|
||||||
|
} from '../redux/app/app-actions.js';
|
||||||
|
import * as api from 'qortal-ui-crypto';
|
||||||
|
import { requestTransactionDialog } from '../functional-components/confirm-transaction-dialog.js';
|
||||||
|
import { doNewMessage } from '../notifications/controller.js';
|
||||||
|
import snackbar from '../functional-components/snackbar.js';
|
||||||
|
import {
|
||||||
|
loadStateFromLocalStorage,
|
||||||
|
saveStateToLocalStorage,
|
||||||
|
} from '../localStorageHelpers.js';
|
||||||
|
import copyTextMenu from '../functional-components/copy-text-menu.js';
|
||||||
|
import framePasteMenu from '../functional-components/frame-paste-menu.js';
|
||||||
|
|
||||||
const createTransaction = api.createTransaction
|
const createTransaction = api.createTransaction;
|
||||||
const processTransaction = api.processTransaction
|
const processTransaction = api.processTransaction;
|
||||||
const signChatTransaction = api.signChatTransaction
|
const signChatTransaction = api.signChatTransaction;
|
||||||
const signArbitraryTransaction = api.signArbitraryTransaction
|
const signArbitraryTransaction = api.signArbitraryTransaction;
|
||||||
const tradeBotCreateRequest = api.tradeBotCreateRequest
|
const tradeBotCreateRequest = api.tradeBotCreateRequest;
|
||||||
const tradeBotRespondRequest = api.tradeBotRespondRequest
|
const tradeBotRespondRequest = api.tradeBotRespondRequest;
|
||||||
const signTradeBotTxn = api.signTradeBotTxn
|
const signTradeBotTxn = api.signTradeBotTxn;
|
||||||
const deleteTradeOffer = api.deleteTradeOffer
|
const deleteTradeOffer = api.deleteTradeOffer;
|
||||||
const cancelAllOffers = api.cancelAllOffers
|
const cancelAllOffers = api.cancelAllOffers;
|
||||||
const sendBtc = api.sendBtc
|
const sendBtc = api.sendBtc;
|
||||||
const sendLtc = api.sendLtc
|
const sendLtc = api.sendLtc;
|
||||||
const sendDoge = api.sendDoge
|
const sendDoge = api.sendDoge;
|
||||||
const sendDgb = api.sendDgb
|
const sendDgb = api.sendDgb;
|
||||||
const sendRvn = api.sendRvn
|
const sendRvn = api.sendRvn;
|
||||||
const sendArrr = api.sendArrr
|
const sendArrr = api.sendArrr;
|
||||||
|
|
||||||
export const routes = {
|
export const routes = {
|
||||||
hello: async (req) => {
|
hello: async (req) => {
|
||||||
return 'Hello from awesomeness'
|
return 'Hello from awesomeness';
|
||||||
},
|
},
|
||||||
|
|
||||||
registerUrl: async (req) => {
|
registerUrl: async (req) => {
|
||||||
store.dispatch(doAddPluginUrl(req.data))
|
store.dispatch(doAddPluginUrl(req.data));
|
||||||
},
|
},
|
||||||
|
|
||||||
setAccountInfo: async (req) => {
|
setAccountInfo: async (req) => {
|
||||||
store.dispatch(doUpdateAccountInfo(req.data))
|
store.dispatch(doUpdateAccountInfo(req.data));
|
||||||
},
|
},
|
||||||
|
|
||||||
getAccountInfo: async (req) => {
|
getAccountInfo: async (req) => {
|
||||||
return store.getState().app.accountInfo
|
return store.getState().app.accountInfo;
|
||||||
},
|
},
|
||||||
|
|
||||||
setChatHeads: async (req) => {
|
setChatHeads: async (req) => {
|
||||||
return store.dispatch(doSetChatHeads(req.data))
|
return store.dispatch(doSetChatHeads(req.data));
|
||||||
},
|
},
|
||||||
|
|
||||||
getChatHeads: async (req) => {
|
getChatHeads: async (req) => {
|
||||||
return store.getState().app.chatHeads
|
return store.getState().app.chatHeads;
|
||||||
},
|
},
|
||||||
|
|
||||||
updateBlockInfo: async (req) => {
|
updateBlockInfo: async (req) => {
|
||||||
store.dispatch(doUpdateBlockInfo(req.data))
|
store.dispatch(doUpdateBlockInfo(req.data));
|
||||||
},
|
},
|
||||||
|
|
||||||
updateNodeStatus: async (req) => {
|
updateNodeStatus: async (req) => {
|
||||||
store.dispatch(doUpdateNodeStatus(req.data))
|
store.dispatch(doUpdateNodeStatus(req.data));
|
||||||
},
|
},
|
||||||
|
|
||||||
updateNodeInfo: async (req) => {
|
updateNodeInfo: async (req) => {
|
||||||
store.dispatch(doUpdateNodeInfo(req.data))
|
store.dispatch(doUpdateNodeInfo(req.data));
|
||||||
},
|
},
|
||||||
|
|
||||||
setNode: async (req) => {
|
setNode: async (req) => {
|
||||||
store.dispatch(doSetNode(req.data))
|
store.dispatch(doSetNode(req.data));
|
||||||
},
|
},
|
||||||
|
|
||||||
getNodeConfig: async (req) => {
|
getNodeConfig: async (req) => {
|
||||||
return store.getState().app.nodeConfig
|
return store.getState().app.nodeConfig;
|
||||||
},
|
},
|
||||||
|
|
||||||
setPageUrl: async (req) => {
|
setPageUrl: async (req) => {
|
||||||
return store.dispatch(doPageUrl(req.data))
|
return store.dispatch(doPageUrl(req.data));
|
||||||
},
|
},
|
||||||
|
|
||||||
getLocalStorage: async (req) => {
|
getLocalStorage: async (req) => {
|
||||||
return loadStateFromLocalStorage(req.data)
|
return loadStateFromLocalStorage(req.data);
|
||||||
},
|
},
|
||||||
|
|
||||||
setLocalStorage: async (req) => {
|
setLocalStorage: async (req) => {
|
||||||
return saveStateToLocalStorage(req.data.key, req.data.dataObj)
|
return saveStateToLocalStorage(req.data.key, req.data.dataObj);
|
||||||
},
|
},
|
||||||
|
|
||||||
openCopyTextMenu: async (req) => {
|
openCopyTextMenu: async (req) => {
|
||||||
@ -86,26 +98,26 @@ export const routes = {
|
|||||||
selectedText: req.data.selectedText,
|
selectedText: req.data.selectedText,
|
||||||
eventObject: req.data.eventObject,
|
eventObject: req.data.eventObject,
|
||||||
isFrame: req.data.isFrame,
|
isFrame: req.data.isFrame,
|
||||||
}
|
};
|
||||||
copyTextMenu.open(textMenuObject)
|
copyTextMenu.open(textMenuObject);
|
||||||
},
|
},
|
||||||
|
|
||||||
closeCopyTextMenu: async (req) => {
|
closeCopyTextMenu: async (req) => {
|
||||||
copyTextMenu.close()
|
copyTextMenu.close();
|
||||||
},
|
},
|
||||||
|
|
||||||
openFramePasteMenu: async (req) => {
|
openFramePasteMenu: async (req) => {
|
||||||
framePasteMenu.open(req.data)
|
framePasteMenu.open(req.data);
|
||||||
},
|
},
|
||||||
|
|
||||||
closeFramePasteMenu: async (req) => {
|
closeFramePasteMenu: async (req) => {
|
||||||
framePasteMenu.close()
|
framePasteMenu.close();
|
||||||
},
|
},
|
||||||
|
|
||||||
apiCall: async (req) => {
|
apiCall: async (req) => {
|
||||||
const url = req.data.url
|
const url = req.data.url;
|
||||||
delete req.data.url
|
delete req.data.url;
|
||||||
return api.request(url, req.data)
|
return api.request(url, req.data);
|
||||||
},
|
},
|
||||||
|
|
||||||
addresses: async (req) => {
|
addresses: async (req) => {
|
||||||
@ -116,251 +128,289 @@ export const routes = {
|
|||||||
nonce: address.nonce,
|
nonce: address.nonce,
|
||||||
textColor: address.textColor,
|
textColor: address.textColor,
|
||||||
base58PublicKey: address.base58PublicKey,
|
base58PublicKey: address.base58PublicKey,
|
||||||
}
|
};
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
transaction: async (req) => {
|
transaction: async (req) => {
|
||||||
let response
|
let response;
|
||||||
try {
|
try {
|
||||||
const tx = createTransaction(req.data.type, store.getState().app.wallet._addresses[req.data.nonce].keyPair, req.data.params)
|
const tx = createTransaction(
|
||||||
await requestTransactionDialog.requestTransaction(tx)
|
req.data.type,
|
||||||
const res = await processTransaction(tx.signedBytes)
|
store.getState().app.wallet._addresses[req.data.nonce].keyPair,
|
||||||
|
req.data.params
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!req.disableModal) {
|
||||||
|
await requestTransactionDialog.requestTransaction(tx);
|
||||||
|
}
|
||||||
|
|
||||||
|
const res = await processTransaction(tx.signedBytes);
|
||||||
|
|
||||||
response = {
|
response = {
|
||||||
success: true,
|
success: true,
|
||||||
data: res,
|
data: res,
|
||||||
}
|
};
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
console.error(e);
|
||||||
console.error(e.message)
|
console.error(e.message);
|
||||||
response = {
|
response = {
|
||||||
success: false,
|
success: false,
|
||||||
message: e.message,
|
message: e.message,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
return response;
|
||||||
return response
|
|
||||||
},
|
},
|
||||||
|
|
||||||
standaloneTransaction: async (req) => {
|
standaloneTransaction: async (req) => {
|
||||||
const rebuildUint8Array = (obj) => {
|
const rebuildUint8Array = (obj) => {
|
||||||
let _array = new Uint8Array(Object.keys(obj).length)
|
let _array = new Uint8Array(Object.keys(obj).length);
|
||||||
for (let i = 0; i < _array.byteLength; ++i) {
|
for (let i = 0; i < _array.byteLength; ++i) {
|
||||||
_array.set([obj[i]], i)
|
_array.set([obj[i]], i);
|
||||||
}
|
|
||||||
return _array
|
|
||||||
}
|
}
|
||||||
|
return _array;
|
||||||
|
};
|
||||||
|
|
||||||
let response
|
let response;
|
||||||
try {
|
try {
|
||||||
// req.data.keyPair unfortunately "prepared" into horrible object so we need to convert back
|
// req.data.keyPair unfortunately "prepared" into horrible object so we need to convert back
|
||||||
let _keyPair = {};
|
let _keyPair = {};
|
||||||
for (let _keyName in req.data.keyPair) {
|
for (let _keyName in req.data.keyPair) {
|
||||||
_keyPair[_keyName] = rebuildUint8Array(req.data.keyPair[_keyName])
|
_keyPair[_keyName] = rebuildUint8Array(
|
||||||
|
req.data.keyPair[_keyName]
|
||||||
|
);
|
||||||
}
|
}
|
||||||
const tx = createTransaction(req.data.type, _keyPair, req.data.params)
|
const tx = createTransaction(
|
||||||
const res = await processTransaction(tx.signedBytes)
|
req.data.type,
|
||||||
|
_keyPair,
|
||||||
|
req.data.params
|
||||||
|
);
|
||||||
|
const res = await processTransaction(tx.signedBytes);
|
||||||
response = {
|
response = {
|
||||||
success: true,
|
success: true,
|
||||||
data: res,
|
data: res,
|
||||||
}
|
};
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
console.error(e);
|
||||||
console.error(e.message)
|
console.error(e.message);
|
||||||
response = {
|
response = {
|
||||||
success: false,
|
success: false,
|
||||||
message: e.message,
|
message: e.message,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
return response;
|
||||||
return response
|
|
||||||
},
|
},
|
||||||
|
|
||||||
username: async (req) => {
|
username: async (req) => {
|
||||||
const state = store.getState()
|
const state = store.getState();
|
||||||
const username = state.user.storedWallets[state.app.wallet.addresses[0].address].name
|
const username =
|
||||||
|
state.user.storedWallets[state.app.wallet.addresses[0].address]
|
||||||
|
.name;
|
||||||
|
|
||||||
return username
|
return username;
|
||||||
},
|
},
|
||||||
|
|
||||||
chat: async (req) => {
|
chat: async (req) => {
|
||||||
let response
|
let response;
|
||||||
try {
|
try {
|
||||||
const tx = createTransaction(req.data.type, store.getState().app.wallet._addresses[req.data.nonce].keyPair, req.data.params)
|
const tx = createTransaction(
|
||||||
|
req.data.type,
|
||||||
|
store.getState().app.wallet._addresses[req.data.nonce].keyPair,
|
||||||
|
req.data.params
|
||||||
|
);
|
||||||
|
|
||||||
response = tx.chatBytes
|
response = tx.chatBytes;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
console.error(e);
|
||||||
console.error(e.message)
|
console.error(e.message);
|
||||||
response = false
|
response = false;
|
||||||
}
|
}
|
||||||
return response
|
return response;
|
||||||
},
|
},
|
||||||
|
|
||||||
sign_chat: async (req) => {
|
sign_chat: async (req) => {
|
||||||
let response
|
let response;
|
||||||
try {
|
try {
|
||||||
const signedChatBytes = await signChatTransaction(req.data.chatBytesArray, req.data.chatNonce, store.getState().app.wallet._addresses[req.data.nonce].keyPair)
|
const signedChatBytes = await signChatTransaction(
|
||||||
|
req.data.chatBytesArray,
|
||||||
|
req.data.chatNonce,
|
||||||
|
store.getState().app.wallet._addresses[req.data.nonce].keyPair
|
||||||
|
);
|
||||||
|
|
||||||
const res = await processTransaction(signedChatBytes)
|
const res = await processTransaction(signedChatBytes);
|
||||||
response = res
|
response = res;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
console.error(e);
|
||||||
console.error(e.message)
|
console.error(e.message);
|
||||||
response = false
|
response = false;
|
||||||
}
|
}
|
||||||
return response
|
return response;
|
||||||
},
|
},
|
||||||
|
|
||||||
sign_arbitrary: async (req) => {
|
sign_arbitrary: async (req) => {
|
||||||
let response
|
let response;
|
||||||
try {
|
try {
|
||||||
const signedArbitraryBytes = await signArbitraryTransaction(req.data.arbitraryBytesBase58, req.data.arbitraryBytesForSigningBase58, req.data.arbitraryNonce, store.getState().app.wallet._addresses[req.data.nonce].keyPair)
|
const signedArbitraryBytes = await signArbitraryTransaction(
|
||||||
|
req.data.arbitraryBytesBase58,
|
||||||
|
req.data.arbitraryBytesForSigningBase58,
|
||||||
|
req.data.arbitraryNonce,
|
||||||
|
store.getState().app.wallet._addresses[req.data.nonce].keyPair
|
||||||
|
);
|
||||||
|
|
||||||
const res = await processTransaction(signedArbitraryBytes)
|
const res = await processTransaction(signedArbitraryBytes);
|
||||||
response = res
|
response = res;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
console.error(e);
|
||||||
console.error(e.message)
|
console.error(e.message);
|
||||||
response = false
|
response = false;
|
||||||
}
|
}
|
||||||
return response
|
return response;
|
||||||
},
|
},
|
||||||
|
|
||||||
showNotification: async (req) => {
|
showNotification: async (req) => {
|
||||||
doNewMessage(req.data)
|
doNewMessage(req.data);
|
||||||
},
|
},
|
||||||
|
|
||||||
showSnackBar: async (req) => {
|
showSnackBar: async (req) => {
|
||||||
snackbar.add({
|
snackbar.add({
|
||||||
labelText: req.data,
|
labelText: req.data,
|
||||||
dismiss: true,
|
dismiss: true,
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
tradeBotCreateRequest: async (req) => {
|
tradeBotCreateRequest: async (req) => {
|
||||||
let response
|
let response;
|
||||||
try {
|
try {
|
||||||
const unsignedTxn = await tradeBotCreateRequest(req.data)
|
const unsignedTxn = await tradeBotCreateRequest(req.data);
|
||||||
|
|
||||||
const signedTxnBytes = await signTradeBotTxn(unsignedTxn, store.getState().app.selectedAddress.keyPair)
|
const signedTxnBytes = await signTradeBotTxn(
|
||||||
|
unsignedTxn,
|
||||||
|
store.getState().app.selectedAddress.keyPair
|
||||||
|
);
|
||||||
|
|
||||||
const res = await processTransaction(signedTxnBytes)
|
const res = await processTransaction(signedTxnBytes);
|
||||||
response = res
|
response = res;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
console.error(e);
|
||||||
console.error(e.message)
|
console.error(e.message);
|
||||||
response = e.message
|
response = e.message;
|
||||||
}
|
}
|
||||||
return response
|
return response;
|
||||||
},
|
},
|
||||||
|
|
||||||
tradeBotRespondRequest: async (req) => {
|
tradeBotRespondRequest: async (req) => {
|
||||||
let response
|
let response;
|
||||||
try {
|
try {
|
||||||
const res = await tradeBotRespondRequest(req.data)
|
const res = await tradeBotRespondRequest(req.data);
|
||||||
|
|
||||||
response = res
|
response = res;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
console.error(e);
|
||||||
console.error(e.message)
|
console.error(e.message);
|
||||||
response = e.message
|
response = e.message;
|
||||||
}
|
}
|
||||||
return response
|
return response;
|
||||||
},
|
},
|
||||||
|
|
||||||
deleteTradeOffer: async (req) => {
|
deleteTradeOffer: async (req) => {
|
||||||
let response
|
let response;
|
||||||
try {
|
try {
|
||||||
const unsignedTxn = await deleteTradeOffer(req.data)
|
const unsignedTxn = await deleteTradeOffer(req.data);
|
||||||
|
|
||||||
const signedTxnBytes = await signTradeBotTxn(unsignedTxn, store.getState().app.selectedAddress.keyPair)
|
const signedTxnBytes = await signTradeBotTxn(
|
||||||
|
unsignedTxn,
|
||||||
|
store.getState().app.selectedAddress.keyPair
|
||||||
|
);
|
||||||
|
|
||||||
const res = await processTransaction(signedTxnBytes)
|
const res = await processTransaction(signedTxnBytes);
|
||||||
|
|
||||||
response = res
|
response = res;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
console.error(e);
|
||||||
console.error(e.message)
|
console.error(e.message);
|
||||||
response = e.message
|
response = e.message;
|
||||||
}
|
}
|
||||||
return response
|
return response;
|
||||||
},
|
},
|
||||||
|
|
||||||
cancelAllOffers: async (req) => {
|
cancelAllOffers: async (req) => {
|
||||||
let response
|
let response;
|
||||||
try {
|
try {
|
||||||
const res = await cancelAllOffers(store.getState().app.selectedAddress)
|
const res = await cancelAllOffers(
|
||||||
response = res
|
store.getState().app.selectedAddress
|
||||||
|
);
|
||||||
|
response = res;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
console.error(e);
|
||||||
console.error(e.message)
|
console.error(e.message);
|
||||||
response = e.message
|
response = e.message;
|
||||||
}
|
}
|
||||||
return response
|
return response;
|
||||||
},
|
},
|
||||||
|
|
||||||
sendBtc: async (req) => {
|
sendBtc: async (req) => {
|
||||||
let response
|
let response;
|
||||||
try {
|
try {
|
||||||
const res = await sendBtc(req.data)
|
const res = await sendBtc(req.data);
|
||||||
response = res
|
response = res;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
console.error(e);
|
||||||
console.error(e.message)
|
console.error(e.message);
|
||||||
response = e.message
|
response = e.message;
|
||||||
}
|
}
|
||||||
return response
|
return response;
|
||||||
},
|
},
|
||||||
|
|
||||||
sendLtc: async (req) => {
|
sendLtc: async (req) => {
|
||||||
let response
|
let response;
|
||||||
try {
|
try {
|
||||||
const res = await sendLtc(req.data)
|
const res = await sendLtc(req.data);
|
||||||
response = res
|
response = res;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
console.error(e);
|
||||||
console.error(e.message)
|
console.error(e.message);
|
||||||
response = e.message
|
response = e.message;
|
||||||
}
|
}
|
||||||
return response
|
return response;
|
||||||
},
|
},
|
||||||
|
|
||||||
sendDoge: async (req) => {
|
sendDoge: async (req) => {
|
||||||
let response
|
let response;
|
||||||
try {
|
try {
|
||||||
const res = await sendDoge(req.data)
|
const res = await sendDoge(req.data);
|
||||||
response = res
|
response = res;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
console.error(e);
|
||||||
console.error(e.message)
|
console.error(e.message);
|
||||||
response = e.message
|
response = e.message;
|
||||||
}
|
}
|
||||||
return response
|
return response;
|
||||||
},
|
},
|
||||||
|
|
||||||
sendDgb: async (req) => {
|
sendDgb: async (req) => {
|
||||||
let response
|
let response;
|
||||||
try {
|
try {
|
||||||
const res = await sendDgb(req.data)
|
const res = await sendDgb(req.data);
|
||||||
response = res
|
response = res;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
console.error(e);
|
||||||
console.error(e.message)
|
console.error(e.message);
|
||||||
response = e.message
|
response = e.message;
|
||||||
}
|
}
|
||||||
return response
|
return response;
|
||||||
},
|
},
|
||||||
|
|
||||||
sendRvn: async (req) => {
|
sendRvn: async (req) => {
|
||||||
let response
|
let response;
|
||||||
try {
|
try {
|
||||||
const res = await sendRvn(req.data)
|
const res = await sendRvn(req.data);
|
||||||
response = res
|
response = res;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
console.error(e);
|
||||||
console.error(e.message)
|
console.error(e.message);
|
||||||
response = e.message
|
response = e.message;
|
||||||
}
|
}
|
||||||
return response
|
return response;
|
||||||
},
|
},
|
||||||
|
|
||||||
sendArrr: async (req) => {
|
sendArrr: async (req) => {
|
||||||
@ -375,4 +425,4 @@ export const routes = {
|
|||||||
}
|
}
|
||||||
return response
|
return response
|
||||||
},
|
},
|
||||||
}
|
};
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
require('events').EventEmitter.defaultMaxListeners = 0
|
require('events').EventEmitter.defaultMaxListeners = 0;
|
||||||
const path = require("path");
|
const path = require('path');
|
||||||
const { nodeResolve } = require("@rollup/plugin-node-resolve");
|
const { nodeResolve } = require('@rollup/plugin-node-resolve');
|
||||||
const progress = require("rollup-plugin-progress");
|
const progress = require('rollup-plugin-progress');
|
||||||
const replace = require('@rollup/plugin-replace');
|
const replace = require('@rollup/plugin-replace');
|
||||||
const globals = require("rollup-plugin-node-globals");
|
const globals = require('rollup-plugin-node-globals');
|
||||||
const commonjs = require("@rollup/plugin-commonjs");
|
const commonjs = require('@rollup/plugin-commonjs');
|
||||||
const alias = require("@rollup/plugin-alias");
|
const alias = require('@rollup/plugin-alias');
|
||||||
const { terser } = require('rollup-plugin-terser');
|
const { terser } = require('rollup-plugin-terser');
|
||||||
const babel = require("@rollup/plugin-babel");
|
const babel = require('@rollup/plugin-babel');
|
||||||
|
|
||||||
const aliases = {};
|
const aliases = {};
|
||||||
|
|
||||||
@ -16,7 +16,7 @@ const generateRollupConfig = (inputFile, outputFile) => {
|
|||||||
inputOptions: {
|
inputOptions: {
|
||||||
onwarn: (warning, rollupWarn) => {
|
onwarn: (warning, rollupWarn) => {
|
||||||
if (warning.code !== 'CIRCULAR_DEPENDENCY') {
|
if (warning.code !== 'CIRCULAR_DEPENDENCY') {
|
||||||
rollupWarn(warning)
|
rollupWarn(warning);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
input: inputFile,
|
input: inputFile,
|
||||||
@ -31,30 +31,30 @@ const generateRollupConfig = (inputFile, outputFile) => {
|
|||||||
}),
|
}),
|
||||||
nodeResolve({
|
nodeResolve({
|
||||||
preferBuiltins: false,
|
preferBuiltins: false,
|
||||||
mainFields: ['module', 'browser']
|
mainFields: ['module', 'browser'],
|
||||||
}),
|
}),
|
||||||
replace({
|
replace({
|
||||||
preventAssignment: true,
|
preventAssignment: true,
|
||||||
"process.env.NODE_ENV": JSON.stringify("production"),
|
'process.env.NODE_ENV': JSON.stringify('production'),
|
||||||
}),
|
}),
|
||||||
commonjs(),
|
commonjs(),
|
||||||
globals(),
|
globals(),
|
||||||
progress(),
|
progress(),
|
||||||
babel.babel({
|
babel.babel({
|
||||||
babelHelpers: 'bundled',
|
babelHelpers: 'bundled',
|
||||||
exclude: "node_modules/**",
|
exclude: 'node_modules/**',
|
||||||
}),
|
}),
|
||||||
terser({
|
terser({
|
||||||
compress: true,
|
compress: true,
|
||||||
output: {
|
output: {
|
||||||
comments: false,
|
comments: false,
|
||||||
},
|
},
|
||||||
})
|
}),
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
outputOptions: {
|
outputOptions: {
|
||||||
file: outputFile,
|
file: outputFile,
|
||||||
format: "umd",
|
format: 'umd',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -62,69 +62,73 @@ const generateRollupConfig = (inputFile, outputFile) => {
|
|||||||
const generateForPlugins = () => {
|
const generateForPlugins = () => {
|
||||||
const configs = [
|
const configs = [
|
||||||
{
|
{
|
||||||
in: "plugins/core/main.src.js",
|
in: 'plugins/core/main.src.js',
|
||||||
out: "plugins/core/main.js",
|
out: 'plugins/core/main.js',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
in: "plugins/core/trade-portal/trade-portal.src.js",
|
in: 'plugins/core/trade-portal/trade-portal.src.js',
|
||||||
out: "plugins/core/trade-portal/trade-portal.js",
|
out: 'plugins/core/trade-portal/trade-portal.js',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
in: "plugins/core/wallet/wallet-app.src.js",
|
in: 'plugins/core/wallet/wallet-app.src.js',
|
||||||
out: "plugins/core/wallet/wallet-app.js",
|
out: 'plugins/core/wallet/wallet-app.js',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
in: "plugins/core/reward-share/reward-share.src.js",
|
in: 'plugins/core/reward-share/reward-share.src.js',
|
||||||
out: "plugins/core/reward-share/reward-share.js",
|
out: 'plugins/core/reward-share/reward-share.js',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
in: "plugins/core/node-management/node-management.src.js",
|
in: 'plugins/core/node-management/node-management.src.js',
|
||||||
out: "plugins/core/node-management/node-management.js",
|
out: 'plugins/core/node-management/node-management.js',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
in: "plugins/core/group-management/group-management.src.js",
|
in: 'plugins/core/group-management/group-management.src.js',
|
||||||
out: "plugins/core/group-management/group-management.js",
|
out: 'plugins/core/group-management/group-management.js',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
in: "plugins/core/name-registration/name-registration.src.js",
|
in: 'plugins/core/name-registration/name-registration.src.js',
|
||||||
out: "plugins/core/name-registration/name-registration.js",
|
out: 'plugins/core/name-registration/name-registration.js',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
in: "plugins/core/qdn/websites.src.js",
|
in: 'plugins/core/qdn/websites.src.js',
|
||||||
out: "plugins/core/qdn/websites.js",
|
out: 'plugins/core/qdn/websites.js',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
in: "plugins/core/qdn/publish/publish.src.js",
|
in: 'plugins/core/qdn/publish/publish.src.js',
|
||||||
out: "plugins/core/qdn/publish/publish.js",
|
out: 'plugins/core/qdn/publish/publish.js',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
in: "plugins/core/qdn/browser/browser.src.js",
|
in: 'plugins/core/qdn/browser/browser.src.js',
|
||||||
out: "plugins/core/qdn/browser/browser.js",
|
out: 'plugins/core/qdn/browser/browser.js',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
in: "plugins/core/qdn/data-management/data-management.src.js",
|
in: 'plugins/core/qdn/data-management/data-management.src.js',
|
||||||
out: "plugins/core/qdn/data-management/data-management.js",
|
out: 'plugins/core/qdn/data-management/data-management.js',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
in: "plugins/core/messaging/messaging.src.js",
|
in: 'plugins/core/messaging/messaging.src.js',
|
||||||
out: "plugins/core/messaging/messaging.js",
|
out: 'plugins/core/messaging/messaging.js',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
in: "plugins/core/messaging/chain-messaging/chain-messaging.src.js",
|
in: 'plugins/core/messaging/chain-messaging/chain-messaging.src.js',
|
||||||
out: "plugins/core/messaging/chain-messaging/chain-messaging.js",
|
out: 'plugins/core/messaging/chain-messaging/chain-messaging.js',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
in: "plugins/core/messaging/q-chat/q-chat.src.js",
|
in: 'plugins/core/messaging/q-chat/q-chat.src.js',
|
||||||
out: "plugins/core/messaging/q-chat/q-chat.js",
|
out: 'plugins/core/messaging/q-chat/q-chat.js',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
in: "plugins/core/minting/minting-info.src.js",
|
in: 'plugins/core/minting/minting-info.src.js',
|
||||||
out: "plugins/core/minting/minting-info.js",
|
out: 'plugins/core/minting/minting-info.js',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
in: "plugins/core/puzzles/puzzles.src.js",
|
in: 'plugins/core/become-minter/become-minter.src.js',
|
||||||
out: "plugins/core/puzzles/puzzles.js",
|
out: 'plugins/core/become-minter/become-minter.js',
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
in: 'plugins/core/puzzles/puzzles.src.js',
|
||||||
|
out: 'plugins/core/puzzles/puzzles.js',
|
||||||
|
},
|
||||||
].map((file) => {
|
].map((file) => {
|
||||||
return generateRollupConfig(
|
return generateRollupConfig(
|
||||||
path.join(__dirname, file.in),
|
path.join(__dirname, file.in),
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
"emoji-picker-js": "https://github.com/Qortal/emoji-picker-js"
|
"emoji-picker-js": "https://github.com/Qortal/emoji-picker-js"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "7.18.9",
|
"@babel/core": "7.18.10",
|
||||||
"@github/time-elements": "3.1.2",
|
"@github/time-elements": "3.1.2",
|
||||||
"@material/mwc-button": "0.26.1",
|
"@material/mwc-button": "0.26.1",
|
||||||
"@material/mwc-checkbox": "0.26.1",
|
"@material/mwc-checkbox": "0.26.1",
|
||||||
@ -43,17 +43,17 @@
|
|||||||
"@polymer/paper-tooltip": "3.0.1",
|
"@polymer/paper-tooltip": "3.0.1",
|
||||||
"@rollup/plugin-alias": "3.1.9",
|
"@rollup/plugin-alias": "3.1.9",
|
||||||
"@rollup/plugin-babel": "5.3.1",
|
"@rollup/plugin-babel": "5.3.1",
|
||||||
"@rollup/plugin-commonjs": "22.0.1",
|
"@rollup/plugin-commonjs": "22.0.2",
|
||||||
"@rollup/plugin-node-resolve": "13.3.0",
|
"@rollup/plugin-node-resolve": "13.3.0",
|
||||||
"@rollup/plugin-replace": "4.0.0",
|
"@rollup/plugin-replace": "4.0.0",
|
||||||
"@vaadin/button": "23.1.4",
|
"@vaadin/button": "23.1.5",
|
||||||
"@vaadin/grid": "23.1.4",
|
"@vaadin/grid": "23.1.5",
|
||||||
"@vaadin/icons": "23.1.4",
|
"@vaadin/icons": "23.1.5",
|
||||||
"epml": "0.3.3",
|
"epml": "0.3.3",
|
||||||
"html-escaper": "3.0.3",
|
"html-escaper": "3.0.3",
|
||||||
"lit": "2.2.7",
|
"lit": "2.2.8",
|
||||||
"lit-translate": "2.0.1",
|
"lit-translate": "2.0.1",
|
||||||
"rollup": "2.77.0",
|
"rollup": "2.77.2",
|
||||||
"rollup-plugin-node-globals": "1.4.0",
|
"rollup-plugin-node-globals": "1.4.0",
|
||||||
"rollup-plugin-progress": "1.1.2",
|
"rollup-plugin-progress": "1.1.2",
|
||||||
"rollup-plugin-terser": "7.0.2"
|
"rollup-plugin-terser": "7.0.2"
|
||||||
|
@ -0,0 +1,229 @@
|
|||||||
|
import { css } from 'lit';
|
||||||
|
|
||||||
|
export const pageStyles = css`
|
||||||
|
* {
|
||||||
|
--mdc-theme-surface: var(--white);
|
||||||
|
--mdc-dialog-content-ink-color: var(--black);
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-title {
|
||||||
|
font-size: 40px;
|
||||||
|
color: var(--black);
|
||||||
|
font-weight: 400;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.divider {
|
||||||
|
color: #eee;
|
||||||
|
border-radius: 80%;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
.fullWidth {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.page-container {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
margin-bottom: 75px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.inner-container {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.description {
|
||||||
|
color: var(--black);
|
||||||
|
}
|
||||||
|
|
||||||
|
.message {
|
||||||
|
color: var(--gray);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sub-main {
|
||||||
|
width: 95%;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
flex-direction: column;
|
||||||
|
max-width: 800px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.level-black {
|
||||||
|
font-size: 32px;
|
||||||
|
color: var(--black);
|
||||||
|
font-weight: 400;
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-wrapper {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
height: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row {
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.column {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.column-center {
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.no-margin {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.no-wrap {
|
||||||
|
flex-wrap: nowrap !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row-center {
|
||||||
|
justify-content: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
.form-item {
|
||||||
|
display: flex;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-item--button {
|
||||||
|
flex-grow: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-item--input {
|
||||||
|
flex-grow: 1;
|
||||||
|
margin-right: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.center-box {
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, 0%);
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-box {
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 10px 25px;
|
||||||
|
text-align: center;
|
||||||
|
display: inline-block;
|
||||||
|
|
||||||
|
margin-bottom: 5px;
|
||||||
|
flex-basis: 250px;
|
||||||
|
}
|
||||||
|
.gap {
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
.level-black {
|
||||||
|
font-size: 32px;
|
||||||
|
color: var(--black);
|
||||||
|
font-weight: 400;
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 2rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.title {
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 20px;
|
||||||
|
line-height: 28px;
|
||||||
|
opacity: 0.66;
|
||||||
|
color: var(--switchborder);
|
||||||
|
}
|
||||||
|
|
||||||
|
.address {
|
||||||
|
overflow-wrap: anywhere;
|
||||||
|
color: var(--black);
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 20px;
|
||||||
|
line-height: 28px;
|
||||||
|
color: var(--black);
|
||||||
|
}
|
||||||
|
mwc-textfield {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
vaadin-button {
|
||||||
|
height: 100%;
|
||||||
|
margin: 0;
|
||||||
|
cursor: pointer;
|
||||||
|
outline: 1px var(--black) solid;
|
||||||
|
min-width: 80px;
|
||||||
|
}
|
||||||
|
.loader,
|
||||||
|
.loader:after {
|
||||||
|
border-radius: 50%;
|
||||||
|
width: 10em;
|
||||||
|
height: 10em;
|
||||||
|
}
|
||||||
|
.loadingContainer {
|
||||||
|
position: fixed;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
.backdrop {
|
||||||
|
height: 100vh;
|
||||||
|
width: 100vw;
|
||||||
|
opacity: 0.6;
|
||||||
|
background-color: var(--border);
|
||||||
|
z-index: 9;
|
||||||
|
position: fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading,
|
||||||
|
.loading:after {
|
||||||
|
border-radius: 50%;
|
||||||
|
width: 5em;
|
||||||
|
height: 5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading {
|
||||||
|
margin: 10px auto;
|
||||||
|
border-width: 0.6em;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(3, 169, 244, 0.2) rgba(3, 169, 244, 0.2)
|
||||||
|
rgba(3, 169, 244, 0.2) rgb(3, 169, 244);
|
||||||
|
font-size: 10px;
|
||||||
|
position: relative;
|
||||||
|
text-indent: -9999em;
|
||||||
|
transform: translateZ(0px);
|
||||||
|
animation: 1.1s linear 0s infinite normal none running loadingAnimation;
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes loadingAnimation {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: rotate(360deg);
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes loadingAnimation {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: rotate(360deg);
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`;
|
@ -0,0 +1,199 @@
|
|||||||
|
import { LitElement, html } from 'lit';
|
||||||
|
import { Epml } from '../../../epml.js';
|
||||||
|
import '../components/ButtonIconCopy.js';
|
||||||
|
import { use, translate, registerTranslateConfig } from 'lit-translate';
|
||||||
|
import { blocksNeed } from '../../utils/blocks-needed.js';
|
||||||
|
|
||||||
|
registerTranslateConfig({
|
||||||
|
loader: (lang) => fetch(`/language/${lang}.json`).then((res) => res.json()),
|
||||||
|
});
|
||||||
|
|
||||||
|
import '@polymer/paper-spinner/paper-spinner-lite.js';
|
||||||
|
import '@material/mwc-button';
|
||||||
|
import '@material/mwc-textfield';
|
||||||
|
import '@vaadin/button';
|
||||||
|
import { pageStyles } from './become-minter-css.src.js';
|
||||||
|
import './components/not-sponsored.src';
|
||||||
|
import './components/yes-sponsored.src';
|
||||||
|
const parentEpml = new Epml({ type: 'WINDOW', source: window.parent });
|
||||||
|
|
||||||
|
class BecomeMinter extends LitElement {
|
||||||
|
static get properties() {
|
||||||
|
return {
|
||||||
|
theme: { type: String, reflect: true },
|
||||||
|
sponsorshipKeyValue: { type: String },
|
||||||
|
nodeInfo: { type: Object },
|
||||||
|
isPageLoading: { type: Boolean },
|
||||||
|
addressInfo: { type: Object },
|
||||||
|
rewardSharePublicKey: { type: String },
|
||||||
|
mintingAccountData: { type: Array },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
static styles = [pageStyles];
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
this.theme = localStorage.getItem('qortalTheme')
|
||||||
|
? localStorage.getItem('qortalTheme')
|
||||||
|
: 'light';
|
||||||
|
this.sponsorshipKeyValue = '';
|
||||||
|
this.isPageLoading = true;
|
||||||
|
this.nodeInfo = {};
|
||||||
|
this.addressInfo = {};
|
||||||
|
this.rewardSharePublicKey = '';
|
||||||
|
this.mintingAccountData = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
changeLanguage() {
|
||||||
|
const checkLanguage = localStorage.getItem('qortalLanguage');
|
||||||
|
|
||||||
|
if (checkLanguage === null || checkLanguage.length === 0) {
|
||||||
|
localStorage.setItem('qortalLanguage', 'us');
|
||||||
|
use('us');
|
||||||
|
} else {
|
||||||
|
use(checkLanguage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_handleStorage() {
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
connectedCallback() {
|
||||||
|
super.connectedCallback();
|
||||||
|
window.addEventListener('storage', this._handleStorage);
|
||||||
|
}
|
||||||
|
|
||||||
|
disconnectedCallback() {
|
||||||
|
window.removeEventListener('storage', this._handleStorage);
|
||||||
|
super.disconnectedCallback();
|
||||||
|
}
|
||||||
|
|
||||||
|
async getNodeInfo() {
|
||||||
|
const nodeInfo = await parentEpml.request('apiCall', {
|
||||||
|
url: `/admin/status`,
|
||||||
|
});
|
||||||
|
|
||||||
|
return nodeInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
async getMintingAcccounts() {
|
||||||
|
const mintingAccountData = await parentEpml.request('apiCall', {
|
||||||
|
url: `/admin/mintingaccounts`,
|
||||||
|
});
|
||||||
|
return mintingAccountData;
|
||||||
|
}
|
||||||
|
|
||||||
|
async atMount() {
|
||||||
|
this.changeLanguage();
|
||||||
|
|
||||||
|
this.addressInfo =
|
||||||
|
window.parent.reduxStore.getState().app.accountInfo.addressInfo;
|
||||||
|
this.isPageLoading = true;
|
||||||
|
try {
|
||||||
|
const [nodeInfo, myRewardShareArray, mintingaccounts] =
|
||||||
|
await Promise.all([
|
||||||
|
this.getNodeInfo(),
|
||||||
|
this.getRewardShareRelationship(
|
||||||
|
window.parent.reduxStore.getState().app?.selectedAddress
|
||||||
|
?.address
|
||||||
|
),
|
||||||
|
this.getMintingAcccounts(),
|
||||||
|
]);
|
||||||
|
|
||||||
|
this.nodeInfo = nodeInfo;
|
||||||
|
this.rewardSharePublicKey =
|
||||||
|
myRewardShareArray[0]?.rewardSharePublicKey;
|
||||||
|
this.isPageLoading = false;
|
||||||
|
this.mintingAccountData = mintingaccounts;
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
|
||||||
|
this.isPageLoading = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async firstUpdated() {
|
||||||
|
await this.atMount();
|
||||||
|
}
|
||||||
|
|
||||||
|
async getRewardShareRelationship(recipientAddress) {
|
||||||
|
const myRewardShareArray = await parentEpml.request('apiCall', {
|
||||||
|
type: 'api',
|
||||||
|
url: `/addresses/rewardshares?recipients=${recipientAddress}`,
|
||||||
|
});
|
||||||
|
|
||||||
|
return myRewardShareArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
_levelUpBlocks() {
|
||||||
|
let countBlocksString = (
|
||||||
|
blocksNeed(0) -
|
||||||
|
(this.addressInfo?.blocksMinted +
|
||||||
|
this.addressInfo?.blocksMintedAdjustment)
|
||||||
|
).toString();
|
||||||
|
return countBlocksString;
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
console.log({ mintingAccountData: this.mintingAccountData });
|
||||||
|
const findMintingAccount = this.mintingAccountData?.find(
|
||||||
|
(ma) => !!ma.publicKey
|
||||||
|
);
|
||||||
|
|
||||||
|
const isAlreadySponsored =
|
||||||
|
this.addressInfo?.error !== 124 &&
|
||||||
|
this.addressInfo?.level === 0 &&
|
||||||
|
findMintingAccount;
|
||||||
|
|
||||||
|
return html`
|
||||||
|
${this.isPageLoading
|
||||||
|
? html`
|
||||||
|
<div class="loadingContainer">
|
||||||
|
<div class="loading"></div>
|
||||||
|
</div>
|
||||||
|
<div class="backdrop"></div>
|
||||||
|
`
|
||||||
|
: ''}
|
||||||
|
|
||||||
|
<div class="page-container">
|
||||||
|
<h1 class="header-title">
|
||||||
|
${translate('mintingpage.mchange32')}
|
||||||
|
</h1>
|
||||||
|
<div class="fullWidth">
|
||||||
|
<hr class="divider" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
${isAlreadySponsored
|
||||||
|
? ''
|
||||||
|
: html`
|
||||||
|
<not-sponsored
|
||||||
|
.atMount="${() => this.atMount()}"
|
||||||
|
></not-sponsored>
|
||||||
|
`}
|
||||||
|
${!isAlreadySponsored
|
||||||
|
? ''
|
||||||
|
: html`
|
||||||
|
<yes-sponsored
|
||||||
|
.rewardSharePublicKey=${this
|
||||||
|
.rewardSharePublicKey}
|
||||||
|
.addressInfo=${this.addressInfo}
|
||||||
|
></yes-sponsored>
|
||||||
|
`}
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.customElements.define('become-minter', BecomeMinter);
|
@ -0,0 +1,141 @@
|
|||||||
|
import { LitElement, html } from 'lit';
|
||||||
|
import { Epml } from '../../../../epml.js';
|
||||||
|
import '../../components/ButtonIconCopy.js';
|
||||||
|
import { use, translate, registerTranslateConfig } from 'lit-translate';
|
||||||
|
|
||||||
|
registerTranslateConfig({
|
||||||
|
loader: (lang) => fetch(`/language/${lang}.json`).then((res) => res.json()),
|
||||||
|
});
|
||||||
|
|
||||||
|
import '@polymer/paper-spinner/paper-spinner-lite.js';
|
||||||
|
import '@material/mwc-button';
|
||||||
|
import '@material/mwc-textfield';
|
||||||
|
import '@vaadin/button';
|
||||||
|
import { pageStyles } from '../become-minter-css.src.js';
|
||||||
|
|
||||||
|
const parentEpml = new Epml({ type: 'WINDOW', source: window.parent });
|
||||||
|
|
||||||
|
class NotSponsored extends LitElement {
|
||||||
|
static properties = {
|
||||||
|
atMount: { type: Function },
|
||||||
|
isLoadingSponsorshipKeySubmit: { type: Boolean },
|
||||||
|
sponsorshipKeyValue: { type: String },
|
||||||
|
addMintingAccountMessage: { type: String },
|
||||||
|
};
|
||||||
|
|
||||||
|
static styles = [pageStyles];
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
this.isLoadingSponsorshipKeySubmit = false;
|
||||||
|
this.sponsorshipKeyValue = '';
|
||||||
|
this.addMintingAccountMessage = '';
|
||||||
|
this.atMount = () => {};
|
||||||
|
}
|
||||||
|
|
||||||
|
renderErr1Text() {
|
||||||
|
return html`${translate('nodepage.nchange27')}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
renderErr2Text() {
|
||||||
|
return html`${translate('nodepage.nchange28')}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
getApiKey() {
|
||||||
|
const myNode =
|
||||||
|
window.parent.reduxStore.getState().app.nodeConfig.knownNodes[
|
||||||
|
window.parent.reduxStore.getState().app.nodeConfig.node
|
||||||
|
];
|
||||||
|
let apiKey = myNode.apiKey;
|
||||||
|
return apiKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
addMintingAccount(e) {
|
||||||
|
this.isLoadingSponsorshipKeySubmit = true;
|
||||||
|
this.addMintingAccountMessage = 'Loading...';
|
||||||
|
|
||||||
|
parentEpml
|
||||||
|
.request('apiCall', {
|
||||||
|
url: `/admin/mintingaccounts?apiKey=${this.getApiKey()}`,
|
||||||
|
method: 'POST',
|
||||||
|
body: this.sponsorshipKeyValue,
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
if (res === true) {
|
||||||
|
// refetch data
|
||||||
|
this.atMount();
|
||||||
|
this.sponsorshipKeyValue = '';
|
||||||
|
this.addMintingAccountMessage = this.renderErr1Text();
|
||||||
|
this.isLoadingSponsorshipKeySubmit = false;
|
||||||
|
} else {
|
||||||
|
this.sponsorshipKeyValue = '';
|
||||||
|
this.addMintingAccountMessage = this.renderErr2Text();
|
||||||
|
this.isLoadingSponsorshipKeySubmit = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
inputHandler(e) {
|
||||||
|
this.sponsorshipKeyValue = e.target.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return html`
|
||||||
|
<div class="inner-container">
|
||||||
|
<div class="sub-main">
|
||||||
|
<h2 class="level-black">
|
||||||
|
${translate('mintingpage.mchange33')}
|
||||||
|
</h2>
|
||||||
|
<p class="description">
|
||||||
|
${translate('mintingpage.mchange34')}
|
||||||
|
</p>
|
||||||
|
<h2 class="level-black">
|
||||||
|
${translate('mintingpage.mchange35')}
|
||||||
|
</h2>
|
||||||
|
<p class="description">
|
||||||
|
${translate('mintingpage.mchange36')}
|
||||||
|
</p>
|
||||||
|
<p class="description">
|
||||||
|
${translate('mintingpage.mchange37')}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="message">${this.addMintingAccountMessage}</p>
|
||||||
|
<div class="form-wrapper">
|
||||||
|
<div class="form-item form-item--input">
|
||||||
|
<mwc-textfield
|
||||||
|
?disabled="${this
|
||||||
|
.isLoadingSponsorshipKeySubmit}"
|
||||||
|
label="${translate(
|
||||||
|
'becomeMinterPage.bchange8'
|
||||||
|
)}"
|
||||||
|
id="addSponsorshipKey"
|
||||||
|
@input="${this.inputHandler}"
|
||||||
|
.value="${this.sponsorshipKeyValue || ''}"
|
||||||
|
fullWidth
|
||||||
|
>
|
||||||
|
</mwc-textfield>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-item form-item--button">
|
||||||
|
<vaadin-button
|
||||||
|
?disabled="${this
|
||||||
|
.isLoadingSponsorshipKeySubmit}"
|
||||||
|
@click="${this.addMintingAccount}"
|
||||||
|
>
|
||||||
|
${this.isLoadingSponsorshipKeySubmit === false
|
||||||
|
? html`${translate(
|
||||||
|
'puzzlepage.pchange15'
|
||||||
|
)}`
|
||||||
|
: html`<paper-spinner-lite
|
||||||
|
active
|
||||||
|
></paper-spinner-lite>`}
|
||||||
|
</vaadin-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.customElements.define('not-sponsored', NotSponsored);
|
@ -0,0 +1,123 @@
|
|||||||
|
import { LitElement, html } from 'lit';
|
||||||
|
import { Epml } from '../../../../epml.js';
|
||||||
|
import '../../components/ButtonIconCopy.js';
|
||||||
|
import { use, translate, registerTranslateConfig } from 'lit-translate';
|
||||||
|
|
||||||
|
registerTranslateConfig({
|
||||||
|
loader: (lang) => fetch(`/language/${lang}.json`).then((res) => res.json()),
|
||||||
|
});
|
||||||
|
import '@polymer/paper-spinner/paper-spinner-lite.js';
|
||||||
|
|
||||||
|
import '@material/mwc-button';
|
||||||
|
import '@material/mwc-textfield';
|
||||||
|
import '@vaadin/button';
|
||||||
|
import { blocksNeed } from '../../../utils/blocks-needed.js';
|
||||||
|
import { pageStyles } from '../become-minter-css.src.js';
|
||||||
|
|
||||||
|
class YesSponsored extends LitElement {
|
||||||
|
static get properties() {
|
||||||
|
return {
|
||||||
|
addressInfo: { type: Object },
|
||||||
|
rewardSharePublicKey: { type: String },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
|
||||||
|
this.addressInfo = {};
|
||||||
|
this.rewardSharePublicKey = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
static styles = [pageStyles];
|
||||||
|
|
||||||
|
_levelUpBlocks() {
|
||||||
|
let countBlocksString = (
|
||||||
|
blocksNeed(0) -
|
||||||
|
(this.addressInfo?.blocksMinted +
|
||||||
|
this.addressInfo?.blocksMintedAdjustment)
|
||||||
|
).toString();
|
||||||
|
return countBlocksString;
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return html`
|
||||||
|
<div class="inner-container">
|
||||||
|
<div class="column column-center">
|
||||||
|
<div class="column column-center">
|
||||||
|
<span class="level-black"
|
||||||
|
>${translate('becomeMinterPage.bchange10')}</span
|
||||||
|
>
|
||||||
|
<hr
|
||||||
|
style="width: 50%; color: #eee; border-radius: 80%; margin-bottom: 2rem;"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<div class="row row-center gap">
|
||||||
|
<div class="content-box">
|
||||||
|
<span class="title"
|
||||||
|
>${translate(
|
||||||
|
'walletpage.wchange41'
|
||||||
|
)}</span
|
||||||
|
>
|
||||||
|
<hr
|
||||||
|
style="color: #eee; border-radius: 90%; margin-bottom: 1rem;"
|
||||||
|
/>
|
||||||
|
<h4>${translate('becomeMinterPage.bchange12')}</h4>
|
||||||
|
</div>
|
||||||
|
<div class="content-box">
|
||||||
|
<span class="title"
|
||||||
|
>${translate(
|
||||||
|
'becomeMinterPage.bchange13'
|
||||||
|
)}</span
|
||||||
|
>
|
||||||
|
<hr
|
||||||
|
style="color: #eee; border-radius: 90%; margin-bottom: 1rem;"
|
||||||
|
/>
|
||||||
|
<h4>
|
||||||
|
${this._levelUpBlocks()}
|
||||||
|
${translate('mintingpage.mchange26')}
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
<div class="content-box">
|
||||||
|
<span class="title"
|
||||||
|
>${translate(
|
||||||
|
'becomeMinterPage.bchange15'
|
||||||
|
)}</span
|
||||||
|
>
|
||||||
|
<hr
|
||||||
|
style="color: #eee; border-radius: 90%; margin-bottom: 1rem;"
|
||||||
|
/>
|
||||||
|
<h4 class="no-margin">
|
||||||
|
${translate('becomeMinterPage.bchange16')}
|
||||||
|
</h4>
|
||||||
|
<div class="row row-center column-center no-wrap">
|
||||||
|
<p class="address">
|
||||||
|
${this.rewardSharePublicKey}
|
||||||
|
</p>
|
||||||
|
<button-icon-copy
|
||||||
|
title="${translate('walletpage.wchange3')}"
|
||||||
|
onSuccessMessage="${translate(
|
||||||
|
'walletpage.wchange4'
|
||||||
|
)}"
|
||||||
|
onErrorMessage="${translate(
|
||||||
|
'walletpage.wchange39'
|
||||||
|
)}"
|
||||||
|
textToCopy=${this.rewardSharePublicKey}
|
||||||
|
buttonSize="28px"
|
||||||
|
iconSize="16px"
|
||||||
|
color="var(--copybutton)"
|
||||||
|
offsetLeft="4px"
|
||||||
|
>
|
||||||
|
</button-icon-copy>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.customElements.define('yes-sponsored', YesSponsored);
|
53
qortal-ui-plugins/plugins/core/become-minter/index.html
Normal file
53
qortal-ui-plugins/plugins/core/become-minter/index.html
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="/font/material-icons.css" />
|
||||||
|
<link rel="stylesheet" href="/font/switch-theme.css" />
|
||||||
|
<script>
|
||||||
|
const checkBack = localStorage.getItem('qortalTheme');
|
||||||
|
if (checkBack === 'dark') {
|
||||||
|
newtheme = 'dark';
|
||||||
|
} else {
|
||||||
|
newtheme = 'light';
|
||||||
|
}
|
||||||
|
document.querySelector('html').setAttribute('theme', newtheme);
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
html {
|
||||||
|
--scrollbarBG: #a1a1a1;
|
||||||
|
--thumbBG: #6a6c75;
|
||||||
|
}
|
||||||
|
|
||||||
|
*::-webkit-scrollbar {
|
||||||
|
width: 11px;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
scrollbar-width: thin;
|
||||||
|
scrollbar-color: var(--thumbBG) var(--scrollbarBG);
|
||||||
|
}
|
||||||
|
|
||||||
|
*::-webkit-scrollbar-track {
|
||||||
|
background: var(--scrollbarBG);
|
||||||
|
}
|
||||||
|
|
||||||
|
*::-webkit-scrollbar-thumb {
|
||||||
|
background-color: var(--thumbBG);
|
||||||
|
border-radius: 6px;
|
||||||
|
border: 3px solid var(--scrollbarBG);
|
||||||
|
}
|
||||||
|
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
font-family: 'Roboto', sans-serif;
|
||||||
|
background: var(--plugback);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<become-minter></become-minter>
|
||||||
|
<script src="become-minter.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -309,6 +309,10 @@ class ChatPage extends LitElement {
|
|||||||
this.messageSignature = eachMessage.signature
|
this.messageSignature = eachMessage.signature
|
||||||
let _eachMessage = this.decodeMessage(eachMessage)
|
let _eachMessage = this.decodeMessage(eachMessage)
|
||||||
return _eachMessage
|
return _eachMessage
|
||||||
|
} else {
|
||||||
|
this.messageSignature = eachMessage.signature
|
||||||
|
let _eachMessage = this.decodeMessage(eachMessage)
|
||||||
|
return _eachMessage
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -329,18 +333,22 @@ class ChatPage extends LitElement {
|
|||||||
} else {
|
} else {
|
||||||
|
|
||||||
let _newMessages = messages.map((eachMessage) => {
|
let _newMessages = messages.map((eachMessage) => {
|
||||||
|
|
||||||
if (eachMessage.isText === true) {
|
if (eachMessage.isText === true) {
|
||||||
let _eachMessage = this.decodeMessage(eachMessage)
|
let _eachMessage = this.decodeMessage(eachMessage)
|
||||||
|
|
||||||
if (this.messageSignature !== eachMessage.signature) {
|
if (this.messageSignature !== eachMessage.signature) {
|
||||||
|
|
||||||
this.messageSignature = eachMessage.signature
|
this.messageSignature = eachMessage.signature
|
||||||
|
|
||||||
// What are we waiting for, send in the message immediately...
|
// What are we waiting for, send in the message immediately...
|
||||||
this.renderNewMessage(_eachMessage)
|
this.renderNewMessage(_eachMessage)
|
||||||
}
|
}
|
||||||
|
return _eachMessage
|
||||||
|
} else {
|
||||||
|
let _eachMessage = this.decodeMessage(eachMessage)
|
||||||
|
|
||||||
|
if (this.messageSignature !== eachMessage.signature) {
|
||||||
|
this.messageSignature = eachMessage.signature
|
||||||
|
this.renderNewMessage(_eachMessage)
|
||||||
|
}
|
||||||
return _eachMessage
|
return _eachMessage
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
import { parentEpml } from './connect.js'
|
import { parentEpml } from './connect.js';
|
||||||
import './streams/streams.js'
|
import './streams/streams.js';
|
||||||
|
|
||||||
let config = {}
|
|
||||||
let haveRegisteredNodeManagement = false
|
|
||||||
|
|
||||||
|
let config = {};
|
||||||
|
let haveRegisteredNodeManagement = false;
|
||||||
|
|
||||||
parentEpml.ready().then(() => {
|
parentEpml.ready().then(() => {
|
||||||
// pluginUrlsConf
|
// pluginUrlsConf
|
||||||
@ -15,7 +14,16 @@ parentEpml.ready().then(() => {
|
|||||||
title: 'Minting Details',
|
title: 'Minting Details',
|
||||||
icon: 'vaadin:info-circle',
|
icon: 'vaadin:info-circle',
|
||||||
menus: [],
|
menus: [],
|
||||||
parent: false
|
parent: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: 'become-minter',
|
||||||
|
domain: 'core',
|
||||||
|
page: 'become-minter/index.html',
|
||||||
|
title: 'Become a Minter',
|
||||||
|
icon: 'vaadin:info-circle',
|
||||||
|
menus: [],
|
||||||
|
parent: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
url: 'wallet',
|
url: 'wallet',
|
||||||
@ -24,7 +32,7 @@ parentEpml.ready().then(() => {
|
|||||||
title: 'Wallet',
|
title: 'Wallet',
|
||||||
icon: 'vaadin:wallet',
|
icon: 'vaadin:wallet',
|
||||||
menus: [],
|
menus: [],
|
||||||
parent: false
|
parent: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
url: 'trade-portal',
|
url: 'trade-portal',
|
||||||
@ -33,7 +41,7 @@ parentEpml.ready().then(() => {
|
|||||||
title: 'Trade Portal',
|
title: 'Trade Portal',
|
||||||
icon: 'vaadin:bullets',
|
icon: 'vaadin:bullets',
|
||||||
menus: [],
|
menus: [],
|
||||||
parent: false
|
parent: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
url: 'reward-share',
|
url: 'reward-share',
|
||||||
@ -42,7 +50,7 @@ parentEpml.ready().then(() => {
|
|||||||
title: 'Reward Share',
|
title: 'Reward Share',
|
||||||
icon: 'vaadin:share-square',
|
icon: 'vaadin:share-square',
|
||||||
menus: [],
|
menus: [],
|
||||||
parent: false
|
parent: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
url: 'name-registration',
|
url: 'name-registration',
|
||||||
@ -51,7 +59,7 @@ parentEpml.ready().then(() => {
|
|||||||
title: 'Name Registration',
|
title: 'Name Registration',
|
||||||
icon: 'vaadin:user-check',
|
icon: 'vaadin:user-check',
|
||||||
menus: [],
|
menus: [],
|
||||||
parent: false
|
parent: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
url: 'websites',
|
url: 'websites',
|
||||||
@ -60,7 +68,7 @@ parentEpml.ready().then(() => {
|
|||||||
title: 'Websites',
|
title: 'Websites',
|
||||||
icon: 'vaadin:desktop',
|
icon: 'vaadin:desktop',
|
||||||
menus: [],
|
menus: [],
|
||||||
parent: false
|
parent: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
url: 'data-management',
|
url: 'data-management',
|
||||||
@ -69,7 +77,7 @@ parentEpml.ready().then(() => {
|
|||||||
title: 'Data Management',
|
title: 'Data Management',
|
||||||
icon: 'vaadin:database',
|
icon: 'vaadin:database',
|
||||||
menus: [],
|
menus: [],
|
||||||
parent: false
|
parent: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
url: 'q-chat',
|
url: 'q-chat',
|
||||||
@ -78,7 +86,7 @@ parentEpml.ready().then(() => {
|
|||||||
title: 'Q-Chat',
|
title: 'Q-Chat',
|
||||||
icon: 'vaadin:chat',
|
icon: 'vaadin:chat',
|
||||||
menus: [],
|
menus: [],
|
||||||
parent: false
|
parent: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
url: 'group-management',
|
url: 'group-management',
|
||||||
@ -87,7 +95,7 @@ parentEpml.ready().then(() => {
|
|||||||
title: 'Group Management',
|
title: 'Group Management',
|
||||||
icon: 'vaadin:group',
|
icon: 'vaadin:group',
|
||||||
menus: [],
|
menus: [],
|
||||||
parent: false
|
parent: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
url: 'puzzles',
|
url: 'puzzles',
|
||||||
@ -96,22 +104,25 @@ parentEpml.ready().then(() => {
|
|||||||
title: 'Puzzles',
|
title: 'Puzzles',
|
||||||
icon: 'vaadin:puzzle-piece',
|
icon: 'vaadin:puzzle-piece',
|
||||||
menus: [],
|
menus: [],
|
||||||
parent: false
|
parent: false,
|
||||||
}
|
},
|
||||||
]
|
];
|
||||||
|
|
||||||
const registerPlugins = (pluginInfo) => {
|
const registerPlugins = (pluginInfo) => {
|
||||||
parentEpml.request('registerUrl', pluginInfo)
|
parentEpml.request('registerUrl', pluginInfo);
|
||||||
}
|
};
|
||||||
|
|
||||||
const checkNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node]
|
const checkNode =
|
||||||
|
window.parent.reduxStore.getState().app.nodeConfig.knownNodes[
|
||||||
|
window.parent.reduxStore.getState().app.nodeConfig.node
|
||||||
|
];
|
||||||
|
|
||||||
parentEpml.subscribe('config', c => {
|
parentEpml.subscribe('config', (c) => {
|
||||||
config = JSON.parse(c)
|
config = JSON.parse(c);
|
||||||
|
|
||||||
// Only register node management if node management is enabled and it hasn't already been registered
|
// Only register node management if node management is enabled and it hasn't already been registered
|
||||||
if (!haveRegisteredNodeManagement && checkNode.enableManagement) {
|
if (!haveRegisteredNodeManagement && checkNode.enableManagement) {
|
||||||
haveRegisteredNodeManagement = true
|
haveRegisteredNodeManagement = true;
|
||||||
|
|
||||||
let nodeManagementConf = {
|
let nodeManagementConf = {
|
||||||
url: 'node-management',
|
url: 'node-management',
|
||||||
@ -120,13 +131,13 @@ parentEpml.ready().then(() => {
|
|||||||
title: 'Node Management',
|
title: 'Node Management',
|
||||||
icon: 'vaadin:cloud',
|
icon: 'vaadin:cloud',
|
||||||
menus: [],
|
menus: [],
|
||||||
parent: false
|
parent: false,
|
||||||
}
|
};
|
||||||
|
|
||||||
let _pluginUrlsConf = [...pluginUrlsConf, nodeManagementConf]
|
let _pluginUrlsConf = [...pluginUrlsConf, nodeManagementConf];
|
||||||
registerPlugins(_pluginUrlsConf)
|
registerPlugins(_pluginUrlsConf);
|
||||||
} else {
|
} else {
|
||||||
registerPlugins(pluginUrlsConf)
|
registerPlugins(pluginUrlsConf);
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
})
|
});
|
||||||
|
@ -545,7 +545,7 @@ class Websites extends LitElement {
|
|||||||
const blockedNamesUrl = `${nodeUrl}/lists/blockedNames?apiKey=${this.getApiKey()}`
|
const blockedNamesUrl = `${nodeUrl}/lists/blockedNames?apiKey=${this.getApiKey()}`
|
||||||
|
|
||||||
const resources = await parentEpml.request('apiCall', {
|
const resources = await parentEpml.request('apiCall', {
|
||||||
url: `/arbitrary/resources?service=${this.service}&default=true&limit=0&reverse=false&includestatus=true&includemetadata=true`
|
url: `/arbitrary/resources?service=${this.service}&default=true&limit=0&reverse=false&includestatus=false&includemetadata=false`
|
||||||
})
|
})
|
||||||
|
|
||||||
this.resources = resources
|
this.resources = resources
|
||||||
|
55
qortal-ui-plugins/plugins/core/trade-bot/index.html
Normal file
55
qortal-ui-plugins/plugins/core/trade-bot/index.html
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="/font/material-icons.css">
|
||||||
|
<link rel="stylesheet" href="/font/switch-theme.css">
|
||||||
|
<script>
|
||||||
|
const checkBack = localStorage.getItem('qortalTheme')
|
||||||
|
if (checkBack === 'dark') {
|
||||||
|
newtheme = 'dark';
|
||||||
|
} else {
|
||||||
|
newtheme = 'light';
|
||||||
|
}
|
||||||
|
document.querySelector('html').setAttribute('theme', newtheme);
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
html {
|
||||||
|
--scrollbarBG: #a1a1a1;
|
||||||
|
--thumbBG: #6a6c75;
|
||||||
|
}
|
||||||
|
|
||||||
|
*::-webkit-scrollbar {
|
||||||
|
width: 11px;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
scrollbar-width: thin;
|
||||||
|
scrollbar-color: var(--thumbBG) var(--scrollbarBG);
|
||||||
|
}
|
||||||
|
|
||||||
|
*::-webkit-scrollbar-track {
|
||||||
|
background: var(--scrollbarBG);
|
||||||
|
}
|
||||||
|
|
||||||
|
*::-webkit-scrollbar-thumb {
|
||||||
|
background-color: var(--thumbBG);
|
||||||
|
border-radius: 6px;
|
||||||
|
border: 3px solid var(--scrollbarBG);
|
||||||
|
}
|
||||||
|
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
font-family: "Roboto", sans-serif;
|
||||||
|
background: var(--plugback);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<trade-bot></trade-bot>
|
||||||
|
<script src="trade-bot.js"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
@ -19,6 +19,8 @@ import '@material/mwc-textfield'
|
|||||||
import '@polymer/paper-progress/paper-progress.js'
|
import '@polymer/paper-progress/paper-progress.js'
|
||||||
import '@polymer/paper-slider/paper-slider.js'
|
import '@polymer/paper-slider/paper-slider.js'
|
||||||
import '@polymer/paper-spinner/paper-spinner-lite.js'
|
import '@polymer/paper-spinner/paper-spinner-lite.js'
|
||||||
|
import '@polymer/paper-icon-button/paper-icon-button.js'
|
||||||
|
import '@polymer/iron-icons/iron-icons.js'
|
||||||
import '@vaadin/button'
|
import '@vaadin/button'
|
||||||
import '@vaadin/grid'
|
import '@vaadin/grid'
|
||||||
import '@vaadin/icon'
|
import '@vaadin/icon'
|
||||||
@ -776,7 +778,10 @@ class MultiWallet extends LitElement {
|
|||||||
<div><span>${this.selectedTransaction.creatorAddress}</span></div>
|
<div><span>${this.selectedTransaction.creatorAddress}</span></div>
|
||||||
<span class="title"> ${translate("walletpage.wchange10")} </span>
|
<span class="title"> ${translate("walletpage.wchange10")} </span>
|
||||||
<br />
|
<br />
|
||||||
<div><span>${this.selectedTransaction.recipient}</span></div>
|
<div style="display: inline;">
|
||||||
|
${this.renderSQB()}
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
${!this.selectedTransaction.amount ? '' : html`
|
${!this.selectedTransaction.amount ? '' : html`
|
||||||
<span class="title"> ${translate("walletpage.wchange11")} </span>
|
<span class="title"> ${translate("walletpage.wchange11")} </span>
|
||||||
<br />
|
<br />
|
||||||
@ -823,9 +828,10 @@ class MultiWallet extends LitElement {
|
|||||||
</div>
|
</div>
|
||||||
<span class="title"> ${translate("walletpage.wchange10")} </span>
|
<span class="title"> ${translate("walletpage.wchange10")} </span>
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div style="display: inline;">
|
||||||
<span>${this.selectedTransaction.btcReceiver}</span>
|
<span>${this.selectedTransaction.btcReceiver}</span>
|
||||||
</div>
|
</div>
|
||||||
|
<br />
|
||||||
<span class="title"> ${translate("walletpage.wchange12")} </span>
|
<span class="title"> ${translate("walletpage.wchange12")} </span>
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div>
|
||||||
@ -873,9 +879,10 @@ class MultiWallet extends LitElement {
|
|||||||
</div>
|
</div>
|
||||||
<span class="title"> ${translate("walletpage.wchange10")} </span>
|
<span class="title"> ${translate("walletpage.wchange10")} </span>
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div style="display: inline;">
|
||||||
<span> ${this.selectedTransaction.ltcReceiver} </span>
|
<span>${this.selectedTransaction.ltcReceiver}</span> <paper-icon-button icon="icons:send" @click=${() => this.sendToLtcAddress()} title="Send to this address"></paper-icon-button>
|
||||||
</div>
|
</div>
|
||||||
|
<br />
|
||||||
<span class="title"> ${translate("walletpage.wchange12")} </span>
|
<span class="title"> ${translate("walletpage.wchange12")} </span>
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div>
|
||||||
@ -918,9 +925,10 @@ class MultiWallet extends LitElement {
|
|||||||
</div>
|
</div>
|
||||||
<span class="title"> ${translate("walletpage.wchange9")} </span>
|
<span class="title"> ${translate("walletpage.wchange9")} </span>
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div style="display: inline;">
|
||||||
<span>${this.selectedTransaction.dogeSender}</span>
|
<span>${this.selectedTransaction.dogeSender}</span>
|
||||||
</div>
|
</div>
|
||||||
|
<br />
|
||||||
<span class="title"> ${translate("walletpage.wchange10")} </span>
|
<span class="title"> ${translate("walletpage.wchange10")} </span>
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div>
|
||||||
@ -973,9 +981,10 @@ class MultiWallet extends LitElement {
|
|||||||
</div>
|
</div>
|
||||||
<span class="title"> ${translate("walletpage.wchange10")} </span>
|
<span class="title"> ${translate("walletpage.wchange10")} </span>
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div> style="display: inline;"
|
||||||
<span>${this.selectedTransaction.dgbReceiver}</span>
|
<span>${this.selectedTransaction.dgbReceiver}</span>
|
||||||
</div>
|
</div>
|
||||||
|
<br />
|
||||||
<span class="title"> ${translate("walletpage.wchange12")} </span>
|
<span class="title"> ${translate("walletpage.wchange12")} </span>
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div>
|
||||||
@ -1023,9 +1032,10 @@ class MultiWallet extends LitElement {
|
|||||||
</div>
|
</div>
|
||||||
<span class="title"> ${translate("walletpage.wchange10")} </span>
|
<span class="title"> ${translate("walletpage.wchange10")} </span>
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div style="display: inline;">
|
||||||
<span>${this.selectedTransaction.rvnReceiver}</span>
|
<span>${this.selectedTransaction.rvnReceiver}</span>
|
||||||
</div>
|
</div>
|
||||||
|
<br />
|
||||||
<span class="title"> ${translate("walletpage.wchange12")} </span>
|
<span class="title"> ${translate("walletpage.wchange12")} </span>
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div>
|
||||||
@ -1117,7 +1127,10 @@ class MultiWallet extends LitElement {
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<span>${translate("walletpage.wchange19")}:</span><br />
|
<span>${translate("walletpage.wchange19")}:</span><br />
|
||||||
<span style="font-weight: bold;">${this.balanceString}</span>
|
<span style="float: left; font-weight: bold; display: inline;">${this.balanceString}</span><br />
|
||||||
|
<span style="float: left; font-weight: bold; display: inline;">
|
||||||
|
<vaadin-button theme="primary small" style="width: 100%;" @click=${() => this.calculateQortAll()}><vaadin-icon icon="vaadin:coin-piles" slot="prefix"></vaadin-icon> ${translate("walletpage.wchange45")} QORT</vaadin-button>
|
||||||
|
</span><br /><span> </span>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<mwc-textfield
|
<mwc-textfield
|
||||||
@ -1254,7 +1267,10 @@ class MultiWallet extends LitElement {
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<span>${translate("walletpage.wchange19")}:</span><br />
|
<span>${translate("walletpage.wchange19")}:</span><br />
|
||||||
<span style="font-weight: bold;">${this.balanceString}</span>
|
<span style="float: left; font-weight: bold; display: inline;">${this.balanceString}</span><br />
|
||||||
|
<span style="float: left; font-weight: bold; display: inline;">
|
||||||
|
<vaadin-button theme="primary small" style="width: 100%;" @click=${() => this.calculateLtcAll()}><vaadin-icon icon="vaadin:coin-piles" slot="prefix"></vaadin-icon> ${translate("walletpage.wchange45")} LTC</vaadin-button>
|
||||||
|
</span><br /><span> </span>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<mwc-textfield
|
<mwc-textfield
|
||||||
@ -2045,6 +2061,46 @@ class MultiWallet extends LitElement {
|
|||||||
this.errorMessage = ''
|
this.errorMessage = ''
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sendToQortAddress() {
|
||||||
|
this.recipient = this.selectedTransaction.recipient
|
||||||
|
this.openSendQort()
|
||||||
|
this.shadowRoot.querySelector('#showTransactionDetailsDialog').close()
|
||||||
|
}
|
||||||
|
|
||||||
|
sendToLtcAddress() {
|
||||||
|
this.ltcRecipient = this.selectedTransaction.ltcReceiver
|
||||||
|
this.openSendLtc()
|
||||||
|
this.shadowRoot.querySelector('#showLtcTransactionDetailsDialog').close()
|
||||||
|
}
|
||||||
|
|
||||||
|
calculateQortAll() {
|
||||||
|
if (this.balance < 0.00100000) {
|
||||||
|
let not_enough_string = get("walletpage.wchange26")
|
||||||
|
parentEpml.request('showSnackBar', `${not_enough_string}`)
|
||||||
|
} else {
|
||||||
|
this.amount = (this.balance - 0.00100000).toFixed(8)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
calculateLtcAll() {
|
||||||
|
if (this.balance < 0.00025000) {
|
||||||
|
let not_enough_string = get("walletpage.wchange26")
|
||||||
|
parentEpml.request('showSnackBar', `${not_enough_string}`)
|
||||||
|
} else {
|
||||||
|
this.ltcAmount = (this.balance - 0.00025000).toFixed(8)
|
||||||
|
this.ltcFeePerByte = 15
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
renderSQB() {
|
||||||
|
let displaybutton = this.selectedTransaction.recipient
|
||||||
|
if (displaybutton == null) {
|
||||||
|
return html`<span>${this.selectedTransaction.recipient}</span>`
|
||||||
|
} else {
|
||||||
|
return html`<span>${this.selectedTransaction.recipient}</span> <paper-icon-button icon="icons:send" @click=${() => this.sendToQortAddress()} title="Send to this address"></paper-icon-button>`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
renderFetchText() {
|
renderFetchText() {
|
||||||
return html`${translate("walletpage.wchange1")}`
|
return html`${translate("walletpage.wchange1")}`
|
||||||
}
|
}
|
||||||
@ -2646,7 +2702,6 @@ class MultiWallet extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const sortedTransactions = txs.sort(compareFn)
|
const sortedTransactions = txs.sort(compareFn)
|
||||||
console.log(sortedTransactions)
|
|
||||||
if (this._selectedWallet == coin) {
|
if (this._selectedWallet == coin) {
|
||||||
this.wallets.get(this._selectedWallet).transactions = sortedTransactions
|
this.wallets.get(this._selectedWallet).transactions = sortedTransactions
|
||||||
}
|
}
|
||||||
|
23
qortal-ui-plugins/plugins/utils/blocks-needed.js
Normal file
23
qortal-ui-plugins/plugins/utils/blocks-needed.js
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
export const blocksNeed = (level) => {
|
||||||
|
if (level === 0) {
|
||||||
|
return '7200';
|
||||||
|
} else if (level === 1) {
|
||||||
|
return '72000';
|
||||||
|
} else if (level === 2) {
|
||||||
|
return '201600';
|
||||||
|
} else if (level === 3) {
|
||||||
|
return '374400';
|
||||||
|
} else if (level === 4) {
|
||||||
|
return '618400';
|
||||||
|
} else if (level === 5) {
|
||||||
|
return '964000';
|
||||||
|
} else if (level === 6) {
|
||||||
|
return '1482400';
|
||||||
|
} else if (level === 7) {
|
||||||
|
return '2173600';
|
||||||
|
} else if (level === 8) {
|
||||||
|
return '3037600';
|
||||||
|
} else if (level === 9) {
|
||||||
|
return '4074400';
|
||||||
|
}
|
||||||
|
};
|
Loading…
x
Reference in New Issue
Block a user