Auto buy (First Stage) , Inside address explorer (First Stage), update deps
This commit is contained in:
parent
aa5842b940
commit
4682ee891c
BIN
img/notfound.png
Normal file
BIN
img/notfound.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
12
package.json
12
package.json
@ -33,14 +33,14 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"electron-log": "4.4.8",
|
||||
"electron-updater": "5.2.1"
|
||||
"electron-updater": "5.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"electron": "21.1.1",
|
||||
"electron-builder": "23.3.3",
|
||||
"electron-notarize": "1.2.1",
|
||||
"electron-packager": "16.0.0",
|
||||
"shelljs": "0.8.5"
|
||||
"electron": "21.2.3",
|
||||
"electron-builder": "23.6.0",
|
||||
"electron-packager": "17.1.1",
|
||||
"@electron/notarize": "1.2.3",
|
||||
"shelljs": "^0.8.5"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.15.0"
|
||||
|
@ -308,7 +308,20 @@
|
||||
"tchange30":"Guthaben konnte nicht abgerufen werden. Versuchen Sie es nochmal!",
|
||||
"tchange31":"VERKAUFT",
|
||||
"tchange32":"GEKAUFT",
|
||||
"tchange33":"Tauschrate"
|
||||
"tchange33":"Durchschnitt",
|
||||
"tchange34":"Betrag darf nicht 0 sein",
|
||||
"tchange35":"Der Preis darf nicht 0 sein",
|
||||
"tchange36":"AUSSTEHENDER AUTOKAUF",
|
||||
"tchange37":"Keine automatische Kaufbestellung gefunden!",
|
||||
"tchange38":"HINZUFÜGEN",
|
||||
"tchange39":"AUTO KAUFAUFTRAG",
|
||||
"tchange40":"Preis",
|
||||
"tchange41":"Automatischer Kaufauftrag erfolgreich entfernt!",
|
||||
"tchange42":"MARKET OFFENE VERKAUFSAUFTRÄGE",
|
||||
"tchange43":"MEINE KAUFGESCHICHTE",
|
||||
"tchange44":"Automatischer Kaufauftrag erfolgreich hinzugefügt!",
|
||||
"tchange45":"AUTO KAUFEN MIT",
|
||||
"tchange46":"AUTOKAUF"
|
||||
},
|
||||
"rewardsharepage":{
|
||||
"rchange1":"Belohnungsanteile",
|
||||
@ -674,5 +687,14 @@
|
||||
"schange19":"Sponsoring-Schlüssel kopieren",
|
||||
"schange20":"Beziehung schaffen",
|
||||
"schange21":"Sponsoring-Schlüssel entfernen"
|
||||
},
|
||||
"explorerpage":{
|
||||
"exp1":"Adresse oder Name zum Suchen",
|
||||
"exp2":"Kontostand",
|
||||
"exp3":"Mehr Info",
|
||||
"exp4":"Adresse oder Name nicht gefunden !",
|
||||
"exp5":"Beachten Sie, dass bei registrierten Namen zwischen Groß- und Kleinschreibung unterschieden wird.",
|
||||
"exp6":"Gründer",
|
||||
"exp7":"Info"
|
||||
}
|
||||
}
|
||||
|
@ -308,7 +308,20 @@
|
||||
"tchange30":"Fallo en la obtención del saldo. Inténtelo de nuevo!",
|
||||
"tchange31":"VENDIDO",
|
||||
"tchange32":"COMPRADO",
|
||||
"tchange33":"Tipo de cambio"
|
||||
"tchange33":"Promedio",
|
||||
"tchange34":"La cantidad no puede ser 0",
|
||||
"tchange35":"El precio no puede ser 0",
|
||||
"tchange36":"AUTO COMPRA PENDIENTE",
|
||||
"tchange37":"No se ha encontrado ninguna orden de compra automática!",
|
||||
"tchange38":"AGREGAR",
|
||||
"tchange39":"AUTO ORDEN DE COMPRA",
|
||||
"tchange40":"Precio",
|
||||
"tchange41":"Orden de compra automática eliminada con éxito!",
|
||||
"tchange42":"MERCADO ABIERTO ÓRDENES DE VENTA",
|
||||
"tchange43":"MI HISTORIAL DE COMPRAS",
|
||||
"tchange44":"Orden de compra automática agregada con éxito!",
|
||||
"tchange45":"AUTO COMPRAR CON",
|
||||
"tchange46":"COMPRA AUTOMÁTICA"
|
||||
},
|
||||
"rewardsharepage":{
|
||||
"rchange1":"Rewardshares",
|
||||
@ -674,5 +687,14 @@
|
||||
"schange19":"Copiar clave de patrocinio",
|
||||
"schange20":"Creando relación",
|
||||
"schange21":"Eliminar clave de patrocinio"
|
||||
},
|
||||
"explorerpage":{
|
||||
"exp1":"Dirección o nombre a buscar",
|
||||
"exp2":"Saldo de la cuenta",
|
||||
"exp3":"Más información",
|
||||
"exp4":"No se encontró la dirección o el nombre!",
|
||||
"exp5":"Tenga en cuenta que los nombres registrados distinguen entre mayúsculas y minúsculas.",
|
||||
"exp6":"Fundador",
|
||||
"exp7":"Información"
|
||||
}
|
||||
}
|
@ -308,7 +308,20 @@
|
||||
"tchange30":"Échec de la récupération du solde. Réessayez!",
|
||||
"tchange31":"VENDU",
|
||||
"tchange32":"ACHETE",
|
||||
"tchange33":"Taux de change"
|
||||
"tchange33":"Moyen",
|
||||
"tchange34":"Le montant ne peut pas être 0",
|
||||
"tchange35":"Le prix ne peut pas être 0",
|
||||
"tchange36":"ACHAT AUTOMATIQUE EN ATTENTE",
|
||||
"tchange37":"Aucune commande d'achat automatique trouvée !",
|
||||
"tchange38":"AJOUTER",
|
||||
"tchange39":"COMMANDE D'ACHAT AUTOMATIQUE",
|
||||
"tchange40":"Prix",
|
||||
"tchange41":"Commande d'achat automatique supprimée avec succès !",
|
||||
"tchange42":"ORDRES DE VENTE À L'OUVERTURE DU MARCHÉ",
|
||||
"tchange43":"MON HISTORIQUE D'ACHAT",
|
||||
"tchange44":"Commande d'achat automatique ajoutée avec succès !",
|
||||
"tchange45":"ACHAT AUTO AVEC",
|
||||
"tchange46":"ACHAT AUTOMATIQUE"
|
||||
},
|
||||
"rewardsharepage":{
|
||||
"rchange1":"Récompenses",
|
||||
@ -674,5 +687,14 @@
|
||||
"schange19":"Copier la clé de parrainage",
|
||||
"schange20":"Créer une relation",
|
||||
"schange21":"Supprimer la clé de parrainage"
|
||||
},
|
||||
"explorerpage":{
|
||||
"exp1":"Adresse ou nom à rechercher",
|
||||
"exp2":"Solde du compte",
|
||||
"exp3":"Plus d'informations",
|
||||
"exp4":"Adresse ou nom introuvable !",
|
||||
"exp5":"Notez que les noms enregistrés sont sensibles à la casse.",
|
||||
"exp6":"Fondateur",
|
||||
"exp7":"Info"
|
||||
}
|
||||
}
|
@ -309,7 +309,20 @@
|
||||
"tchange30":"शेष को लाने में विफल फिर से प्रयास करें!",
|
||||
"tchange31":"बेचा",
|
||||
"tchange32":"खरीद लिया",
|
||||
"tchange33":"विनिमय दर"
|
||||
"tchange33":"औसत",
|
||||
"tchange34":"राशि 0 नहीं हो सकती",
|
||||
"tchange35":"मूल्य 0 नहीं हो सकता",
|
||||
"tchange36":"लंबित ऑटो खरीद",
|
||||
"tchange37":"कोई ऑटो खरीद आदेश नहीं मिला!",
|
||||
"tchange38":"जोड़ें",
|
||||
"tchange39":"ऑटो खरीद आदेश",
|
||||
"tchange40":"कीमत",
|
||||
"tchange41":"स्वचालित खरीद आदेश सफलतापूर्वक निकाला गया!",
|
||||
"tchange42":"मार्केट ओपन सेल ऑर्डर",
|
||||
"tchange43":"मेरा इतिहास खरीदें",
|
||||
"tchange44":"स्वतः खरीद आदेश सफलतापूर्वक जोड़ा गया!",
|
||||
"tchange45":"ऑटो के साथ खरीदें",
|
||||
"tchange46":"ऑटो खरीदें"
|
||||
},
|
||||
"rewardsharepage":{
|
||||
"rchange1":"रिवॉर्डशेयर",
|
||||
@ -675,5 +688,14 @@
|
||||
"schange19":"कॉपी प्रायोजन कुंजी",
|
||||
"schange20":"संबंध बनाना",
|
||||
"schange21":"प्रायोजन कुंजी हटाएं"
|
||||
},
|
||||
"explorerpage":{
|
||||
"exp1":"खोजने के लिए पता या नाम",
|
||||
"exp2":"खाते में शेष",
|
||||
"exp3":"और जानकारी",
|
||||
"exp4":"पता या नाम नहीं मिला !",
|
||||
"exp5":"ध्यान दें कि पंजीकृत नाम केस-संवेदी होते हैं।",
|
||||
"exp6":"संस्थापक",
|
||||
"exp7":"जानकारी"
|
||||
}
|
||||
}
|
@ -308,7 +308,20 @@
|
||||
"tchange30":"Neuspješno dohvatiti stanje. Pokušajte ponovno!",
|
||||
"tchange31":"PRODANO",
|
||||
"tchange32":"KUPLJENO",
|
||||
"tchange33":"Tečaj"
|
||||
"tchange33":"Prosjek",
|
||||
"tchange34":"Iznos ne može biti 0",
|
||||
"tchange35":"Cijena ne može biti 0",
|
||||
"tchange36":"ČEKA SE AUTO KUPNJA",
|
||||
"tchange37":"Nije pronađena automatska narudžba za kupnju!",
|
||||
"tchange38":"DODATI",
|
||||
"tchange39":"AUTOMATSKA NARUDŽBA",
|
||||
"tchange40":"Cijena",
|
||||
"tchange41":"Uspješno uklonjena automatska narudžba za kupnju!",
|
||||
"tchange42":"TRŽIŠNI OTVORENI PRODAJNI NALOGI",
|
||||
"tchange43":"MOJA POVIJEST KUPNJE",
|
||||
"tchange44":"Uspješno dodana automatska narudžba za kupnju!",
|
||||
"tchange45":"AUTO KUPITE SA",
|
||||
"tchange46":"AUTO OTKUP"
|
||||
},
|
||||
"rewardsharepage":{
|
||||
"rchange1":"Nagradni udio (Rewardshares)",
|
||||
@ -674,5 +687,14 @@
|
||||
"schange19":"Kopiraj ključ sponzorstva",
|
||||
"schange20":"Stvaranje odnosa",
|
||||
"schange21":"Ukloni sponzorski ključ"
|
||||
},
|
||||
"explorerpage":{
|
||||
"exp1":"Adresa ili ime za pretraživanje",
|
||||
"exp2":"Stanje na računu",
|
||||
"exp3":"Više informacija",
|
||||
"exp4":"Adresa ili ime nisu pronađeni!",
|
||||
"exp5":"Imajte na umu da su registrirana imena osjetljiva na velika i mala slova.",
|
||||
"exp6":"Osnivač",
|
||||
"exp7":"Info"
|
||||
}
|
||||
}
|
@ -308,7 +308,20 @@
|
||||
"tchange30":"Nem sikerült lekérni az egyenleget. Próbáld újra!",
|
||||
"tchange31":"ELADOTT",
|
||||
"tchange32":"VÁSÁROLT",
|
||||
"tchange33":"Árfolyam"
|
||||
"tchange33":"Átlagos",
|
||||
"tchange34":"Az összeg nem lehet 0",
|
||||
"tchange35":"Az ár nem lehet 0",
|
||||
"tchange36":"FÜGGŐBEN AUTOMATIKUS VÁSÁRLÁS",
|
||||
"tchange37":"Nem található automatikus vásárlási rendelés!",
|
||||
"tchange38":"HOZZÁAD",
|
||||
"tchange39":"AUTOMATIKUS VÁSÁRLÁSI MEGRENDELÉS",
|
||||
"tchange40":"Ár",
|
||||
"tchange41":"Az automatikus vásárlási rendelés sikeresen eltávolítva!",
|
||||
"tchange42":"NYÍLT PIACI ELADÁSI MEGRENDELÉSEK",
|
||||
"tchange43":"VÁSÁRLÁSI TÖRTÉNETEM",
|
||||
"tchange44":"Az automatikus vásárlási rendelés sikeresen hozzáadva!",
|
||||
"tchange45":"AUTOMATIKUS VÁSÁRLÁS",
|
||||
"tchange46":"AUTOMATIKUS VÁSÁRLÁS"
|
||||
},
|
||||
"rewardsharepage":{
|
||||
"rchange1":"Jutalommegosztások",
|
||||
@ -674,5 +687,14 @@
|
||||
"schange19":"Szponzori kulcs másolása",
|
||||
"schange20":"Kapcsolatteremtés",
|
||||
"schange21":"Szponzori kulcs távolítsa"
|
||||
},
|
||||
"explorerpage":{
|
||||
"exp1":"Keresendő cím vagy név",
|
||||
"exp2":"Számlaegyenleg",
|
||||
"exp3":"Több információ",
|
||||
"exp4":"Cím vagy név nem található!",
|
||||
"exp5":"Vegye figyelembe, hogy a regisztrált nevek megkülönböztetik a kis- és nagybetűket.",
|
||||
"exp6":"Alapító",
|
||||
"exp7":"Info"
|
||||
}
|
||||
}
|
@ -308,7 +308,20 @@
|
||||
"tchange30":"Impossibile recuperare il saldo. Riprova!",
|
||||
"tchange31":"VENDUTO",
|
||||
"tchange32":"ACQUISTATO",
|
||||
"tchange33":"Tasso di cambio"
|
||||
"tchange33":"Media",
|
||||
"tchange34":"L'importo non può essere 0",
|
||||
"tchange35":"Il prezzo non può essere 0",
|
||||
"tchange36":"ACQUISTO AUTO IN ATTESA",
|
||||
"tchange37":"Nessun ordine di acquisto automatico trovato!",
|
||||
"tchange38":"INSERISCI",
|
||||
"tchange39":"ORDINE DI ACQUISTO AUTOMATICO",
|
||||
"tchange40":"Prezzo",
|
||||
"tchange41":"Ordine di acquisto automatico rimosso con successo!",
|
||||
"tchange42":"MERCATO APERTO ORDINI DI VENDITA",
|
||||
"tchange43":"LA MIA STORIA DI ACQUISTO",
|
||||
"tchange44":"Ordine di acquisto automatico aggiunto con successo!",
|
||||
"tchange45":"ACQUISTA AUTO CON",
|
||||
"tchange46":"ACQUISTO AUTO"
|
||||
},
|
||||
"rewardsharepage":{
|
||||
"rchange1":"Quote di ricompensa",
|
||||
@ -674,5 +687,14 @@
|
||||
"schange19":"Copia la chiave di sponsorizzazione",
|
||||
"schange20":"Creare relazione",
|
||||
"schange21":"Rimuovi la chiave di sponsorizzazione"
|
||||
},
|
||||
"explorerpage":{
|
||||
"exp1":"Indirizzo o nome da cercare",
|
||||
"exp2":"Saldo del conto",
|
||||
"exp3":"Ulteriori informazioni",
|
||||
"exp4":"Indirizzo o nome non trovato!",
|
||||
"exp5":"Si noti che i nomi registrati fanno distinzione tra maiuscole e minuscole.",
|
||||
"exp6":"Fondatore",
|
||||
"exp7":"Informazioni"
|
||||
}
|
||||
}
|
@ -308,7 +308,20 @@
|
||||
"tchange30":"밸런스를 가져오지 못했습니다. 다시 시도하십시오.!",
|
||||
"tchange31":"판매된",
|
||||
"tchange32":"구매된",
|
||||
"tchange33":"환율"
|
||||
"tchange33":"평균",
|
||||
"tchange34":"금액은 0일 수 없습니다.",
|
||||
"tchange35":"가격은 0일 수 없습니다.",
|
||||
"tchange36":"대기 중인 자동 구매",
|
||||
"tchange37":"자동 구매 주문이 없습니다!",
|
||||
"tchange38":"추가하다",
|
||||
"tchange39":"자동 구매 주문",
|
||||
"tchange40":"가격",
|
||||
"tchange41":"자동 구매 주문을 성공적으로 제거했습니다!",
|
||||
"tchange42":"시장 오픈 매도 주문",
|
||||
"tchange43":"내 구매 내역",
|
||||
"tchange44":"자동 구매 주문을 성공적으로 추가했습니다!",
|
||||
"tchange45":"자동 구매",
|
||||
"tchange46":"자동 구매"
|
||||
},
|
||||
"rewardsharepage":{
|
||||
"rchange1":"보상 공유",
|
||||
@ -674,5 +687,14 @@
|
||||
"schange19":"후원 키 복사",
|
||||
"schange20":"관계 만들기",
|
||||
"schange21":"후원 키 제거"
|
||||
},
|
||||
"explorerpage":{
|
||||
"exp1":"검색할 주소 또는 이름",
|
||||
"exp2":"계정 잔액",
|
||||
"exp3":"더 많은 정보",
|
||||
"exp4":"주소 또는 이름을 찾을 수 없습니다!",
|
||||
"exp5":"등록된 이름은 대소문자를 구분합니다.",
|
||||
"exp6":"설립자",
|
||||
"exp7":"정보"
|
||||
}
|
||||
}
|
@ -308,7 +308,20 @@
|
||||
"tchange30":"Kunne ikke hente saldoen. Prøv igjen!",
|
||||
"tchange31":"SOLGT",
|
||||
"tchange32":"KJØPT",
|
||||
"tchange33":"Vekslingskurs"
|
||||
"tchange33":"Gjennomsnitt",
|
||||
"tchange34":"Beløpet kan ikke være 0",
|
||||
"tchange35":"Prisen kan ikke være 0",
|
||||
"tchange36":"VENTENDE AUTOKJØP",
|
||||
"tchange37":"Ingen autokjøpsordre funnet!",
|
||||
"tchange38":"LEGGE TIL",
|
||||
"tchange39":"AUTO KJØP ORDRE",
|
||||
"tchange40":"Pris",
|
||||
"tchange41":"Fjernet automatisk kjøpsordre!",
|
||||
"tchange42":"MARKED ÅPNE SALGSORDRE",
|
||||
"tchange43":"MIN KJØPSHISTORIE",
|
||||
"tchange44":"Autokjøpsordre er lagt til!",
|
||||
"tchange45":"AUTOKJØP MED",
|
||||
"tchange46":"AUTOKJØP"
|
||||
},
|
||||
"rewardsharepage":{
|
||||
"rchange1":"Belønningsdel",
|
||||
@ -674,5 +687,14 @@
|
||||
"schange19":"Kopier sponsornøkkel",
|
||||
"schange20":"Skaper forhold",
|
||||
"schange21":"Fjern sponsornøkkel"
|
||||
},
|
||||
"explorerpage":{
|
||||
"exp1":"Adresse eller navn for å søke",
|
||||
"exp2":"Saldo",
|
||||
"exp3":"Mer informasjon",
|
||||
"exp4":"Finner ikke adresse eller navn!",
|
||||
"exp5":"Merk at registrerte navn skiller mellom store og små bokstaver.",
|
||||
"exp6":"Grunnlegger",
|
||||
"exp7":"Info"
|
||||
}
|
||||
}
|
@ -308,7 +308,20 @@
|
||||
"tchange30":"Nie udało się pobrać salda. Spróbuj ponownie!",
|
||||
"tchange31":"SPRZEDANY",
|
||||
"tchange32":"KUPIONY",
|
||||
"tchange33":"Kurs wymiany"
|
||||
"tchange33":"Przeciętny",
|
||||
"tchange34":"Kwota nie może wynosić 0",
|
||||
"tchange35":"Cena nie może wynosić 0",
|
||||
"tchange36":"OCZEKUJĄCY NA AUTOMATYCZNY KUP",
|
||||
"tchange37":"Nie znaleziono automatycznego zamówienia zakupu!",
|
||||
"tchange38":"DODAJ",
|
||||
"tchange39":"AUTOMATYCZNE ZAMÓWIENIE",
|
||||
"tchange40":"Cena £",
|
||||
"tchange41":"Pomyślnie usunięto automatyczne zamówienie zakupu!",
|
||||
"tchange42":"RYNEK OTWARTYCH ZLECEŃ SPRZEDAŻY",
|
||||
"tchange43":"MOJA HISTORIA ZAKUPÓW",
|
||||
"tchange44":"Pomyślnie dodano automatyczne zamówienie zakupu!",
|
||||
"tchange45":"AUTO KUP Z",
|
||||
"tchange46":"AUTO KUP"
|
||||
},
|
||||
"rewardsharepage":{
|
||||
"rchange1":"Podział nagród",
|
||||
@ -674,5 +687,14 @@
|
||||
"schange19":"Kopiuj klucz sponsorski",
|
||||
"schange20":"Tworzenie relacji",
|
||||
"schange21":"Usuń klucz sponsorsk"
|
||||
},
|
||||
"explorerpage":{
|
||||
"exp1":"Adres lub nazwa do wyszukania",
|
||||
"exp2":"Bilans konta",
|
||||
"exp3":"Więcej informacji",
|
||||
"exp4":"Nie znaleziono adresu lub nazwy!",
|
||||
"exp5":"Należy pamiętać, że w zarejestrowanych nazwach rozróżniana jest wielkość liter.",
|
||||
"exp6":"Założyciel",
|
||||
"exp7":"Informacje"
|
||||
}
|
||||
}
|
@ -308,7 +308,20 @@
|
||||
"tchange30":"Falha buscando Saldo. Tente novamente!",
|
||||
"tchange31":"VENDIDO",
|
||||
"tchange32":"COMPRADO",
|
||||
"tchange33":"Taxa de câmbio"
|
||||
"tchange33":"Média",
|
||||
"tchange34":"O valor nao pode ser 0",
|
||||
"tchange35":"O preço nao pode ser 0",
|
||||
"tchange36":"COMPRA AUTOMÁTICA PENDENTE",
|
||||
"tchange37":"Nenhuma ordem de compra automática encontrada!",
|
||||
"tchange38":"ADICIONAR",
|
||||
"tchange39":"ORDEM DE COMPRA AUTOMÁTICA",
|
||||
"tchange40":"Preço",
|
||||
"tchange41":"Pedido de compra automática removido com sucesso!",
|
||||
"tchange42":"ORDENS DE VENDA ABERTA AO MERCADO",
|
||||
"tchange43":"MEU HISTÓRICO DE COMPRAS",
|
||||
"tchange44":"Pedido de compra automática adicionado com sucesso!",
|
||||
"tchange45":"COMPRA AUTOMÁTICA COM",
|
||||
"tchange46":"COMPRA AUTOMÁTICA"
|
||||
},
|
||||
"rewardsharepage":{
|
||||
"rchange1":"Ações de recompensa",
|
||||
@ -674,5 +687,14 @@
|
||||
"schange19":"Copiar chave de patrocínio",
|
||||
"schange20":"Criando relacionamento",
|
||||
"schange21":"Remover chave de patrocínio"
|
||||
},
|
||||
"explorerpage":{
|
||||
"exp1":"Endereço ou nome para pesquisar",
|
||||
"exp2":"Saldo da conta",
|
||||
"exp3":"Mais informações",
|
||||
"exp4":"Endereço ou nome não encontrado!",
|
||||
"exp5":"Observe que os nomes registrados diferenciam maiúsculas de minúsculas.",
|
||||
"exp6":"Fundador",
|
||||
"exp7":"Informações"
|
||||
}
|
||||
}
|
@ -308,7 +308,20 @@
|
||||
"tchange30":"Nu s-a reusit actualizarea soldului. Mai incearca odata!",
|
||||
"tchange31":"VANDUT",
|
||||
"tchange32":"CUMPARAT",
|
||||
"tchange33":"Rata de schimb"
|
||||
"tchange33":"In medie",
|
||||
"tchange34":"Suma nu poate fi 0",
|
||||
"tchange35":"Pretul nu poate fi 0",
|
||||
"tchange36":"CUMPARARE AUTOMATĂ in așteptare",
|
||||
"tchange37":"Nu a fost gasită nicio comandă de cumparare automata!",
|
||||
"tchange38":"ADAUGA",
|
||||
"tchange39":"COMANDA DE CUMPARARE AUTOMATA",
|
||||
"tchange40":"Pret",
|
||||
"tchange41":"Comanda de cumparare automata a fost eliminata cu succes!",
|
||||
"tchange42":"PIATA DESCHISA COMENZI DE VANZARE",
|
||||
"tchange43":"ISTORICUL MEU DE CUMPARARI",
|
||||
"tchange44":"Comanda de cumparare automata a fost adaugata cu succes!",
|
||||
"tchange45":"CUMPARA AUTOMATA CU",
|
||||
"tchange46":"CUMPARARE AUTOMATA"
|
||||
},
|
||||
"rewardsharepage":{
|
||||
"rchange1":"Cote de recompensa",
|
||||
@ -674,5 +687,14 @@
|
||||
"schange19":"Copiati cheia de sponsorizare",
|
||||
"schange20":"Crearea unei relatii",
|
||||
"schange21":"Eliminati cheia de sponsorizare"
|
||||
},
|
||||
"explorerpage":{
|
||||
"exp1":"Adresa sau numele de căutat",
|
||||
"exp2":"Soldul contului",
|
||||
"exp3":"Mai multe informatii",
|
||||
"exp4":"Adresa sau Numele nu a fost găsit!",
|
||||
"exp5":"Retineti că numele înregistrate sunt sensibile la majuscule.",
|
||||
"exp6":"Fondator",
|
||||
"exp7":"Info"
|
||||
}
|
||||
}
|
@ -308,7 +308,20 @@
|
||||
"tchange30":"Neuspešna provera salda. Pokušajte ponovo!",
|
||||
"tchange31":"PRODATO",
|
||||
"tchange32":"KUPLJENO",
|
||||
"tchange33":"Kurs"
|
||||
"tchange33":"Prosek",
|
||||
"tchange34":"Iznos ne može biti 0",
|
||||
"tchange35":"Cena ne može biti 0",
|
||||
"tchange36":"NA ČEKANJU AUTOMATSKA KUPOVINA",
|
||||
"tchange37":"Nije pronađena narudžbina za automatsku kupovinu!",
|
||||
"tchange38":"DODATI",
|
||||
"tchange39":"AUTO KUPOVINA",
|
||||
"tchange40":"Cena",
|
||||
"tchange41":"Narudžbina za automatsku kupovinu je uspešno uklonjena!",
|
||||
"tchange42":"TRŽIŠTE OTVORENI NALOG ZA PRODAJU",
|
||||
"tchange43":"MOJA ISTORIJA KUPOVINE",
|
||||
"tchange44":"Narudžbina za automatsku kupovinu je uspešno dodata!",
|
||||
"tchange45":"AUTO KUPI SA",
|
||||
"tchange46":"AUTO BUI"
|
||||
},
|
||||
"rewardsharepage":{
|
||||
"rchange1":"Udeo nagrade",
|
||||
@ -674,5 +687,14 @@
|
||||
"schange19":"Kopiraj sponzorski ključ",
|
||||
"schange20":"Stvaranje odnosa",
|
||||
"schange21":"Uklonite sponzorski ključ"
|
||||
},
|
||||
"explorerpage":{
|
||||
"exp1":"Adresa ili ime za pretragu",
|
||||
"exp2":"Stanje na računu",
|
||||
"exp3":"Više informacija",
|
||||
"exp4":"Adresa ili ime nisu pronađeni!",
|
||||
"exp5":"Imajte na umu da registrovana imena razlikuju velika i mala slova.",
|
||||
"exp6":"Osnivač",
|
||||
"exp7":"Info"
|
||||
}
|
||||
}
|
@ -308,7 +308,20 @@
|
||||
"tchange30":"Не удалось получить баланс. Повторите попытку!",
|
||||
"tchange31":"ПРОДАНО",
|
||||
"tchange32":"КУПИЛ",
|
||||
"tchange33":"Обменный курс"
|
||||
"tchange33":"Средний",
|
||||
"tchange34":"Сумма не может быть 0",
|
||||
"tchange35":"Цена не может быть 0",
|
||||
"tchange36":"ОЖИДАНИЕ ПОКУПКИ АВТО",
|
||||
"tchange37":"Заказ на автоматическую покупку не найден!",
|
||||
"tchange38":"ДОБАВЛЯТЬ",
|
||||
"tchange39":"АВТО КУПИТЬ ЗАКАЗ",
|
||||
"tchange40":"Цена",
|
||||
"tchange41":"Заказ на автоматическую покупку успешно удален!",
|
||||
"tchange42":"РЫНОК ОТКРЫТЫЕ ЗАКАЗЫ НА ПРОДАЖУ",
|
||||
"tchange43":"МОЯ ИСТОРИЯ ПОКУПОК",
|
||||
"tchange44":"Заказ на автоматическую покупку успешно добавлен!",
|
||||
"tchange45":"АВТО КУПИТЬ С",
|
||||
"tchange46":"АВТО КУПИТЬ"
|
||||
},
|
||||
"rewardsharepage":{
|
||||
"rchange1":"Вознаграждения",
|
||||
@ -674,5 +687,14 @@
|
||||
"schange19":"Копировать спонсорский ключ",
|
||||
"schange20":"Создание отношений",
|
||||
"schange21":"Удалить спонсорский ключ"
|
||||
},
|
||||
"explorerpage":{
|
||||
"exp1":"Адрес или имя для поиска",
|
||||
"exp2":"Баланс",
|
||||
"exp3":"Больше информации",
|
||||
"exp4":"Адрес или имя не найдено!",
|
||||
"exp5":"Обратите внимание, что зарегистрированные имена вводятся с учетом регистра.",
|
||||
"exp6":"Основатель",
|
||||
"exp7":"Информация"
|
||||
}
|
||||
}
|
@ -308,7 +308,20 @@
|
||||
"tchange30":"Failed to Fetch Balance. Try again!",
|
||||
"tchange31":"SOLD",
|
||||
"tchange32":"BOUGHT",
|
||||
"tchange33":"Exchange Rate"
|
||||
"tchange33":"Average",
|
||||
"tchange34":"Amount can not be 0",
|
||||
"tchange35":"Price can not be 0",
|
||||
"tchange36":"PENDING AUTO BUY",
|
||||
"tchange37":"No auto buy order found !",
|
||||
"tchange38":"ADD",
|
||||
"tchange39":"AUTO BUY ORDER",
|
||||
"tchange40":"Price",
|
||||
"tchange41":"Successfully removed auto buy order!",
|
||||
"tchange42":"MARKET OPEN SELL ORDERS",
|
||||
"tchange43":"MY BUY HISTORY",
|
||||
"tchange44":"Successfully added auto buy order!",
|
||||
"tchange45":"AUTO BUY WITH",
|
||||
"tchange46":"AUTO BUY"
|
||||
},
|
||||
"rewardsharepage":{
|
||||
"rchange1":"Rewardshares",
|
||||
@ -674,5 +687,14 @@
|
||||
"schange19":"Copy Sponsorship Key",
|
||||
"schange20":"Creating relationship",
|
||||
"schange21":"Remove Sponsorship Key"
|
||||
},
|
||||
"explorerpage":{
|
||||
"exp1":"Address or name to search",
|
||||
"exp2":"Account Balance",
|
||||
"exp3":"More Info",
|
||||
"exp4":"Address or Name not found !",
|
||||
"exp5":"Note that registered names are case-sensitive.",
|
||||
"exp6":"Founder",
|
||||
"exp7":"Info"
|
||||
}
|
||||
}
|
||||
|
@ -308,7 +308,20 @@
|
||||
"tchange30":"加载余额失败。请重新尝试!",
|
||||
"tchange31":"已卖出",
|
||||
"tchange32":"已买入",
|
||||
"tchange33":"汇率"
|
||||
"tchange33":"平均",
|
||||
"tchange34":"金额不能为0",
|
||||
"tchange35":"价格不能为0",
|
||||
"tchange36":"待定汽车购买",
|
||||
"tchange37":"未找到自动购买订单!",
|
||||
"tchange38":"添加",
|
||||
"tchange39":"自动购买订单",
|
||||
"tchange40":"价格",
|
||||
"tchange41":"成功删除自动购买订单!",
|
||||
"tchange42":"开市卖单",
|
||||
"tchange43":"我的购买历史",
|
||||
"tchange44":"成功添加自动买单!",
|
||||
"tchange45":"自动购买",
|
||||
"tchange46":"自动购买"
|
||||
},
|
||||
"rewardsharepage":{
|
||||
"rchange1":"铸币密钥",
|
||||
@ -674,5 +687,14 @@
|
||||
"schange19":"复制赞助密钥",
|
||||
"schange20":"建立关系",
|
||||
"schange21":"删除赞助密钥"
|
||||
},
|
||||
"explorerpage":{
|
||||
"exp1":"要搜索的地址或名称",
|
||||
"exp2":"账户余额",
|
||||
"exp3":"更多信息",
|
||||
"exp4":"找不到地址或姓名!",
|
||||
"exp5":"请注意,注册名称区分大小写。",
|
||||
"exp6":"创始人",
|
||||
"exp7":"信息"
|
||||
}
|
||||
}
|
@ -308,7 +308,20 @@
|
||||
"tchange30":"加載餘額失敗。請重新嘗試!",
|
||||
"tchange31":"已賣出",
|
||||
"tchange32":"已買入",
|
||||
"tchange33":"匯率"
|
||||
"tchange33":"平均",
|
||||
"tchange34":"金額不能為0",
|
||||
"tchange35":"價格不能為0",
|
||||
"tchange36":"待定汽車購買",
|
||||
"tchange37":"未找到自動購買訂單!",
|
||||
"tchange38":"添加",
|
||||
"tchange39":"自動購買訂單",
|
||||
"tchange40":"價格",
|
||||
"tchange41":"成功刪除自動購買訂單!",
|
||||
"tchange42":"開市賣單",
|
||||
"tchange43":"我的購買歷史",
|
||||
"tchange44":"成功添加自動買單!",
|
||||
"tchange45":"自動購買",
|
||||
"tchange46":"自動購買"
|
||||
},
|
||||
"rewardsharepage":{
|
||||
"rchange1":"鑄幣密鑰",
|
||||
@ -674,5 +687,14 @@
|
||||
"schange19":"複製贊助密鑰",
|
||||
"schange20":"建立關係",
|
||||
"schange21":"刪除贊助密鑰"
|
||||
},
|
||||
"explorerpage":{
|
||||
"exp1":"要搜索的地址或名稱",
|
||||
"exp2":"賬戶餘額",
|
||||
"exp3":"更多信息",
|
||||
"exp4":"找不到地址或姓名!",
|
||||
"exp5":"請注意,註冊名稱區分大小寫。",
|
||||
"exp6":"創始人",
|
||||
"exp7":"信息"
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "qortal-ui-core",
|
||||
"version": "2.2.3",
|
||||
"version": "2.2.4",
|
||||
"description": "QORTAL-UI Core",
|
||||
"keywords": [
|
||||
"QORT",
|
||||
@ -17,12 +17,12 @@
|
||||
"author": "QORTAL <admin@qortal.org>",
|
||||
"license": "GPL-3.0",
|
||||
"dependencies": {
|
||||
"@hapi/hapi": "20.2.2",
|
||||
"@hapi/hapi": "21.0.0",
|
||||
"@hapi/inert": "7.0.0",
|
||||
"sass": "1.55.0"
|
||||
"sass": "1.56.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "7.19.3",
|
||||
"@babel/core": "7.20.2",
|
||||
"@material/mwc-button": "0.27.0",
|
||||
"@material/mwc-checkbox": "0.27.0",
|
||||
"@material/mwc-dialog": "0.27.0",
|
||||
@ -53,25 +53,25 @@
|
||||
"@polymer/paper-spinner": "3.0.2",
|
||||
"@polymer/paper-toast": "3.0.1",
|
||||
"@polymer/paper-tooltip": "3.0.1",
|
||||
"@rollup/plugin-alias": "4.0.0",
|
||||
"@rollup/plugin-babel": "6.0.0",
|
||||
"@rollup/plugin-commonjs": "23.0.0",
|
||||
"@rollup/plugin-node-resolve": "15.0.0",
|
||||
"@rollup/plugin-replace": "5.0.0",
|
||||
"@vaadin/grid": "23.2.5",
|
||||
"@vaadin/icons": "23.2.5",
|
||||
"@vaadin/password-field": "23.2.5",
|
||||
"@rollup/plugin-alias": "4.0.2",
|
||||
"@rollup/plugin-babel": "6.0.2",
|
||||
"@rollup/plugin-commonjs": "23.0.2",
|
||||
"@rollup/plugin-node-resolve": "15.0.1",
|
||||
"@rollup/plugin-replace": "5.0.1",
|
||||
"@vaadin/grid": "23.2.8",
|
||||
"@vaadin/icons": "23.2.8",
|
||||
"@vaadin/password-field": "23.2.8",
|
||||
"asmcrypto.js": "2.3.2",
|
||||
"bcryptjs": "2.4.3",
|
||||
"epml": "0.3.3",
|
||||
"file-saver": "2.0.5",
|
||||
"lit": "2.4.0",
|
||||
"lit": "2.4.1",
|
||||
"lit-translate": "2.0.1",
|
||||
"postcss": "8.4.18",
|
||||
"pwa-helpers": "0.9.1",
|
||||
"random-sentence-generator": "0.0.8",
|
||||
"redux": "4.2.0",
|
||||
"redux-thunk": "2.4.1",
|
||||
"redux-thunk": "2.4.2",
|
||||
"rollup": "2.79.1",
|
||||
"rollup-plugin-node-globals": "1.4.0",
|
||||
"rollup-plugin-postcss": "4.0.2",
|
||||
|
@ -114,7 +114,7 @@ class AppInfo extends connect(store)(LitElement) {
|
||||
setInterval(() => {
|
||||
this.getNodeInfo()
|
||||
this.getCoreInfo()
|
||||
}, 60000)
|
||||
}, 30000)
|
||||
}
|
||||
|
||||
async getNodeInfo() {
|
||||
|
@ -7,6 +7,9 @@ import '@polymer/paper-icon-button/paper-icon-button.js'
|
||||
import '@polymer/iron-icons/iron-icons.js'
|
||||
import '@polymer/app-layout/app-layout.js'
|
||||
import '@polymer/paper-ripple'
|
||||
import '@vaadin/icon'
|
||||
import '@vaadin/icons'
|
||||
import '@vaadin/text-field'
|
||||
|
||||
import './wallet-profile.js'
|
||||
import './app-info.js'
|
||||
@ -16,12 +19,14 @@ import './qort-theme-toggle.js'
|
||||
import './language-selector.js'
|
||||
import './settings-view/user-settings.js'
|
||||
import './logout-view/logout-view.js'
|
||||
import './user-info-view/user-info-view.js'
|
||||
|
||||
class AppView extends connect(store)(LitElement) {
|
||||
static get properties() {
|
||||
return {
|
||||
config: { type: Object },
|
||||
theme: { type: String, reflect: true }
|
||||
theme: { type: String, reflect: true },
|
||||
searchContentString: { type: String }
|
||||
}
|
||||
}
|
||||
|
||||
@ -32,6 +37,14 @@ class AppView extends connect(store)(LitElement) {
|
||||
--mdc-theme-primary: rgb(3, 169, 244);
|
||||
--mdc-theme-secondary: var(--mdc-theme-primary);
|
||||
--mdc-theme-error: rgb(255, 89, 89);
|
||||
--lumo-primary-text-color: rgb(0, 167, 245);
|
||||
--lumo-primary-color-50pct: rgba(0, 167, 245, 0.5);
|
||||
--lumo-primary-color-10pct: rgba(0, 167, 245, 0.1);
|
||||
--lumo-primary-color: hsl(199, 100%, 48%);
|
||||
--lumo-base-color: var(--white);
|
||||
--lumo-body-text-color: var(--black);
|
||||
--lumo-secondary-text-color: var(--sectxt);
|
||||
--lumo-contrast-60pct: var(--vdicon);
|
||||
}
|
||||
|
||||
:host {
|
||||
@ -57,6 +70,12 @@ class AppView extends connect(store)(LitElement) {
|
||||
border-top: var(--border);
|
||||
}
|
||||
|
||||
.search {
|
||||
display: inline;
|
||||
width: 50%;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
#sideBar {
|
||||
height: 100vh;
|
||||
display: flex;
|
||||
@ -89,6 +108,7 @@ class AppView extends connect(store)(LitElement) {
|
||||
|
||||
constructor() {
|
||||
super()
|
||||
this.searchContentString = ''
|
||||
this.theme = localStorage.getItem('qortalTheme') ? localStorage.getItem('qortalTheme') : 'light'
|
||||
}
|
||||
|
||||
@ -115,6 +135,19 @@ class AppView extends connect(store)(LitElement) {
|
||||
<img src="${this.config.coin.logo}" style="height:32px; padding-left:12px;">
|
||||
</span>
|
||||
</div>
|
||||
<div class="search">
|
||||
<vaadin-text-field
|
||||
style="width: 375px"
|
||||
theme="medium"
|
||||
id="searchContent"
|
||||
placeholder="${translate("explorerpage.exp1")}"
|
||||
value="${this.searchContentString}"
|
||||
@keydown="${this.searchKeyListener}"
|
||||
clear-button-visible
|
||||
>
|
||||
</vaadin-text-field>
|
||||
<paper-icon-button icon="icons:search" @click="${() => this.openUserInfo()}"></paper-icon-button>
|
||||
</div>
|
||||
<div style="display: inline;">
|
||||
<span>
|
||||
<img src="/img/${translate("selectmenu.languageflag")}-flag-round-icon-32.png" style="width: 32px; height: 32px; padding-top: 4px;">
|
||||
@ -138,19 +171,36 @@ class AppView extends connect(store)(LitElement) {
|
||||
<show-plugin></show-plugin>
|
||||
</app-header-layout>
|
||||
</app-drawer-layout>
|
||||
<user-info-view></user-info-view>
|
||||
<user-settings></user-settings>
|
||||
<logout-view></logout-view>
|
||||
`
|
||||
}
|
||||
|
||||
firstUpdated() {
|
||||
// ...
|
||||
}
|
||||
|
||||
stateChanged(state) {
|
||||
this.config = state.config
|
||||
}
|
||||
|
||||
searchKeyListener(e) {
|
||||
if (e.key === 'Enter') {
|
||||
this.openUserInfo()
|
||||
}
|
||||
}
|
||||
|
||||
clearSearchField() {
|
||||
this.shadowRoot.getElementById('searchContent').value = this.searchContentString
|
||||
}
|
||||
|
||||
openUserInfo() {
|
||||
let sendInfoAddress = this.shadowRoot.getElementById('searchContent').value
|
||||
const infoDialog = document.getElementById('main-app').shadowRoot.querySelector('app-view').shadowRoot.querySelector('user-info-view')
|
||||
infoDialog.openUserInfo(sendInfoAddress)
|
||||
this.clearSearchField()
|
||||
}
|
||||
|
||||
openSettings() {
|
||||
const settingsDialog = document.getElementById('main-app').shadowRoot.querySelector('app-view').shadowRoot.querySelector('user-settings')
|
||||
settingsDialog.openSettings()
|
||||
|
@ -168,6 +168,18 @@ class SidenavMenu extends connect(store)(LitElement) {
|
||||
>
|
||||
<vaadin-icon icon="vaadin:bullets" slot="icon"></vaadin-icon>
|
||||
</side-menu-item>
|
||||
<side-menu-item label="${translate('tradepage.tchange46')}" expanded>
|
||||
<vaadin-icon icon="vaadin:calc-book" slot="icon"></vaadin-icon>
|
||||
<side-menu-item label="${translate('tradepage.tchange45')} BTC" href="/app/trade-bot-btc">
|
||||
<vaadin-icon icon="vaadin:start-cog" slot="icon"></vaadin-icon>
|
||||
</side-menu-item>
|
||||
<side-menu-item label="${translate('tradepage.tchange45')} LTC" href="/app/trade-bot-ltc">
|
||||
<vaadin-icon icon="vaadin:start-cog" slot="icon"></vaadin-icon>
|
||||
</side-menu-item>
|
||||
<side-menu-item label="${translate('tradepage.tchange45')} DOGE" href="/app/trade-bot-doge">
|
||||
<vaadin-icon icon="vaadin:start-cog" slot="icon"></vaadin-icon>
|
||||
</side-menu-item>
|
||||
</side-menu-item>
|
||||
<side-menu-item
|
||||
label="${translate('sidemenu.rewardshare')}"
|
||||
href="/app/reward-share"
|
||||
|
@ -187,7 +187,6 @@ class StartMinting extends connect(store)(LitElement) {
|
||||
|
||||
firstUpdated() {
|
||||
this.getMintingAcccounts();
|
||||
this.shadowRoot.querySelector('mdc-dialog--open').setAttribute('style', 'width: 100vw')
|
||||
}
|
||||
|
||||
renderErrorMsg1() {
|
||||
@ -229,9 +228,6 @@ class StartMinting extends connect(store)(LitElement) {
|
||||
// Check to see if a sponsorship key on a newly-level 1 minter exists. If it does, remove it.
|
||||
const findMintingAccountFromOtherUser = this.mintingAccountData.find((ma) => ma.recipientAccount === address && ma.mintingAccount !== address);
|
||||
|
||||
|
||||
|
||||
|
||||
const removeMintingAccount = async (publicKey) => {
|
||||
const url = `${nodeUrl}/admin/mintingaccounts?apiKey=${myNode.apiKey}`;
|
||||
return await fetch(url, {
|
||||
@ -495,8 +491,6 @@ class StartMinting extends connect(store)(LitElement) {
|
||||
` : '' }
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- </mwc-dialog> -->
|
||||
</div>
|
||||
|
||||
` : ""}
|
||||
|
320
qortal-ui-core/src/components/user-info-view/user-info-view.js
Normal file
320
qortal-ui-core/src/components/user-info-view/user-info-view.js
Normal file
@ -0,0 +1,320 @@
|
||||
import { LitElement, html, css } from 'lit'
|
||||
import { connect } from 'pwa-helpers'
|
||||
import { store } from '../../store.js'
|
||||
import { doLogout } from '../../redux/app/app-actions.js'
|
||||
import { translate, translateUnsafeHTML } from 'lit-translate'
|
||||
|
||||
import '@polymer/paper-dialog/paper-dialog.js'
|
||||
import '@material/mwc-button'
|
||||
|
||||
class UserInfoView extends connect(store)(LitElement) {
|
||||
static get properties() {
|
||||
return {
|
||||
theme: { type: String, reflect: true },
|
||||
infoAccountName: { type: String },
|
||||
imageUrl: { type: String },
|
||||
addressResult: { type: Array },
|
||||
nameAddressResult: { type: Array },
|
||||
displayAddress: { type: String },
|
||||
displayLevel: { type: String },
|
||||
displayBalance: { type: String }
|
||||
}
|
||||
}
|
||||
|
||||
static get styles() {
|
||||
return css`
|
||||
* {
|
||||
--mdc-theme-primary: rgb(3, 169, 244);
|
||||
--mdc-theme-secondary: var(--mdc-theme-primary);
|
||||
--mdc-theme-surface: var(--white);
|
||||
--mdc-dialog-content-ink-color: var(--black);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
h4 {
|
||||
margin: 5px 0;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 14px;
|
||||
line-height: 21px;
|
||||
}
|
||||
|
||||
.card-body {
|
||||
background-color: var(--white);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.card-container {
|
||||
background-color: var(--white);
|
||||
border-radius: 5px;
|
||||
color: var(--black);
|
||||
padding-top: 30px;
|
||||
position: relative;
|
||||
width: 350px;
|
||||
max-width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.card-container .level {
|
||||
color: #ffffff;
|
||||
background-color: #03a9f4;
|
||||
border-radius: 3px;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
padding: 3px 7px;
|
||||
position: absolute;
|
||||
top: 30px;
|
||||
left: 30px;
|
||||
}
|
||||
|
||||
.card-container .founder {
|
||||
color: #ffffff;
|
||||
background-color: #03a9f4;
|
||||
border-radius: 3px;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
padding: 3px 7px;
|
||||
position: absolute;
|
||||
top: 30px;
|
||||
right: 30px;
|
||||
}
|
||||
|
||||
.card-container .round {
|
||||
width: 96px;
|
||||
height: 96px;
|
||||
border: 1px solid #03a9f4;
|
||||
border-radius: 50%;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.card-container .badge {
|
||||
width: 200px;
|
||||
height: 135px;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 10%;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.userdata {
|
||||
background-color: #1F1A36;
|
||||
text-align: left;
|
||||
padding: 15px;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.userdata ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.userdata ul li {
|
||||
border: 1px solid #2D2747;
|
||||
border-radius: 2px;
|
||||
display: inline-block;
|
||||
font-size: 12px;
|
||||
margin: 0 7px 7px 0;
|
||||
padding: 7px;
|
||||
}
|
||||
|
||||
.decline {
|
||||
--mdc-theme-primary: var(--mdc-theme-error)
|
||||
}
|
||||
|
||||
.buttons {
|
||||
text-align:right;
|
||||
}
|
||||
|
||||
`
|
||||
}
|
||||
|
||||
constructor() {
|
||||
super()
|
||||
this.infoAccountName = ''
|
||||
this.imageUrl = ''
|
||||
this.addressResult = []
|
||||
this.nameAddressResult = []
|
||||
this.displayAddress = ''
|
||||
this.displayLevel = ''
|
||||
this.displayBalance = ''
|
||||
this.theme = localStorage.getItem('qortalTheme') ? localStorage.getItem('qortalTheme') : 'light'
|
||||
}
|
||||
|
||||
render() {
|
||||
return html`
|
||||
<paper-dialog style="background: var(--white); border: 1px solid var(--black); border-radius: 5px;" id="userInfoDialog" modal>
|
||||
<div class="card-container">
|
||||
<span class="level">${translate("mintingpage.mchange27")} ${this.displayLevel}</span>
|
||||
${this.founderBadge()}
|
||||
${this.avatarImage()}
|
||||
<h2>${this.infoAccountName}</h2>
|
||||
<h4>${this.displayAddress}</h4>
|
||||
<p>${translate("explorerpage.exp2")}: ${this.displayBalance} QORT</p>
|
||||
</div>
|
||||
<div class="buttons">
|
||||
<mwc-button @click=${() => this.openMoreInfoDialog()}>${translate("explorerpage.exp3")}</mwc-button>
|
||||
<mwc-button class='decline' @click=${() => this.closeInfoDialog()} dialog-dismiss>${translate("general.close")}</mwc-button>
|
||||
</div>
|
||||
</paper-dialog>
|
||||
|
||||
<paper-dialog style="background: var(--white); border: 1px solid var(--black); border-radius: 5px;" id="userErrorDialog" modal>
|
||||
<div class="card-container">
|
||||
<img class="badge" src="/img/notfound.png" />
|
||||
<h2>${translate("explorerpage.exp4")}</h2>
|
||||
<h4>${translate("explorerpage.exp5")}</h4>
|
||||
</div>
|
||||
<div class="buttons">
|
||||
<mwc-button class='decline' @click=${() => this.closeErrorDialog()} dialog-dismiss>${translate("general.close")}</mwc-button>
|
||||
</div>
|
||||
</paper-dialog>
|
||||
`
|
||||
}
|
||||
|
||||
openUserInfo(userData) {
|
||||
if (userData.startsWith('Q') && userData.length == 34) {
|
||||
this.getAddressUserResult(userData)
|
||||
} else {
|
||||
this.getNameUserResult(userData)
|
||||
}
|
||||
}
|
||||
|
||||
async getAddressUserResult(resultAddress) {
|
||||
const myNode = store.getState().app.nodeConfig.knownNodes[store.getState().app.nodeConfig.node]
|
||||
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
|
||||
const addressUrl = `${nodeUrl}/addresses/${resultAddress}`
|
||||
|
||||
await fetch(addressUrl).then(res => {
|
||||
if (res.status === 400) {
|
||||
this.shadowRoot.getElementById('userErrorDialog').open()
|
||||
} else {
|
||||
this.getAllWithAddress(resultAddress)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
async getNameUserResult(resultName) {
|
||||
const myNode = store.getState().app.nodeConfig.knownNodes[store.getState().app.nodeConfig.node]
|
||||
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
|
||||
const nameUrl = `${nodeUrl}/names/${resultName}`
|
||||
|
||||
await fetch(nameUrl).then(res => {
|
||||
if (res.status === 404) {
|
||||
this.shadowRoot.getElementById('userErrorDialog').open()
|
||||
} else {
|
||||
this.getAddressFromName(resultName)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
async getAddressFromName(fromName) {
|
||||
const myNode = store.getState().app.nodeConfig.knownNodes[store.getState().app.nodeConfig.node]
|
||||
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
|
||||
const fromNameUrl = `${nodeUrl}/names/${fromName}`
|
||||
|
||||
const qortalNameInfo = await fetch(fromNameUrl).then(response => {
|
||||
return response.json()
|
||||
})
|
||||
|
||||
this.nameAddressResult = qortalNameInfo
|
||||
const nameAddress = this.nameAddressResult.owner
|
||||
this.getAllWithAddress(nameAddress)
|
||||
}
|
||||
|
||||
async getAllWithAddress(myAddress) {
|
||||
await this.getAddressUserInfo(myAddress)
|
||||
await this.getAddressUserAvatar(myAddress)
|
||||
await this.getAddressUserBalance(myAddress)
|
||||
this.displayAddress = this.addressResult.address
|
||||
this.displayLevel = this.addressResult.level
|
||||
this.shadowRoot.getElementById('userInfoDialog').open()
|
||||
}
|
||||
|
||||
async getAddressUserInfo(infoAddress) {
|
||||
const myNode = store.getState().app.nodeConfig.knownNodes[store.getState().app.nodeConfig.node]
|
||||
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
|
||||
const infoAddressUrl = `${nodeUrl}/addresses/${infoAddress}`
|
||||
|
||||
const qortalAddressInfo = await fetch(infoAddressUrl).then(response => {
|
||||
return response.json()
|
||||
})
|
||||
|
||||
this.addressResult = qortalAddressInfo
|
||||
}
|
||||
|
||||
async getAddressUserAvatar(avatarAddress) {
|
||||
const myNode = store.getState().app.nodeConfig.knownNodes[store.getState().app.nodeConfig.node]
|
||||
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
|
||||
const nameUrl = `${nodeUrl}/names/address/${avatarAddress}?limit=0&reverse=true`
|
||||
|
||||
await fetch(nameUrl).then(res => {
|
||||
return res.json()
|
||||
}).then(jsonRes => {
|
||||
if(jsonRes.length) {
|
||||
jsonRes.map (item => {
|
||||
this.infoAccountName = item.name
|
||||
this.imageName = item.name
|
||||
})
|
||||
} else {
|
||||
this.infoAccountName = "No registered name"
|
||||
this.imageName = avatarAddress
|
||||
}
|
||||
})
|
||||
|
||||
const myImageUrl = `${nodeUrl}/arbitrary/THUMBNAIL/${this.imageName}/qortal_avatar?async=true&apiKey=${this.getApiKey()}`
|
||||
this.imageUrl = myImageUrl
|
||||
}
|
||||
|
||||
async getAddressUserBalance(balanceAddress) {
|
||||
const myNode = store.getState().app.nodeConfig.knownNodes[store.getState().app.nodeConfig.node]
|
||||
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
|
||||
const balanceAddressUrl = `${nodeUrl}/addresses/balance/${balanceAddress}`
|
||||
|
||||
const qortalBalanceInfo = await fetch(balanceAddressUrl).then(res => {
|
||||
return res.json()
|
||||
})
|
||||
|
||||
this.displayBalance = qortalBalanceInfo
|
||||
}
|
||||
|
||||
avatarImage() {
|
||||
return html`<img class="round" src="${this.imageUrl}" onerror="this.src='/img/incognito.png';" />`
|
||||
}
|
||||
|
||||
founderBadge() {
|
||||
if (this.addressResult.flags === 1) {
|
||||
return html`<span class="founder">${translate("explorerpage.exp6")}</span>`
|
||||
} else {
|
||||
return html``
|
||||
}
|
||||
}
|
||||
|
||||
openMoreInfoDialog() {
|
||||
this.shadowRoot.getElementById('userErrorDialog').open()
|
||||
}
|
||||
|
||||
closeInfoDialog() {
|
||||
this.shadowRoot.getElementById('userInfoDialog').close()
|
||||
}
|
||||
|
||||
closeErrorDialog() {
|
||||
this.shadowRoot.getElementById('userErrorDialog').close()
|
||||
}
|
||||
|
||||
getApiKey() {
|
||||
const apiNode = store.getState().app.nodeConfig.knownNodes[store.getState().app.nodeConfig.node];
|
||||
let apiKey = apiNode.apiKey;
|
||||
return apiKey;
|
||||
}
|
||||
}
|
||||
|
||||
window.customElements.define('user-info-view', UserInfoView)
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "qortal-ui-crypto",
|
||||
"version": "2.2.3",
|
||||
"version": "2.2.4",
|
||||
"description": "QORTAL-UI Crypto",
|
||||
"keywords": [
|
||||
"QORT",
|
||||
|
@ -69,6 +69,18 @@ const generateForPlugins = () => {
|
||||
in: 'plugins/core/trade-portal/trade-portal.src.js',
|
||||
out: 'plugins/core/trade-portal/trade-portal.js',
|
||||
},
|
||||
{
|
||||
in: 'plugins/core/trade-bot/trade-bot-btc/trade-bot-btc.src.js',
|
||||
out: 'plugins/core/trade-bot/trade-bot-btc/trade-bot-btc.js',
|
||||
},
|
||||
{
|
||||
in: 'plugins/core/trade-bot/trade-bot-ltc/trade-bot-ltc.src.js',
|
||||
out: 'plugins/core/trade-bot/trade-bot-ltc/trade-bot-ltc.js',
|
||||
},
|
||||
{
|
||||
in: 'plugins/core/trade-bot/trade-bot-doge/trade-bot-doge.src.js',
|
||||
out: 'plugins/core/trade-bot/trade-bot-doge/trade-bot-doge.js',
|
||||
},
|
||||
{
|
||||
in: 'plugins/core/wallet/wallet-app.src.js',
|
||||
out: 'plugins/core/wallet/wallet-app.js',
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "qortal-ui-plugins",
|
||||
"version": "2.2.3",
|
||||
"version": "2.2.4",
|
||||
"description": "QORTAL-UI Plugins",
|
||||
"keywords": [
|
||||
"QORT",
|
||||
@ -22,7 +22,7 @@
|
||||
"emoji-picker-js": "https://github.com/Qortal/emoji-picker-js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "7.19.3",
|
||||
"@babel/core": "7.20.2",
|
||||
"@github/time-elements": "3.1.2",
|
||||
"@material/mwc-button": "0.27.0",
|
||||
"@material/mwc-checkbox": "0.27.0",
|
||||
@ -41,18 +41,18 @@
|
||||
"@polymer/paper-slider": "3.0.1",
|
||||
"@polymer/paper-spinner": "3.0.2",
|
||||
"@polymer/paper-tooltip": "3.0.1",
|
||||
"@rollup/plugin-alias": "4.0.0",
|
||||
"@rollup/plugin-babel": "6.0.0",
|
||||
"@rollup/plugin-commonjs": "23.0.0",
|
||||
"@rollup/plugin-node-resolve": "15.0.0",
|
||||
"@rollup/plugin-replace": "5.0.0",
|
||||
"@vaadin/button": "23.2.5",
|
||||
"@vaadin/grid": "23.2.5",
|
||||
"@vaadin/icons": "23.2.5",
|
||||
"@rollup/plugin-alias": "4.0.2",
|
||||
"@rollup/plugin-babel": "6.0.2",
|
||||
"@rollup/plugin-commonjs": "23.0.2",
|
||||
"@rollup/plugin-node-resolve": "15.0.1",
|
||||
"@rollup/plugin-replace": "5.0.1",
|
||||
"@vaadin/button": "23.2.8",
|
||||
"@vaadin/grid": "23.2.8",
|
||||
"@vaadin/icons": "23.2.8",
|
||||
"epml": "0.3.3",
|
||||
"file-saver": "2.0.5",
|
||||
"html-escaper": "3.0.3",
|
||||
"lit": "2.4.0",
|
||||
"lit": "2.4.1",
|
||||
"lit-translate": "2.0.1",
|
||||
"rollup": "2.79.1",
|
||||
"rollup-plugin-node-globals": "1.4.0",
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { LitElement, html, css } from 'lit'
|
||||
import { render } from 'lit/html.js'
|
||||
import { Epml } from '../../../epml.js'
|
||||
|
||||
import '@material/mwc-icon'
|
||||
|
@ -52,6 +52,33 @@ parentEpml.ready().then(() => {
|
||||
menus: [],
|
||||
parent: false,
|
||||
},
|
||||
{
|
||||
url: 'trade-bot-btc',
|
||||
domain: 'core',
|
||||
page: 'trade-bot/trade-bot-btc/index.html',
|
||||
title: 'Auto Buy With BTC',
|
||||
icon: 'vaadin:automation',
|
||||
menus: [],
|
||||
parent: false,
|
||||
},
|
||||
{
|
||||
url: 'trade-bot-ltc',
|
||||
domain: 'core',
|
||||
page: 'trade-bot/trade-bot-ltc/index.html',
|
||||
title: 'Auto Buy With LTC',
|
||||
icon: 'vaadin:automation',
|
||||
menus: [],
|
||||
parent: false,
|
||||
},
|
||||
{
|
||||
url: 'trade-bot-doge',
|
||||
domain: 'core',
|
||||
page: 'trade-bot/trade-bot-doge/index.html',
|
||||
title: 'Auto Buy With DOGE',
|
||||
icon: 'vaadin:automation',
|
||||
menus: [],
|
||||
parent: false,
|
||||
},
|
||||
{
|
||||
url: 'reward-share',
|
||||
domain: 'core',
|
||||
|
@ -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-btc></trade-bot-btc>
|
||||
<script src="trade-bot-btc.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
File diff suppressed because it is too large
Load Diff
@ -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-doge></trade-bot-doge>
|
||||
<script src="trade-bot-doge.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
File diff suppressed because it is too large
Load Diff
@ -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-ltc></trade-bot-ltc>
|
||||
<script src="trade-bot-ltc.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
File diff suppressed because it is too large
Load Diff
@ -9,12 +9,15 @@ registerTranslateConfig({
|
||||
|
||||
import '@material/mwc-button'
|
||||
import '@material/mwc-textfield'
|
||||
import '@material/mwc-icon'
|
||||
import '@material/mwc-icon-button'
|
||||
import '@material/mwc-dialog'
|
||||
import '@material/mwc-tab-bar'
|
||||
import '@material/mwc-tab'
|
||||
import '@material/mwc-list/mwc-list-item'
|
||||
import '@material/mwc-select'
|
||||
import '@polymer/iron-icons/iron-icons.js'
|
||||
import '@polymer/paper-icon-button/paper-icon-button.js'
|
||||
import '@polymer/paper-spinner/paper-spinner-lite.js'
|
||||
import '@vaadin/grid'
|
||||
import '@vaadin/grid/vaadin-grid-sorter'
|
||||
@ -33,6 +36,9 @@ class TradePortal extends LitElement {
|
||||
isSellLoading: { type: Boolean },
|
||||
isBuyLoading: { type: Boolean },
|
||||
buyBtnDisable: { type: Boolean },
|
||||
autoBuyWarning: { type: Boolean },
|
||||
autoBuyBtnDisable: { type: Boolean },
|
||||
autoBuyBotDisable: { type: Boolean },
|
||||
initialAmount: { type: Number },
|
||||
cancelBtnDisable: { type: Boolean },
|
||||
cancelStuckOfferBtnDisable: { type: Boolean },
|
||||
@ -40,7 +46,14 @@ class TradePortal extends LitElement {
|
||||
isLoadingHistoricTrades: { type: Boolean },
|
||||
isLoadingOpenTrades: { type: Boolean },
|
||||
isLoadingMyOpenOrders: { type: Boolean },
|
||||
showGetWalletBance: { type: Boolean },
|
||||
theme: { type: String, reflect: true },
|
||||
btcWallet: { type: String },
|
||||
ltcWallet: { type: String },
|
||||
dogeWallet: { type: String },
|
||||
dgbWallet: { type: String },
|
||||
rvnWallet: { type: String },
|
||||
arrrWallet: { type: String },
|
||||
arrrWalletAddress: { type: String },
|
||||
qortbtc: { type: Number },
|
||||
qortltc: { type: Number },
|
||||
@ -53,7 +66,13 @@ class TradePortal extends LitElement {
|
||||
dogeqort: { type: Number },
|
||||
dgbqort: { type: Number },
|
||||
rvnqort: { type: Number },
|
||||
arrrqort: { type: Number }
|
||||
arrrqort: { type: Number },
|
||||
tradeInfoAccountName: { type: String },
|
||||
tradeImageUrl: { type: String },
|
||||
tradeAddressResult: { type: Array },
|
||||
displayTradeAddress: { type: String },
|
||||
displayTradeLevel: { type: String },
|
||||
displayTradeBalance: { type: String }
|
||||
}
|
||||
}
|
||||
|
||||
@ -73,6 +92,7 @@ class TradePortal extends LitElement {
|
||||
--mdc-select-ink-color: var(--black);
|
||||
--mdc-theme-surface: var(--white);
|
||||
--mdc-dialog-content-ink-color: var(--black);
|
||||
--mdc-dialog-shape-radius: 25px;
|
||||
--paper-input-container-focus-color: var(--mdc-theme-primary);
|
||||
--lumo-primary-text-color: rgb(0, 167, 245);
|
||||
--lumo-primary-color-50pct: rgba(0, 167, 245, 0.5);
|
||||
@ -121,6 +141,16 @@ class TradePortal extends LitElement {
|
||||
--mdc-icon-button-size: 32px;
|
||||
color: var(--black);
|
||||
}
|
||||
.btn-clear-bot {
|
||||
--mdc-icon-button-size: 32px;
|
||||
color: var(--black);
|
||||
float: right;
|
||||
}
|
||||
.btn-info {
|
||||
color: #03a9f4;
|
||||
--mdc-icon-size: 16px;
|
||||
padding-top: 3px;
|
||||
}
|
||||
#tab-sell[active] {
|
||||
--mdc-theme-primary: rgb(255, 89, 89);
|
||||
}
|
||||
@ -134,8 +164,101 @@ class TradePortal extends LitElement {
|
||||
box-shadow: 0 0.3px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 1px -1px rgba(0, 0, 0, 0.12), 0 1px 2px 0 rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
h2 {
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
h4 {
|
||||
margin: 5px 0;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 14px;
|
||||
line-height: 21px;
|
||||
}
|
||||
|
||||
.card-body {
|
||||
background-color: var(--white);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.card-container {
|
||||
background-color: var(--white);
|
||||
border-radius: 5px;
|
||||
color: var(--black);
|
||||
padding-top: 30px;
|
||||
position: relative;
|
||||
width: 350px;
|
||||
max-width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.card-container .level {
|
||||
color: #ffffff;
|
||||
background-color: #03a9f4;
|
||||
border-radius: 3px;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
padding: 3px 7px;
|
||||
position: absolute;
|
||||
top: 30px;
|
||||
left: 30px;
|
||||
}
|
||||
|
||||
.card-container .founder {
|
||||
color: #ffffff;
|
||||
background-color: #03a9f4;
|
||||
border-radius: 3px;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
padding: 3px 7px;
|
||||
position: absolute;
|
||||
top: 30px;
|
||||
right: 30px;
|
||||
}
|
||||
|
||||
.card-container .round {
|
||||
width: 96px;
|
||||
height: 96px;
|
||||
border: 1px solid #03a9f4;
|
||||
border-radius: 50%;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.card-container .badge {
|
||||
width: 200px;
|
||||
height: 135px;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 10%;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.userdata {
|
||||
background-color: #1F1A36;
|
||||
text-align: left;
|
||||
padding: 15px;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.userdata ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.userdata ul li {
|
||||
border: 1px solid #2D2747;
|
||||
border-radius: 2px;
|
||||
display: inline-block;
|
||||
font-size: 12px;
|
||||
margin: 0 7px 7px 0;
|
||||
padding: 7px;
|
||||
}
|
||||
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
@ -172,6 +295,13 @@ class TradePortal extends LitElement {
|
||||
flex-flow: column;
|
||||
height: 100%;
|
||||
}
|
||||
.box-bot {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
height: 150px;
|
||||
}
|
||||
#first-trade-section {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
@ -195,6 +325,12 @@ class TradePortal extends LitElement {
|
||||
.open-trades {
|
||||
text-align: center;
|
||||
}
|
||||
.open-market-container {
|
||||
text-align: center;
|
||||
}
|
||||
.trade-bot-container {
|
||||
text-align: center;
|
||||
}
|
||||
.no-last-seen {
|
||||
background: rgb(255, 89, 89);
|
||||
padding: 9px 1.3px;
|
||||
@ -202,9 +338,6 @@ class TradePortal extends LitElement {
|
||||
width: 1rem;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.open-market-container {
|
||||
text-align: center;
|
||||
}
|
||||
.card {
|
||||
padding: 1em;
|
||||
border: 1px var(--tradeborder) solid;
|
||||
@ -214,6 +347,15 @@ class TradePortal extends LitElement {
|
||||
justify-content: space-evenly;
|
||||
min-height: inherit;
|
||||
}
|
||||
.card-bot {
|
||||
padding: 1em;
|
||||
flex: 1 1 auto;
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
justify-content: space-evenly;
|
||||
width: 350px;
|
||||
min-height: inherit;
|
||||
}
|
||||
.cancel {
|
||||
--mdc-theme-primary: rgb(255, 89, 89);
|
||||
}
|
||||
@ -279,10 +421,15 @@ class TradePortal extends LitElement {
|
||||
.sell-button {
|
||||
--mdc-theme-primary: rgb(255, 89, 89);
|
||||
}
|
||||
.trade-bot-button {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
--mdc-theme-primary: rgba(55, 160, 51, 0.9);
|
||||
}
|
||||
.full-width {
|
||||
background-color: var(--white);
|
||||
border: 2px #ddd solid;
|
||||
height: 100px;
|
||||
border: 2px var(--black);
|
||||
height: 200px;
|
||||
text-align: center;
|
||||
}
|
||||
vaading-grid {
|
||||
@ -353,6 +500,22 @@ class TradePortal extends LitElement {
|
||||
height: 26px;
|
||||
padding-left: 45px;
|
||||
}
|
||||
.warning-text {
|
||||
animation: blinker 1.5s linear infinite;
|
||||
display: inline;
|
||||
float: left;
|
||||
margin-bottom: 5px;
|
||||
color: rgb(255, 89, 89);
|
||||
}
|
||||
.warning-bot-text {
|
||||
animation: blinker 1.5s linear infinite;
|
||||
display: inline;
|
||||
text-align: center;
|
||||
color: rgb(255, 89, 89);
|
||||
}
|
||||
.red {
|
||||
--mdc-theme-primary: #F44336;
|
||||
}
|
||||
@-webkit-keyframes loadingAnimation {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
@ -373,6 +536,11 @@ class TradePortal extends LitElement {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
@keyframes blinker {
|
||||
50% {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
@media (min-width: 701px) {
|
||||
* {
|
||||
}
|
||||
@ -397,6 +565,16 @@ class TradePortal extends LitElement {
|
||||
align-items: stretch;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
#third-trade-section {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 2fr 1fr;
|
||||
grid-auto-rows: max(200px);
|
||||
column-gap: 0.5em;
|
||||
row-gap: 0.4em;
|
||||
justify-items: stretch;
|
||||
align-items: stretch;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
`
|
||||
}
|
||||
@ -557,6 +735,9 @@ class TradePortal extends LitElement {
|
||||
this.sellBtnDisable = false
|
||||
this.isSellLoading = false
|
||||
this.buyBtnDisable = true
|
||||
this.autoBuyWarning = false
|
||||
this.autoBuyBtnDisable = true
|
||||
this.autoBuyBotDisable = false
|
||||
this.isBuyLoading = false
|
||||
this.initialAmount = 0
|
||||
this.cancelBtnDisable = false
|
||||
@ -564,7 +745,14 @@ class TradePortal extends LitElement {
|
||||
this.isLoadingHistoricTrades = true
|
||||
this.isLoadingOpenTrades = true
|
||||
this.isLoadingMyOpenOrders = false
|
||||
this.showGetWalletBance = true
|
||||
this.theme = localStorage.getItem('qortalTheme') ? localStorage.getItem('qortalTheme') : 'light'
|
||||
this.btcWallet = ''
|
||||
this.ltcWallet = ''
|
||||
this.dogeWallet = ''
|
||||
this.dgbWallet = ''
|
||||
this.rvnWallet = ''
|
||||
this.arrrWallet = ''
|
||||
this.arrrWalletAddress = ''
|
||||
this.qortbtc = 0
|
||||
this.qortltc = 0
|
||||
@ -578,9 +766,14 @@ class TradePortal extends LitElement {
|
||||
this.dgbqort = 0
|
||||
this.rvnqort = 0
|
||||
this.arrrqort = 0
|
||||
this.tradeInfoAccountName = ''
|
||||
this.tradeImageUrl = ''
|
||||
this.tradeAddressResult = []
|
||||
this.displayTradeAddress = ''
|
||||
this.displayTradeLevel = ''
|
||||
this.displayTradeBalance = ''
|
||||
}
|
||||
|
||||
// TODO: Move each template to a separate components! Maybe
|
||||
historicTradesTemplate() {
|
||||
return html`
|
||||
<div class="historic-trades">
|
||||
@ -629,9 +822,8 @@ class TradePortal extends LitElement {
|
||||
resizable
|
||||
header="${translate("tradepage.tchange8")} (QORT)"
|
||||
id="qortAmountColumn"
|
||||
path="qortAmount"
|
||||
.renderer=${(root, column, data) => {
|
||||
render(html`<span> ${this.round(data.item.qortAmount)} </span>`, root)
|
||||
render(html`<span @click="${() => this.fillBuyForm(data)}">${this.round(data.item.qortAmount)}</span>`, root)
|
||||
}}
|
||||
>
|
||||
</vaadin-grid-column>
|
||||
@ -640,9 +832,8 @@ class TradePortal extends LitElement {
|
||||
resizable
|
||||
header="${translate("tradepage.tchange9")} (${this.listedCoins.get(this.selectedCoin).coinCode})"
|
||||
id="priceColumn"
|
||||
path="price"
|
||||
.renderer=${(root, column, data) => {
|
||||
render(html`<span> ${this.round(data.item.price)} </span>`, root)
|
||||
render(html`<span @click="${() => this.fillBuyForm(data)}">${this.round(data.item.price)}</span>`, root)
|
||||
}}
|
||||
>
|
||||
</vaadin-grid-column>
|
||||
@ -650,8 +841,9 @@ class TradePortal extends LitElement {
|
||||
auto-width
|
||||
resizable
|
||||
header="${translate("tradepage.tchange10")} (${this.listedCoins.get(this.selectedCoin).coinCode})"
|
||||
id="foreignAmountColumn"
|
||||
.renderer=${(root, column, data) => {
|
||||
render(html`<span> ${data.item.foreignAmount} </span>`, root)
|
||||
render(html`<span @click="${() => this.fillBuyForm(data)}">${data.item.foreignAmount}</span>`, root)
|
||||
}}
|
||||
>
|
||||
</vaadin-grid-column>
|
||||
@ -659,8 +851,18 @@ class TradePortal extends LitElement {
|
||||
auto-width
|
||||
resizable
|
||||
header="${translate("tradepage.tchange13")}"
|
||||
id="qortalCreatorColumn"
|
||||
.renderer=${(root, column, data) => {
|
||||
render(html`<span> ${data.item.qortalCreator} </span>`, root)
|
||||
render(html`<span @click="${() => this.fillBuyForm(data)}">${data.item.qortalCreator}</span>`, root)
|
||||
}}
|
||||
>
|
||||
</vaadin-grid-column>
|
||||
<vaadin-grid-column
|
||||
auto-width
|
||||
resizable
|
||||
header="${translate("explorerpage.exp7")}"
|
||||
.renderer=${(root, column, data) => {
|
||||
render(html`<span @click="${() => this.getAllForAddress(data.item.qortalCreator)}"><mwc-icon class="btn-info">info</mwc-icon></span>`, root)
|
||||
}}
|
||||
>
|
||||
</vaadin-grid-column>
|
||||
@ -968,12 +1170,16 @@ class TradePortal extends LitElement {
|
||||
${this.myOpenOrdersTemplate()}
|
||||
${this.openMarketTemplate()}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="third-trade-section">
|
||||
<div></div>
|
||||
<div style="text-align: center;">
|
||||
<h2 style="color: var(--black);">${translate("tradepage.tchange33")}</h2>
|
||||
<h2 style="color: var(--black);">${translate("tradepage.tchange33")} ${this.listedCoins.get(this.selectedCoin).coinCode} ${translate("tradepage.tchange40")}</h2>
|
||||
<h3 style="color: var(--black);">1 <span style="color: #03a9f4;">QORT</span> = ${this.exchangeRateQort()} ${this.listedCoins.get(this.selectedCoin).coinCode}</h3>
|
||||
</div>
|
||||
<div></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Manage Stuck Orders Dialog -->
|
||||
<mwc-dialog id="manageStuckOrdersDialog" scrimClickAction="${this.cancelStuckOfferBtnDisable ? '' : 'close'}">
|
||||
<div style="text-align: center;">
|
||||
@ -990,6 +1196,18 @@ class TradePortal extends LitElement {
|
||||
</div>
|
||||
<mwc-button slot="primaryAction" dialogAction="cancel" class="cancel">${translate("general.close")}</mwc-button>
|
||||
</mwc-dialog>
|
||||
|
||||
<mwc-dialog style="background: var(--white);" id="sellerDialog">
|
||||
<div class="card-container">
|
||||
<span class="level">${translate("mintingpage.mchange27")} ${this.displayTradeLevel}</span>
|
||||
${this.tradeFounderBadge()}
|
||||
${this.tradeAvatarImage()}
|
||||
<h2>${this.tradeInfoAccountName}</h2>
|
||||
<h4>${this.displayTradeAddress}</h4>
|
||||
<p>${translate("explorerpage.exp2")}: ${this.displayTradeBalance} QORT</p>
|
||||
</div>
|
||||
<mwc-button slot="primaryAction" dialogAction="cancel" class="cancel">${translate("general.close")}</mwc-button>
|
||||
</mwc-dialog>
|
||||
`
|
||||
}
|
||||
|
||||
@ -1006,7 +1224,6 @@ class TradePortal extends LitElement {
|
||||
this.displayTabContent('buy')
|
||||
}, 0)
|
||||
|
||||
// Set Trade Panes
|
||||
this._openOrdersGrid = this.shadowRoot.getElementById('openOrdersGrid')
|
||||
|
||||
this._openOrdersGrid.querySelector('#priceColumn').headerRenderer = function (root) {
|
||||
@ -1024,8 +1241,6 @@ class TradePortal extends LitElement {
|
||||
this._myHistoricTradesGrid = this.shadowRoot.getElementById('myHistoricTradesGrid')
|
||||
this._stuckOrdersGrid = this.shadowRoot.getElementById('stuckOrdersGrid')
|
||||
|
||||
this.getOpenOrdersGrid()
|
||||
|
||||
const getQortBtcPrice = () => {
|
||||
parentEpml.request("apiCall", { url: `/crosschain/price/BITCOIN?inverse=true` }).then((res) => {
|
||||
setTimeout(() => { this.qortbtc = (Number(res) / 1e8).toFixed(8) }, 1)
|
||||
@ -1097,6 +1312,13 @@ class TradePortal extends LitElement {
|
||||
if (e.keyCode === 27) parentEpml.request('closeCopyTextMenu', null)
|
||||
}
|
||||
|
||||
this.btcWallet = window.parent.reduxStore.getState().app.selectedAddress.btcWallet.address
|
||||
this.ltcWallet = window.parent.reduxStore.getState().app.selectedAddress.ltcWallet.address
|
||||
this.dogeWallet = window.parent.reduxStore.getState().app.selectedAddress.dogeWallet.address
|
||||
this.dgbWallet = window.parent.reduxStore.getState().app.selectedAddress.dgbWallet.address
|
||||
this.rvnWallet = window.parent.reduxStore.getState().app.selectedAddress.rvnWallet.address
|
||||
this.arrrWallet = window.parent.reduxStore.getState().app.selectedAddress.arrrWallet.address
|
||||
|
||||
let configLoaded = false
|
||||
|
||||
parentEpml.ready().then(() => {
|
||||
@ -1105,6 +1327,14 @@ class TradePortal extends LitElement {
|
||||
selectedAddress = JSON.parse(selectedAddress)
|
||||
if (!selectedAddress || Object.entries(selectedAddress).length === 0) return
|
||||
this.selectedAddress = selectedAddress
|
||||
|
||||
this.btcWallet = window.parent.reduxStore.getState().app.selectedAddress.btcWallet.address
|
||||
this.ltcWwallet = window.parent.reduxStore.getState().app.selectedAddress.ltcWallet.address
|
||||
this.dogeWallet = window.parent.reduxStore.getState().app.selectedAddress.dogeWallet.address
|
||||
this.dgbWallet = window.parent.reduxStore.getState().app.selectedAddress.dgbWallet.address
|
||||
this.rvnWallet = window.parent.reduxStore.getState().app.selectedAddress.rvnWallet.address
|
||||
this.arrrWallet = window.parent.reduxStore.getState().app.selectedAddress.arrrWallet.address
|
||||
|
||||
this.updateAccountBalance()
|
||||
})
|
||||
|
||||
@ -1135,7 +1365,6 @@ class TradePortal extends LitElement {
|
||||
})
|
||||
parentEpml.imReady()
|
||||
|
||||
// Set Last Seen column's title on OpenOrders grid
|
||||
setTimeout(() => this.shadowRoot.querySelector('[slot="vaadin-grid-cell-content-3"]').setAttribute('title', 'Last Seen'), 3000)
|
||||
}
|
||||
|
||||
@ -1160,6 +1389,14 @@ class TradePortal extends LitElement {
|
||||
}
|
||||
}
|
||||
|
||||
renderFetchText() {
|
||||
return html`${translate("walletpage.wchange1")}`
|
||||
}
|
||||
|
||||
renderWarning() {
|
||||
return html`<span class="warning-text">NOT ENOUGH ${this.listedCoins.get(this.selectedCoin).coinCode}</span>`
|
||||
}
|
||||
|
||||
exchangeRateQort() {
|
||||
if (this.listedCoins.get(this.selectedCoin).coinCode === "BTC") {
|
||||
return html`${this.qortbtc}`
|
||||
@ -1222,7 +1459,7 @@ class TradePortal extends LitElement {
|
||||
}
|
||||
}
|
||||
|
||||
updateWalletBalance() {
|
||||
async updateWalletBalance() {
|
||||
let _url = ``
|
||||
let _body = null
|
||||
|
||||
@ -1255,7 +1492,9 @@ class TradePortal extends LitElement {
|
||||
break
|
||||
}
|
||||
|
||||
parentEpml.request('apiCall', {
|
||||
this.showGetWalletBance = true
|
||||
|
||||
await parentEpml.request('apiCall', {
|
||||
url: _url,
|
||||
method: 'POST',
|
||||
body: _body,
|
||||
@ -1267,6 +1506,8 @@ class TradePortal extends LitElement {
|
||||
this.listedCoins.get(this.selectedCoin).balance = (Number(res) / 1e8).toFixed(8)
|
||||
}
|
||||
})
|
||||
|
||||
this.showGetWalletBance = false
|
||||
}
|
||||
|
||||
async fetchWalletAddress(coin) {
|
||||
@ -1288,24 +1529,20 @@ class TradePortal extends LitElement {
|
||||
}
|
||||
}
|
||||
|
||||
setForeignCoin(coin,beingInitialized) {
|
||||
async setForeignCoin(coin,beingInitialized) {
|
||||
let _this = this
|
||||
this.selectedCoin = coin
|
||||
|
||||
let coinSelectionMenu=this.shadowRoot.getElementById("coinSelectionMenu")
|
||||
|
||||
if(beingInitialized){
|
||||
//apply padding to the container
|
||||
coinSelectionMenu.shadowRoot.querySelector('.mdc-select--outlined .mdc-select__anchor').setAttribute('style', 'padding-left: 60px;')
|
||||
//create the coin pair container
|
||||
let pairIconContainer = document.createElement("span")
|
||||
let pairicon = (_this.listedCoins.get(_this.selectedCoin).coinCode).toLowerCase()
|
||||
pairIconContainer.setAttribute("class","pairIconContainer")
|
||||
pairIconContainer.setAttribute('style', 'left: 10px;top: 50%;transform: translate(0, -50%);height: 26px;width: 45px;position: absolute;background-repeat: no-repeat;background-size: cover;background-image: url(/img/qort'+pairicon+'.png);')
|
||||
|
||||
//appending the coin pair container to the menu
|
||||
coinSelectionMenu.shadowRoot.querySelector('.mdc-select--outlined .mdc-select__anchor').appendChild(pairIconContainer)
|
||||
}else{//we need just to update the existing pair icon container
|
||||
}else{
|
||||
let pairIconContainer = coinSelectionMenu.shadowRoot.querySelector(".mdc-select--outlined .mdc-select__anchor span.pairIconContainer")
|
||||
let pairicon = (_this.listedCoins.get(_this.selectedCoin).coinCode).toLowerCase()
|
||||
pairIconContainer.style.backgroundImage='url(/img/qort'+pairicon+'.png)'
|
||||
@ -1320,7 +1557,7 @@ class TradePortal extends LitElement {
|
||||
}
|
||||
this.clearSellForm()
|
||||
this.clearBuyForm()
|
||||
this.updateWalletBalance()
|
||||
await this.updateWalletBalance()
|
||||
this.fetchWalletAddress(coin)
|
||||
}
|
||||
|
||||
@ -1350,29 +1587,91 @@ class TradePortal extends LitElement {
|
||||
}
|
||||
|
||||
fillBuyForm(sellerRequest) {
|
||||
this.shadowRoot.getElementById('buyAmountInput').value = parseFloat(sellerRequest.qortAmount)
|
||||
this.shadowRoot.getElementById('buyPriceInput').value = this.round(parseFloat(sellerRequest.foreignAmount) / parseFloat(sellerRequest.qortAmount))
|
||||
this.shadowRoot.getElementById('buyTotalInput').value = parseFloat(sellerRequest.foreignAmount)
|
||||
this.shadowRoot.getElementById('qortalAtAddress').value = sellerRequest.qortalAtAddress
|
||||
this.shadowRoot.getElementById('buyAmountInput').value = parseFloat(sellerRequest.item.qortAmount)
|
||||
this.shadowRoot.getElementById('buyPriceInput').value = this.round(parseFloat(sellerRequest.item.foreignAmount) / parseFloat(sellerRequest.item.qortAmount))
|
||||
this.shadowRoot.getElementById('buyTotalInput').value = parseFloat(sellerRequest.item.foreignAmount)
|
||||
this.shadowRoot.getElementById('qortalAtAddress').value = sellerRequest.item.qortalAtAddress
|
||||
const buyFunds = this.round(parseFloat(sellerRequest.item.foreignAmount))
|
||||
const haveFunds = this.round(parseFloat(this.listedCoins.get(this.selectedCoin).balance))
|
||||
if (Number(haveFunds) > Number(buyFunds)) {
|
||||
this.buyBtnDisable = false
|
||||
this.autoBuyWarning = false
|
||||
} else {
|
||||
this.buyBtnDisable = true
|
||||
this.autoBuyWarning = true
|
||||
}
|
||||
}
|
||||
|
||||
getOpenOrdersGrid() {
|
||||
const myGrid = this.shadowRoot.querySelector('#openOrdersGrid')
|
||||
myGrid.addEventListener(
|
||||
'click', (e) => {
|
||||
let myItem = myGrid.getEventContext(e).item
|
||||
if (myItem !== undefined && myItem.qortalCreator !== this.selectedAddress.address) {
|
||||
this.fillBuyForm(myItem)
|
||||
async getAllForAddress(tradeAddress) {
|
||||
await this.getAddressTradeInfo(tradeAddress)
|
||||
await this.getAddressTradeAvatar(tradeAddress)
|
||||
await this.getAddressTradeBalance(tradeAddress)
|
||||
this.displayTradeAddress = this.tradeAddressResult.address
|
||||
this.displayTradeLevel = this.tradeAddressResult.level
|
||||
this.shadowRoot.querySelector('#sellerDialog').show()
|
||||
}
|
||||
|
||||
async getAddressTradeInfo(tradeInfoAddress) {
|
||||
const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node]
|
||||
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
|
||||
const tradeInfoAddressUrl = `${nodeUrl}/addresses/${tradeInfoAddress}`
|
||||
|
||||
const qortalTradeAddressInfo = await fetch(tradeInfoAddressUrl).then(response => {
|
||||
return response.json()
|
||||
})
|
||||
|
||||
this.tradeAddressResult = qortalTradeAddressInfo
|
||||
}
|
||||
|
||||
async getAddressTradeAvatar(tradeAvatarAddress) {
|
||||
const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node]
|
||||
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
|
||||
const tradeNameUrl = `${nodeUrl}/names/address/${tradeAvatarAddress}?limit=0&reverse=true`
|
||||
|
||||
await fetch(tradeNameUrl).then(res => {
|
||||
return res.json()
|
||||
}).then(jsonRes => {
|
||||
if(jsonRes.length) {
|
||||
jsonRes.map (item => {
|
||||
this.tradeInfoAccountName = item.name
|
||||
this.tradeImageName = item.name
|
||||
})
|
||||
} else {
|
||||
this.tradeInfoAccountName = "No registered name"
|
||||
this.tradeImageName = tradeAvatarAddress
|
||||
}
|
||||
})
|
||||
|
||||
const myTradeImageUrl = `${nodeUrl}/arbitrary/THUMBNAIL/${this.tradeImageName}/qortal_avatar?async=true&apiKey=${this.getApiKey()}`
|
||||
this.tradeImageUrl = myTradeImageUrl
|
||||
}
|
||||
|
||||
async getAddressTradeBalance(tradeBalanceAddress) {
|
||||
const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node]
|
||||
const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port
|
||||
const tradeBalanceAddressUrl = `${nodeUrl}/addresses/balance/${tradeBalanceAddress}`
|
||||
|
||||
const qortalTradeBalanceInfo = await fetch(tradeBalanceAddressUrl).then(res => {
|
||||
return res.json()
|
||||
})
|
||||
this.displayTradeBalance = qortalTradeBalanceInfo
|
||||
}
|
||||
|
||||
tradeAvatarImage() {
|
||||
return html`<img class="round" src="${this.tradeImageUrl}" onerror="this.src='/img/incognito.png';" />`
|
||||
}
|
||||
|
||||
tradeFounderBadge() {
|
||||
if (this.tradeAddressResult.flags === 1) {
|
||||
return html`<span class="founder">${translate("explorerpage.exp6")}</span>`
|
||||
} else {
|
||||
return html``
|
||||
}
|
||||
},
|
||||
{ passive: true }
|
||||
)
|
||||
}
|
||||
|
||||
processOfferingTrade(offer) {
|
||||
try {
|
||||
if(this.listedCoins.get(offer.foreignBlockchain).name!=''){//check if the foreignBlockchain value is part of supported blockchains
|
||||
if(this.listedCoins.get(offer.foreignBlockchain).name!='') {
|
||||
const offerItem = {
|
||||
...offer,
|
||||
qortAmount: parseFloat(offer.qortAmount),
|
||||
@ -1394,11 +1693,9 @@ class TradePortal extends LitElement {
|
||||
|
||||
processRedeemedTrade(offer) {
|
||||
try {
|
||||
if(this.listedCoins.get(offer.foreignBlockchain).name!=''){//check if the foreignBlockchain value is part of supported blockchains
|
||||
if (this.listedCoins.get(offer.foreignBlockchain).name!='') {
|
||||
|
||||
// If trade is mine, add it to my historic trades and also add it to historic trades
|
||||
if (offer.qortalCreator === this.selectedAddress.address) {
|
||||
// Check and Update Wallet Balance
|
||||
if (this.listedCoins.get(offer.foreignBlockchain).tradeOffersSocketCounter > 1) {
|
||||
this.updateWalletBalance()
|
||||
}
|
||||
@ -1406,11 +1703,9 @@ class TradePortal extends LitElement {
|
||||
...offer,
|
||||
mode: 'SOLD',
|
||||
}
|
||||
// Add to my historic trades
|
||||
this._myHistoricTradesGrid.items.unshift(offerItem)
|
||||
this.listedCoins.get(offer.foreignBlockchain).tradeOffersSocketCounter > 1 ? this._myHistoricTradesGrid.clearCache() : null
|
||||
} else if (offer.partnerQortalReceivingAddress === this.selectedAddress.address) {
|
||||
// Check and Update Wallet Balance
|
||||
if (this.listedCoins.get(offer.foreignBlockchain).tradeOffersSocketCounter > 1) {
|
||||
this.updateWalletBalance()
|
||||
}
|
||||
@ -1418,11 +1713,9 @@ class TradePortal extends LitElement {
|
||||
...offer,
|
||||
mode: 'BOUGHT',
|
||||
}
|
||||
// Add to my historic trades
|
||||
this._myHistoricTradesGrid.items.unshift(offerItem)
|
||||
this.listedCoins.get(offer.foreignBlockchain).tradeOffersSocketCounter > 1 ? this._myHistoricTradesGrid.clearCache() : null
|
||||
}
|
||||
// Add to historic trades
|
||||
const addNewHistoricTrade = () => {
|
||||
this._historicTradesGrid.items.unshift(offer)
|
||||
this._historicTradesGrid.clearCache()
|
||||
@ -1437,11 +1730,9 @@ class TradePortal extends LitElement {
|
||||
|
||||
processTradingTrade(offer) {
|
||||
try {
|
||||
if(this.listedCoins.get(offer.foreignBlockchain).name!=''){//check if the foreignBlockchain value is part of supported blockchains
|
||||
if (this.listedCoins.get(offer.foreignBlockchain).name!='') {
|
||||
|
||||
// Remove from open market orders
|
||||
if (offer.qortalCreator === this.selectedAddress.address && this.listedCoins.get(offer.foreignBlockchain).tradeOffersSocketCounter > 1) {
|
||||
// Check and Update Wallet Balance
|
||||
this.updateWalletBalance()
|
||||
}
|
||||
this._openOrdersGrid.items.forEach((item, index) => {
|
||||
@ -1459,14 +1750,12 @@ class TradePortal extends LitElement {
|
||||
|
||||
processRefundedTrade(offer) {
|
||||
try {
|
||||
if(this.listedCoins.get(offer.foreignBlockchain).name!=''){//check if the foreignBlockchain value is part of supported blockchains
|
||||
if (this.listedCoins.get(offer.foreignBlockchain).name!='') {
|
||||
|
||||
if (offer.qortalCreator === this.selectedAddress.address) {
|
||||
// Check and Update Wallet Balance
|
||||
if (this.listedCoins.get(offer.foreignBlockchain).tradeOffersSocketCounter > 1) {
|
||||
this.updateWalletBalance()
|
||||
}
|
||||
// Add to my historic trades
|
||||
this._myHistoricTradesGrid.items.unshift(offer)
|
||||
this.listedCoins.get(offer.foreignBlockchain).tradeOffersSocketCounter > 1 ? this._myHistoricTradesGrid.clearCache() : null
|
||||
}
|
||||
@ -1479,14 +1768,12 @@ class TradePortal extends LitElement {
|
||||
|
||||
processCancelledTrade(offer) {
|
||||
try {
|
||||
if(this.listedCoins.get(offer.foreignBlockchain).name!=''){//check if the foreignBlockchain value is part of supported blockchains
|
||||
if (this.listedCoins.get(offer.foreignBlockchain).name!='') {
|
||||
|
||||
if (offer.qortalCreator === this.selectedAddress.address) {
|
||||
// Check and Update Wallet Balance
|
||||
if (this.listedCoins.get(offer.foreignBlockchain).tradeOffersSocketCounter > 1) {
|
||||
this.updateWalletBalance()
|
||||
}
|
||||
// Add to my historic trades
|
||||
this._myHistoricTradesGrid.items.unshift(offer)
|
||||
this.listedCoins.get(offer.foreignBlockchain).tradeOffersSocketCounter > 1 ? this._myHistoricTradesGrid.clearCache() : null
|
||||
}
|
||||
@ -1580,7 +1867,6 @@ class TradePortal extends LitElement {
|
||||
*/
|
||||
|
||||
const BitcoinACCTv1 = (states) => {
|
||||
// Reverse the states
|
||||
states.reverse()
|
||||
states.forEach((state) => {
|
||||
if (state.creatorAddress === this.selectedAddress.address) {
|
||||
@ -1623,7 +1909,6 @@ class TradePortal extends LitElement {
|
||||
*/
|
||||
|
||||
const LitecoinACCTv1 = (states) => {
|
||||
// Reverse the states
|
||||
states.reverse()
|
||||
states.forEach((state) => {
|
||||
if (state.creatorAddress === this.selectedAddress.address) {
|
||||
@ -1666,7 +1951,6 @@ class TradePortal extends LitElement {
|
||||
*/
|
||||
|
||||
const DogecoinACCTv1 = (states) => {
|
||||
// Reverse the states
|
||||
states.reverse()
|
||||
states.forEach((state) => {
|
||||
if (state.creatorAddress === this.selectedAddress.address) {
|
||||
@ -1709,7 +1993,6 @@ class TradePortal extends LitElement {
|
||||
*/
|
||||
|
||||
const DigibyteACCTv1 = (states) => {
|
||||
// Reverse the states
|
||||
states.reverse()
|
||||
states.forEach((state) => {
|
||||
if (state.creatorAddress === this.selectedAddress.address) {
|
||||
@ -1752,7 +2035,6 @@ class TradePortal extends LitElement {
|
||||
*/
|
||||
|
||||
const RavencoinACCTv1 = (states) => {
|
||||
// Reverse the states
|
||||
states.reverse()
|
||||
states.forEach((state) => {
|
||||
if (state.creatorAddress === this.selectedAddress.address) {
|
||||
@ -1795,7 +2077,6 @@ class TradePortal extends LitElement {
|
||||
*/
|
||||
|
||||
const PirateChainACCTv1 = (states) => {
|
||||
// Reverse the states
|
||||
states.reverse()
|
||||
states.forEach((state) => {
|
||||
if (state.creatorAddress === this.selectedAddress.address) {
|
||||
@ -1844,15 +2125,12 @@ class TradePortal extends LitElement {
|
||||
default:
|
||||
break
|
||||
}
|
||||
|
||||
// Fill Historic Trades and Filter Stuck Trades
|
||||
if (this.listedCoins.get(this.selectedCoin).tradeOffersSocketCounter === 1) {
|
||||
setTimeout(() => this.filterStuckTrades(tradeStates), 250)
|
||||
}
|
||||
}
|
||||
|
||||
changeTradeBotState(state, tradeState) {
|
||||
// Set Loading state
|
||||
this.isLoadingMyOpenOrders = true
|
||||
const stateItem = {
|
||||
...state,
|
||||
@ -1877,7 +2155,6 @@ class TradePortal extends LitElement {
|
||||
item ? updateStateItem() : addStateItem()
|
||||
}
|
||||
|
||||
// ONLY USE FOR BOB_DONE, BOB_REFUNDED, ALICE_DONE, ALICE_REFUNDED
|
||||
handleCompletedState(state) {
|
||||
this._myOrdersGrid.items.forEach((item, index) => {
|
||||
if (item.atAddress === state.atAddress) {
|
||||
@ -1947,12 +2224,10 @@ class TradePortal extends LitElement {
|
||||
let socketTimeout
|
||||
let socketLink = `ws://NODEURL/websockets/crosschain/tradeoffers?foreignBlockchain=FOREIGN_BLOCKCHAIN&includeHistoric=true`
|
||||
const socket = new WebSocket(socketLink)
|
||||
// Open Connection
|
||||
socket.onopen = () => {
|
||||
setTimeout(pingSocket, 250)
|
||||
setTimeout(pingSocket, 50)
|
||||
tradeOffersSocketCounter += 1
|
||||
}
|
||||
// Message Event
|
||||
socket.onmessage = (e) => {
|
||||
e.relatedCoin = _relatedCoin
|
||||
self.postMessage({
|
||||
@ -1964,12 +2239,10 @@ class TradePortal extends LitElement {
|
||||
tradeOffersSocketCounter += 1
|
||||
restarted = false
|
||||
}
|
||||
// Closed Event
|
||||
socket.onclose = () => {
|
||||
clearTimeout(socketTimeout)
|
||||
restartTradeOffersWebSocket()
|
||||
}
|
||||
// Error Event
|
||||
socket.onerror = (e) => {
|
||||
clearTimeout(socketTimeout)
|
||||
}
|
||||
@ -1983,11 +2256,9 @@ class TradePortal extends LitElement {
|
||||
let socketTimeout
|
||||
let socketLink = `ws://NODEURL/websockets/crosschain/tradebot?foreignBlockchain=FOREIGN_BLOCKCHAIN`
|
||||
const socket = new WebSocket(socketLink)
|
||||
// Open Connection
|
||||
socket.onopen = () => {
|
||||
setTimeout(pingSocket, 250)
|
||||
setTimeout(pingSocket, 50)
|
||||
}
|
||||
// Message Event
|
||||
socket.onmessage = (e) => {
|
||||
e.relatedCoin = _relatedCoin
|
||||
self.postMessage({
|
||||
@ -1997,12 +2268,10 @@ class TradePortal extends LitElement {
|
||||
})
|
||||
restarted = false
|
||||
}
|
||||
// Closed Event
|
||||
socket.onclose = () => {
|
||||
clearTimeout(socketTimeout)
|
||||
restartTradeBotWebSocket()
|
||||
}
|
||||
// Error Event
|
||||
socket.onerror = (e) => {
|
||||
clearTimeout(socketTimeout)
|
||||
}
|
||||
@ -2016,22 +2285,18 @@ class TradePortal extends LitElement {
|
||||
let socketTimeout
|
||||
let socketLink = `ws://NODEURL/websockets/crosschain/tradepresence`
|
||||
const socket = new WebSocket(socketLink)
|
||||
// Open Connection
|
||||
socket.onopen = () => {
|
||||
setTimeout(pingSocket, 250)
|
||||
setTimeout(pingSocket, 50)
|
||||
}
|
||||
// Message Event
|
||||
socket.onmessage = (e) => {
|
||||
tradePresenceTxns = JSON.parse(e.data)
|
||||
processOffersWithPresence()
|
||||
restarted = false
|
||||
}
|
||||
// Closed Event
|
||||
socket.onclose = () => {
|
||||
clearTimeout(socketTimeout)
|
||||
restartTradePresenceWebSocket()
|
||||
}
|
||||
// Error Event
|
||||
socket.onerror = (e) => {
|
||||
clearTimeout(socketTimeout)
|
||||
}
|
||||
@ -2042,24 +2307,19 @@ class TradePortal extends LitElement {
|
||||
}
|
||||
|
||||
const restartTradePresenceWebSocket = () => {
|
||||
setTimeout(() => initTradePresenceWebSocket(true), 1000)
|
||||
setTimeout(() => initTradePresenceWebSocket(true), 50)
|
||||
}
|
||||
|
||||
const restartTradeOffersWebSocket = () => {
|
||||
setTimeout(() => initTradeOffersWebSocket(true), 1000)
|
||||
setTimeout(() => initTradeOffersWebSocket(true), 50)
|
||||
}
|
||||
|
||||
const restartTradeBotWebSocket = () => {
|
||||
setTimeout(() => initTradeBotWebSocket(true), 1000)
|
||||
setTimeout(() => initTradeBotWebSocket(true), 50)
|
||||
}
|
||||
|
||||
// Start TradeOffersWebSocket
|
||||
initTradeOffersWebSocket()
|
||||
|
||||
// Start TradePresenceWebSocket
|
||||
initTradePresenceWebSocket()
|
||||
|
||||
// Start TradeBotWebSocket
|
||||
initTradeBotWebSocket()
|
||||
}
|
||||
|
||||
@ -2198,8 +2458,6 @@ class TradePortal extends LitElement {
|
||||
parentEpml.request('showSnackBar', `${snack7string}: ${response.message}`)
|
||||
}
|
||||
}
|
||||
|
||||
// Call makeRequest
|
||||
const res = await makeRequest()
|
||||
manageResponse(res)
|
||||
}
|
||||
@ -2235,8 +2493,6 @@ class TradePortal extends LitElement {
|
||||
parentEpml.request('showSnackBar', `${snack10string}: ${response.message}`)
|
||||
}
|
||||
}
|
||||
|
||||
// Call makeRequest
|
||||
const res = await makeRequest()
|
||||
manageResponse(res)
|
||||
}
|
||||
@ -2290,8 +2546,6 @@ class TradePortal extends LitElement {
|
||||
parentEpml.request('showSnackBar', `${snack13string}: ${response.message}`)
|
||||
}
|
||||
}
|
||||
|
||||
// Call makeRequest
|
||||
const res = await makeRequest()
|
||||
manageResponse(res)
|
||||
}
|
||||
@ -2304,7 +2558,6 @@ class TradePortal extends LitElement {
|
||||
}
|
||||
}
|
||||
|
||||
// Helper Functions (Re-Used in Most part of the UI )
|
||||
_checkSellAmount(e) {
|
||||
const targetAmount = e.target.value
|
||||
const target = e.target
|
||||
@ -2543,6 +2796,7 @@ class TradePortal extends LitElement {
|
||||
workers.get(this.selectedCoin).tradesConnectedWorker.addEventListener('message', function (event) { handleMessage(event.data) }, { passive: true })
|
||||
|
||||
workers.get(this.selectedCoin).tradesConnectedWorker.postMessage({ type: "set_coin", content: this.selectedCoin })
|
||||
|
||||
}
|
||||
|
||||
handleStuckTrades() {
|
||||
@ -2580,11 +2834,7 @@ class TradePortal extends LitElement {
|
||||
const stuckOffers = filterStuckOffers(myOpenTradeOrders)
|
||||
self.postMessage({ type: 'STUCK_OFFERS', data: stuckOffers })
|
||||
}
|
||||
|
||||
// Get Offers
|
||||
setTimeout(() => { getOffers() }, 1000)
|
||||
|
||||
// Get Historic Trades
|
||||
setTimeout(() => { getCompletedTrades() }, 1000)
|
||||
}
|
||||
|
||||
@ -2594,7 +2844,6 @@ class TradePortal extends LitElement {
|
||||
return
|
||||
}
|
||||
|
||||
//show the loading on historic trades
|
||||
this.shadowRoot.getElementById('loadingHistoricTrades').style.display = "block";
|
||||
let isHandleTradesDone = false
|
||||
let isHandleStuckOffersDone = false
|
||||
|
@ -1,5 +1,5 @@
|
||||
require('dotenv').config();
|
||||
const { notarize } = require('electron-notarize');
|
||||
const { notarize } = require('@electron/notarize');
|
||||
|
||||
exports.default = async function notarizing(context) {
|
||||
const { electronPlatformName, appOutDir } = context;
|
||||
|
Loading…
x
Reference in New Issue
Block a user