diff --git a/package.json b/package.json index d1c507a94..b4763b1e6 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ }, "dependencies": { "@metamask/detect-provider": "^2.0.0", - "@soramitsu/soraneo-wallet-web": "1.32.0", + "@soramitsu/soraneo-wallet-web": "1.32.5", "@walletconnect/ethereum-provider": "^2.11.2", "@walletconnect/modal": "^2.6.2", "core-js": "^3.36.0", diff --git a/src/components/pages/Swap/Chart.vue b/src/components/pages/Swap/Chart.vue index 1e22b45a3..a66ce29ef 100644 --- a/src/components/pages/Swap/Chart.vue +++ b/src/components/pages/Swap/Chart.vue @@ -839,14 +839,11 @@ export default class SwapChart extends Mixins( console.error ); } else { - return this.$watch( - () => this.fiatPriceObject, - (updated, prev) => { - if (updated && (!prev || entities.some((addr) => updated[addr] !== prev[addr]))) { - this.fetchAndHandleUpdate(entities); - } - } - ); + const interval = setInterval(() => { + this.fetchAndHandleUpdate(entities); + }, SYNC_INTERVAL * 5); + + return () => clearInterval(interval); } } diff --git a/src/indexer/queries/orderBook.ts b/src/indexer/queries/orderBook.ts index 4e1f0220d..471e47cb6 100644 --- a/src/indexer/queries/orderBook.ts +++ b/src/indexer/queries/orderBook.ts @@ -74,7 +74,7 @@ const SubqueryOrderBooksQuery = gql>` const SubsquidOrderBooksQuery = gql>` query SubsquidOrderBooksQuery($after: String = null, $where: OrderBookWhereInput) { - data: orderBooksConnection(after: $after, where: $where) { + data: orderBooksConnection(orderBy: id_ASC, after: $after, where: $where) { pageInfo { hasNextPage endCursor diff --git a/src/lang/cs.json b/src/lang/cs.json index a6bf6f1cd..c8eda100f 100644 --- a/src/lang/cs.json +++ b/src/lang/cs.json @@ -1522,7 +1522,7 @@ }, "marketNotAvailable": { "reason": "K vyřízení této objednávky není k dispozici dostatek objednávek", - "reading": "Omezení tržního příkazu: Pro splnění tohoto tržního limitního příkazu není k dispozici dostatek příkazů. Upravte prosím velikost objednávky nebo počkejte na odeslání dalších objednávek" + "reading": "Omezení tržního příkazu: Pro splnění tohoto tržního příkazu není k dispozici dostatek příkazů. Upravte prosím velikost objednávky nebo počkejte na odeslání dalších objednávek" }, "exceedsSpread": { "reason": "Cena přesáhla spread", @@ -1554,6 +1554,8 @@ "canceled": "Zrušeno", "expired": "Prošlý", "filled": "Naplněné" - } - } + }, + "pricePerToken": "Cena za 1 {token}" + }, + "calculatingText": "Vypočítávání" } \ No newline at end of file diff --git a/src/lang/de.json b/src/lang/de.json index 2f52b79fa..221c93337 100644 --- a/src/lang/de.json +++ b/src/lang/de.json @@ -1522,7 +1522,7 @@ }, "marketNotAvailable": { "reason": "Es sind nicht genügend Bestellungen verfügbar, um diese Bestellung auszuführen", - "reading": "Limitierung der Market-Order: Es sind nicht genügend Orders verfügbar, um diese Market-Limit-Order auszuführen. Bitte passen Sie Ihre Bestellgröße an oder warten Sie, bis weitere Bestellungen aufgegeben werden" + "reading": "Limitierung der Market-Order: Es sind nicht genügend Orders verfügbar, um diese Market-Order auszuführen. Bitte passen Sie Ihre Bestellgröße an oder warten Sie, bis weitere Bestellungen aufgegeben werden" }, "exceedsSpread": { "reason": "Der Preis überstieg die Spanne", @@ -1554,6 +1554,8 @@ "canceled": "Abgesagt", "expired": "Abgelaufen", "filled": "Gefüllt" - } - } + }, + "pricePerToken": "Preis pro 1 {token}" + }, + "calculatingText": "Berechnung" } \ No newline at end of file diff --git a/src/lang/en.json b/src/lang/en.json index 0109aa82a..ac69b1c95 100644 --- a/src/lang/en.json +++ b/src/lang/en.json @@ -1522,7 +1522,7 @@ }, "marketNotAvailable": { "reason": "Not enough orders available to fullfill this order", - "reading": "Market order limitation: There are not enough orders available to fulfill this market limit order. Please adjust your order size or wait for more orders to be placed" + "reading": "Market order limitation: There are not enough orders available to fulfill this market order. Please adjust your order size or wait for more orders to be placed" }, "exceedsSpread": { "reason": "Price exceeded spread", @@ -1554,6 +1554,8 @@ "canceled": "Canceled", "expired": "Expired", "filled": "Filled" - } - } + }, + "pricePerToken": "Price per 1 {token}" + }, + "calculatingText": "Calculating" } \ No newline at end of file diff --git a/src/lang/es.json b/src/lang/es.json index 78cdb36d9..1a4f24d11 100644 --- a/src/lang/es.json +++ b/src/lang/es.json @@ -1522,7 +1522,7 @@ }, "marketNotAvailable": { "reason": "No hay suficientes pedidos disponibles para completar este pedido", - "reading": "Limitación de orden de mercado: no hay suficientes órdenes disponibles para cumplir con esta orden de límite de mercado. Ajuste el tamaño de su pedido o espere a que se realicen más pedidos." + "reading": "Limitación de la orden de mercado: no hay suficientes órdenes disponibles para cumplir con esta orden de mercado. Ajuste el tamaño de su pedido o espere a que se realicen más pedidos." }, "exceedsSpread": { "reason": "El precio superó el diferencial", @@ -1554,6 +1554,8 @@ "canceled": "Cancelado", "expired": "Venció", "filled": "Completado" - } - } + }, + "pricePerToken": "Precio por 1 {token}" + }, + "calculatingText": "Calculando" } \ No newline at end of file diff --git a/src/lang/fr.json b/src/lang/fr.json index 35e3643d8..eb193bdd8 100644 --- a/src/lang/fr.json +++ b/src/lang/fr.json @@ -1522,7 +1522,7 @@ }, "marketNotAvailable": { "reason": "Pas assez de commandes disponibles pour exécuter cette commande", - "reading": "Limitation des ordres au marché : il n’y a pas suffisamment d’ordres disponibles pour exécuter cet ordre au marché limité. Veuillez ajuster la taille de votre commande ou attendre que d'autres commandes soient passées" + "reading": "Limitation des ordres au marché : il n’y a pas suffisamment d’ordres disponibles pour exécuter cet ordre au marché. Veuillez ajuster la taille de votre commande ou attendre que d'autres commandes soient passées" }, "exceedsSpread": { "reason": "Prix dépassé le spread", @@ -1554,6 +1554,8 @@ "canceled": "Annulé", "expired": "Expiré", "filled": "Rempli" - } - } + }, + "pricePerToken": "Prix par 1 {token}" + }, + "calculatingText": "Calculant" } \ No newline at end of file diff --git a/src/lang/hr.json b/src/lang/hr.json index 8359ac3a6..de0eaf9dd 100644 --- a/src/lang/hr.json +++ b/src/lang/hr.json @@ -1522,7 +1522,7 @@ }, "marketNotAvailable": { "reason": "Nema dovoljno dostupnih narudžbi za ispunjavanje ove narudžbe", - "reading": "Ograničenje tržišnog naloga: nema dovoljno dostupnih naloga za ispunjavanje ovog ograničenog tržišnog naloga. Prilagodite veličinu svoje narudžbe ili pričekajte da se pošalje više narudžbi" + "reading": "Ograničenje tržišnog naloga: nema dovoljno dostupnih naloga za ispunjavanje ovog tržišnog naloga. Prilagodite veličinu svoje narudžbe ili pričekajte da se pošalje više narudžbi" }, "exceedsSpread": { "reason": "Cijena premašila raspon", @@ -1554,6 +1554,8 @@ "canceled": "Otkazano", "expired": "Istekao", "filled": "Ispunjeno" - } - } + }, + "pricePerToken": "Cijena za 1 {token}" + }, + "calculatingText": "Izračunavanje" } \ No newline at end of file diff --git a/src/lang/hu.json b/src/lang/hu.json index 0bce64788..165528fec 100644 --- a/src/lang/hu.json +++ b/src/lang/hu.json @@ -1522,7 +1522,7 @@ }, "marketNotAvailable": { "reason": "Nincs elég rendelés a rendelés teljesítéséhez", - "reading": "Piaci megbízás korlátozása: Nincs elég megbízás a piaci limites megbízás teljesítéséhez. Kérjük, módosítsa rendelési méretét, vagy várja meg a további rendelések leadását" + "reading": "Piaci megbízás korlátozása: Nincs elég megbízás a piaci megbízás teljesítéséhez. Kérjük, módosítsa rendelési méretét, vagy várja meg a további rendelések leadását" }, "exceedsSpread": { "reason": "Az ár meghaladja a spreadet", @@ -1554,6 +1554,8 @@ "canceled": "Törölve", "expired": "Lejárt", "filled": "Megtöltött" - } - } + }, + "pricePerToken": "1 {token} ár" + }, + "calculatingText": "Számítás" } \ No newline at end of file diff --git a/src/lang/hy.json b/src/lang/hy.json index b738332a3..5761d827f 100644 --- a/src/lang/hy.json +++ b/src/lang/hy.json @@ -1522,7 +1522,7 @@ }, "marketNotAvailable": { "reason": "Այս պատվերը կատարելու համար բավարար պատվերներ չկան", - "reading": "Շուկայական պատվերի սահմանափակում. այս շուկայական սահմանաչափի պատվերը կատարելու համար բավարար պատվերներ չկան: Խնդրում ենք հարմարեցնել ձեր պատվերի չափը կամ սպասել լրացուցիչ պատվերների տեղադրմանը" + "reading": "Շուկայական պատվերի սահմանափակում. այս շուկայական պատվերը կատարելու համար բավարար պատվերներ չկան: Խնդրում ենք հարմարեցնել ձեր պատվերի չափը կամ սպասել լրացուցիչ պատվերների տեղադրմանը" }, "exceedsSpread": { "reason": "Գինը գերազանցել է սպրեդը", @@ -1554,6 +1554,8 @@ "canceled": "Չեղարկված է", "expired": "Ժամկետանց", "filled": "Լրացված" - } - } + }, + "pricePerToken": "Գինը 1 {token} ի համար" + }, + "calculatingText": "Հաշվարկում" } \ No newline at end of file diff --git a/src/lang/id.json b/src/lang/id.json index e92e59a6b..a94dd4257 100644 --- a/src/lang/id.json +++ b/src/lang/id.json @@ -1522,7 +1522,7 @@ }, "marketNotAvailable": { "reason": "Pesanan yang tersedia tidak cukup untuk memenuhi pesanan ini", - "reading": "Batasan pesanan pasar: Tidak ada cukup pesanan yang tersedia untuk memenuhi pesanan batas pasar ini. Silakan sesuaikan ukuran pesanan Anda atau tunggu pesanan lainnya dilakukan" + "reading": "Batasan pesanan pasar: Tidak tersedia cukup pesanan untuk memenuhi pesanan pasar ini. Silakan sesuaikan ukuran pesanan Anda atau tunggu pesanan lainnya dilakukan" }, "exceedsSpread": { "reason": "Harga melebihi spread", @@ -1554,6 +1554,8 @@ "canceled": "Dibatalkan", "expired": "Kedaluwarsa", "filled": "Dipenuhi" - } - } + }, + "pricePerToken": "Harga per 1 {token}" + }, + "calculatingText": "Menghitung" } \ No newline at end of file diff --git a/src/lang/it.json b/src/lang/it.json index 8bcba96dd..e75f3ca46 100644 --- a/src/lang/it.json +++ b/src/lang/it.json @@ -1522,7 +1522,7 @@ }, "marketNotAvailable": { "reason": "Non ci sono abbastanza ordini disponibili per evadere questo ordine", - "reading": "Limitazione dell'ordine di mercato: non ci sono abbastanza ordini disponibili per soddisfare questo ordine limite di mercato. Modifica la dimensione dell'ordine o attendi che vengano effettuati altri ordini" + "reading": "Limitazione dell'ordine di mercato: non ci sono abbastanza ordini disponibili per soddisfare questo ordine di mercato. Modifica la dimensione dell'ordine o attendi che vengano effettuati altri ordini" }, "exceedsSpread": { "reason": "Il prezzo ha superato lo spread", @@ -1554,6 +1554,8 @@ "canceled": "Annullato", "expired": "Scaduto", "filled": "Riempito" - } - } + }, + "pricePerToken": "Prezzo per 1 {token}" + }, + "calculatingText": "Calcolando" } \ No newline at end of file diff --git a/src/lang/nl.json b/src/lang/nl.json index ada040022..ac6c46558 100644 --- a/src/lang/nl.json +++ b/src/lang/nl.json @@ -1522,7 +1522,7 @@ }, "marketNotAvailable": { "reason": "Er zijn niet genoeg bestellingen beschikbaar om deze bestelling uit te voeren", - "reading": "Marktorderbeperking: Er zijn niet genoeg orders beschikbaar om aan deze marktlimietorder te voldoen. Pas uw bestelgrootte aan of wacht tot er meer bestellingen worden geplaatst" + "reading": "Beperking van marktorders: Er zijn niet genoeg orders beschikbaar om aan deze marktorder te voldoen. Pas uw bestelgrootte aan of wacht tot er meer bestellingen worden geplaatst" }, "exceedsSpread": { "reason": "Prijs overtrof de spread", @@ -1554,6 +1554,8 @@ "canceled": "Geannuleerd", "expired": "Verlopen", "filled": "Gevuld" - } - } + }, + "pricePerToken": "Prijs per 1 {token}" + }, + "calculatingText": "Berekenen" } \ No newline at end of file diff --git a/src/lang/no.json b/src/lang/no.json index c017e7708..c1ce9d2de 100644 --- a/src/lang/no.json +++ b/src/lang/no.json @@ -1522,7 +1522,7 @@ }, "marketNotAvailable": { "reason": "Ikke nok tilgjengelige bestillinger til å fullføre denne bestillingen", - "reading": "Markedsordrebegrensning: Det er ikke nok bestillinger tilgjengelig til å oppfylle denne markedsgrenseordren. Vennligst juster bestillingsstørrelsen eller vent på at flere bestillinger legges inn" + "reading": "Markedsordrebegrensning: Det er ikke nok bestillinger tilgjengelig til å oppfylle denne markedsordren. Vennligst juster bestillingsstørrelsen eller vent på at flere bestillinger legges inn" }, "exceedsSpread": { "reason": "Pris overskredet spredning", @@ -1554,6 +1554,8 @@ "canceled": "Kansellert", "expired": "Utløpt", "filled": "Fylt" - } - } + }, + "pricePerToken": "Pris per 1 {token}" + }, + "calculatingText": "Beregner" } \ No newline at end of file diff --git a/src/lang/pl.json b/src/lang/pl.json index abf1d383d..79b61720d 100644 --- a/src/lang/pl.json +++ b/src/lang/pl.json @@ -1522,7 +1522,7 @@ }, "marketNotAvailable": { "reason": "Nie ma wystarczającej liczby dostępnych zamówień, aby zrealizować to zamówienie", - "reading": "Ograniczenie zleceń rynkowych: Nie ma wystarczającej liczby dostępnych zleceń, aby zrealizować to zlecenie z limitem rynkowym. Dostosuj wielkość zamówienia lub poczekaj na złożenie większej liczby zamówień" + "reading": "Ograniczenie zlecenia rynkowego: Nie ma wystarczającej liczby dostępnych zleceń, aby zrealizować to zlecenie rynkowe. Dostosuj wielkość zamówienia lub poczekaj na złożenie większej liczby zamówień" }, "exceedsSpread": { "reason": "Cena przekroczyła spread", @@ -1554,6 +1554,8 @@ "canceled": "Odwołany", "expired": "Wygasły", "filled": "Wypełniony" - } - } + }, + "pricePerToken": "Cena za 1 {token}" + }, + "calculatingText": "Obliczanie" } \ No newline at end of file diff --git a/src/lang/ru.json b/src/lang/ru.json index 1509b40db..35b61318c 100644 --- a/src/lang/ru.json +++ b/src/lang/ru.json @@ -1522,7 +1522,7 @@ }, "marketNotAvailable": { "reason": "Недостаточно ордеров для выполнения этого ордера.", - "reading": "Ограничение рыночного ордера: недостаточно доступных ордеров для выполнения этого рыночного лимитного ордера. Пожалуйста, измените размер ордера или подождите, пока будут размещены новые ордера." + "reading": "Ограничение рыночного ордера: для выполнения этого рыночного ордера недостаточно ордеров. Пожалуйста, измените размер заказа или подождите, пока будут размещены новые заказы." }, "exceedsSpread": { "reason": "Цена превысила спред", @@ -1554,6 +1554,8 @@ "canceled": "Отменен", "expired": "Истек", "filled": "Заполнен" - } - } + }, + "pricePerToken": "Цена за 1 {token}" + }, + "calculatingText": "Вычисление" } \ No newline at end of file diff --git a/src/lang/sk.json b/src/lang/sk.json index 315e1eefb..8a731e343 100644 --- a/src/lang/sk.json +++ b/src/lang/sk.json @@ -1522,7 +1522,7 @@ }, "marketNotAvailable": { "reason": "Nie je k dispozícii dostatok objednávok na splnenie tejto objednávky", - "reading": "Obmedzenie trhového príkazu: Nie je k dispozícii dostatok príkazov na splnenie tohto trhového limitného príkazu. Upravte veľkosť objednávky alebo počkajte na odoslanie ďalších objednávok" + "reading": "Obmedzenie trhovej objednávky: Na splnenie tejto trhovej objednávky nie je k dispozícii dostatok objednávok. Upravte veľkosť objednávky alebo počkajte na odoslanie ďalších objednávok" }, "exceedsSpread": { "reason": "Cena prekročila spread", @@ -1554,6 +1554,8 @@ "canceled": "Zrušené", "expired": "Platnosť vypršala", "filled": "Naplnené" - } - } + }, + "pricePerToken": "Cena za 1 {token}" + }, + "calculatingText": "Výpočet" } \ No newline at end of file diff --git a/src/lang/sr.json b/src/lang/sr.json index a5d2b0c66..2f67e3091 100644 --- a/src/lang/sr.json +++ b/src/lang/sr.json @@ -1522,7 +1522,7 @@ }, "marketNotAvailable": { "reason": "Нема довољно поруџбина за испуњавање ове поруџбине", - "reading": "Ограничење тржишног налога: Нема довољно доступних налога за испуњавање овог тржишног лимитираног налога. Подесите величину поруџбине или сачекајте да буде послато више поруџбина" + "reading": "Ограничење тржишног налога: Нема довољно доступних налога за испуњавање овог тржишног налога. Подесите величину поруџбине или сачекајте да буде послато више поруџбина" }, "exceedsSpread": { "reason": "Цена је премашила распон", @@ -1554,6 +1554,8 @@ "canceled": "Отказано", "expired": "Истекао", "filled": "Попуњено" - } - } + }, + "pricePerToken": "Цена по 1 {token}" + }, + "calculatingText": "Računanje" } \ No newline at end of file diff --git a/src/lang/sv.json b/src/lang/sv.json index 4777a3df2..1bd58e746 100644 --- a/src/lang/sv.json +++ b/src/lang/sv.json @@ -1522,7 +1522,7 @@ }, "marketNotAvailable": { "reason": "Det finns inte tillräckligt med beställningar för att fullfölja denna beställning", - "reading": "Marknadsorderbegränsning: Det finns inte tillräckligt med order tillgängliga för att uppfylla denna marknadsbegränsningsorder. Vänligen justera din beställningsstorlek eller vänta på att fler beställningar ska läggas" + "reading": "Marknadsorderbegränsning: Det finns inte tillräckligt med order tillgängliga för att uppfylla denna marknadsorder. Vänligen justera din beställningsstorlek eller vänta på att fler beställningar ska läggas" }, "exceedsSpread": { "reason": "Priset översteg spridningen", @@ -1554,6 +1554,8 @@ "canceled": "Inställt", "expired": "Utgånget", "filled": "Fylld" - } - } + }, + "pricePerToken": "Pris per 1 {token}" + }, + "calculatingText": "Beräknar" } \ No newline at end of file diff --git a/src/lang/vi.json b/src/lang/vi.json index 055350245..5869c37f8 100644 --- a/src/lang/vi.json +++ b/src/lang/vi.json @@ -1522,7 +1522,7 @@ }, "marketNotAvailable": { "reason": "Không có đủ đơn đặt hàng để thực hiện đầy đủ đơn đặt hàng này", - "reading": "Giới hạn lệnh thị trường: Không có đủ đơn đặt hàng để thực hiện lệnh giới hạn thị trường này. Vui lòng điều chỉnh kích thước đơn hàng của bạn hoặc chờ đặt thêm đơn hàng" + "reading": "Giới hạn lệnh thị trường: Không có đủ lệnh để thực hiện lệnh thị trường này. Vui lòng điều chỉnh kích thước đơn hàng của bạn hoặc chờ đặt thêm đơn hàng" }, "exceedsSpread": { "reason": "Giá vượt quá mức chênh lệch", @@ -1554,6 +1554,8 @@ "canceled": "Đã hủy", "expired": "Hết hạn", "filled": "Điền" - } - } + }, + "pricePerToken": "Giá mỗi 1 {token}" + }, + "calculatingText": "Đang tính toán" } \ No newline at end of file diff --git a/src/lang/yo.json b/src/lang/yo.json index a41ba0f5d..9429f1085 100644 --- a/src/lang/yo.json +++ b/src/lang/yo.json @@ -1522,7 +1522,7 @@ }, "marketNotAvailable": { "reason": "Ko si awọn aṣẹ to wa lati kun aṣẹ yii", - "reading": "Idiwọn aṣẹ ọja: Ko si awọn aṣẹ to wa lati mu aṣẹ opin ọja yii ṣẹ. Jọwọ ṣatunṣe iwọn ibere rẹ tabi duro fun awọn aṣẹ diẹ sii lati gbe" + "reading": "Idiwọn aṣẹ ọja: Ko si awọn aṣẹ to wa lati mu aṣẹ ọja yii ṣẹ. Jọwọ ṣatunṣe iwọn ibere rẹ tabi duro fun awọn aṣẹ diẹ sii lati gbe" }, "exceedsSpread": { "reason": "Iye owo ti kọja itankale", @@ -1554,6 +1554,8 @@ "canceled": "fagilee", "expired": "Ti pari", "filled": "Ti kun" - } - } + }, + "pricePerToken": "Iye fun 1 {token}" + }, + "calculatingText": "Ọnàkọnà" } \ No newline at end of file diff --git a/src/lang/zh_CN.json b/src/lang/zh_CN.json index 176981a88..5fb8a3678 100644 --- a/src/lang/zh_CN.json +++ b/src/lang/zh_CN.json @@ -1522,7 +1522,7 @@ }, "marketNotAvailable": { "reason": "没有足够的订单来完成此订单", - "reading": "市价订单限制:没有足够的订单来履行此市价限价订单。请调整您的订单大小或等待下更多订单" + "reading": "市价订单限制:没有足够的订单来履行该市价订单。请调整您的订单大小或等待下更多订单" }, "exceedsSpread": { "reason": "价格超出点差", @@ -1554,6 +1554,8 @@ "canceled": "取消", "expired": "已到期", "filled": "填充" - } - } + }, + "pricePerToken": "每 1 个{token}价格" + }, + "calculatingText": "正在计算" } \ No newline at end of file diff --git a/src/modules/staking/demeter/mixins/AprMixin.ts b/src/modules/staking/demeter/mixins/AprMixin.ts index ff50e70b0..7d450f2a2 100644 --- a/src/modules/staking/demeter/mixins/AprMixin.ts +++ b/src/modules/staking/demeter/mixins/AprMixin.ts @@ -2,13 +2,16 @@ import { FPNumber } from '@sora-substrate/util'; import { mixins } from '@soramitsu/soraneo-wallet-web'; import { Component, Mixins } from 'vue-property-decorator'; +import TranslationMixin from '@/components/mixins/TranslationMixin'; +import { formatDecimalPlaces } from '@/utils'; + import type { DemeterPool, DemeterRewardToken } from '@sora-substrate/util/build/demeterFarming/types'; import type { AccountLiquidity } from '@sora-substrate/util/build/poolXyk/types'; const BLOCKS_PER_YEAR = new FPNumber(5_256_000); @Component -export default class AprMixin extends Mixins(mixins.FormattedAmountMixin) { +export default class AprMixin extends Mixins(mixins.FormattedAmountMixin, TranslationMixin) { // allocation * token_per_block * multiplier getEmission(pool: DemeterPool, tokenInfo: Nullable): FPNumber { const isFarm = !!pool?.isFarm; @@ -46,4 +49,8 @@ export default class AprMixin extends Mixins(mixins.FormattedAmountMixin) { return pool.totalTokensInPool.mul(poolAssetPrice); } } + + formatApr(apr: FPNumber): string { + return apr.isZero() ? this.t('calculatingText') : formatDecimalPlaces(apr, true); + } } diff --git a/src/modules/staking/demeter/mixins/BasePageMixin.ts b/src/modules/staking/demeter/mixins/BasePageMixin.ts index 82a5a4061..d56ea8cd0 100644 --- a/src/modules/staking/demeter/mixins/BasePageMixin.ts +++ b/src/modules/staking/demeter/mixins/BasePageMixin.ts @@ -80,9 +80,13 @@ export default class BasePageMixin extends Mixins(AprMixin) { } get selectedPool(): Nullable { - if (!this.baseAsset || !this.poolAsset || !this.pools[this.baseAsset][this.poolAsset]) return null; + if (!(this.baseAsset && this.poolAsset && this.rewardAsset)) return null; - return this.pools[this.baseAsset][this.poolAsset].find((pool) => pool.rewardAsset === this.rewardAsset); + const pools = this.pools[this.baseAsset]?.[this.poolAsset]; + + if (!pools) return null; + + return pools.find((pool) => pool.rewardAsset === this.rewardAsset); } get selectedAccountPool(): Nullable { @@ -124,7 +128,7 @@ export default class BasePageMixin extends Mixins(AprMixin) { const emission = this.getEmission(pool, tokenInfo); const tvl = this.getTvl(pool, poolAsset.price, liquidity); const apr = this.getApr(emission, tvl, rewardAsset.price); - const aprFormatted = formatDecimalPlaces(apr, true); + const aprFormatted = this.formatApr(apr); const tvlFormatted = `$${formatDecimalPlaces(tvl)}`; return { diff --git a/src/modules/staking/sora/components/StatusBadge.vue b/src/modules/staking/sora/components/StatusBadge.vue index 57dabadff..72f3d55a2 100644 --- a/src/modules/staking/sora/components/StatusBadge.vue +++ b/src/modules/staking/sora/components/StatusBadge.vue @@ -12,7 +12,7 @@ import { Component, Mixins } from 'vue-property-decorator'; import { Components } from '@/consts'; import { lazyComponent } from '@/router'; -import { formatDecimalPlaces } from '@/utils'; +import { formatDecimalPlaces, asZeroValue } from '@/utils'; import StakingMixin from '../mixins/StakingMixin'; @@ -23,7 +23,7 @@ import StakingMixin from '../mixins/StakingMixin'; }) export default class StatusBadge extends Mixins(StakingMixin) { get soraStakingAPYFormatted(): string { - return formatDecimalPlaces(this.maxApy, true); + return asZeroValue(this.maxApy) ? this.t('calculatingText') : formatDecimalPlaces(this.maxApy, true); } } diff --git a/src/store/bridge/actions.ts b/src/store/bridge/actions.ts index 02fcb9605..8e651c005 100644 --- a/src/store/bridge/actions.ts +++ b/src/store/bridge/actions.ts @@ -33,7 +33,6 @@ import { subBridgeConnector } from '@/utils/bridge/sub/classes/adapter'; import { updateSubBridgeHistory } from '@/utils/bridge/sub/classes/history'; import ethersUtil from '@/utils/ethers-util'; -import type { SignTxResult } from './types'; import type { SwapQuote } from '@sora-substrate/liquidity-proxy/build/types'; import type { IBridgeTransaction, CodecString } from '@sora-substrate/util'; import type { RegisteredAccountAsset } from '@sora-substrate/util/build/assets/types'; @@ -647,7 +646,7 @@ const actions = defineActions({ return bridgeHistory; }, - async signEthBridgeOutgoingEvm(context, id: string): Promise { + async signEthBridgeOutgoingEvm(context, id: string): Promise { const { rootState, rootGetters } = bridgeActionContext(context); const tx = ethBridgeApi.getHistory(id) as Nullable; @@ -678,15 +677,11 @@ const actions = defineActions({ }); const transaction: ethers.TransactionResponse = await contract[method](...args); - const fee = transaction.gasPrice ? ethersUtil.calcEvmFee(transaction.gasPrice, transaction.gasLimit) : undefined; - return { - hash: transaction.hash, - fee, - }; + return transaction; }, - async signEthBridgeIncomingEvm(context, id: string): Promise { + async signEthBridgeIncomingEvm(context, id: string): Promise { const { commit, rootState, rootGetters } = bridgeActionContext(context); const tx = ethBridgeApi.getHistory(id); @@ -717,14 +712,14 @@ const actions = defineActions({ MaxUint256, // uint256 amount ]; - let transaction: any; + let transaction: ethers.TransactionResponse; try { checkEvmNetwork(context); transaction = await tokenInstance.approve(...methodArgs); } finally { commit.removeTxIdFromApprove(tx.id); // change ui state after approve in client } - await waitForEvmTransactionMined(transaction.hash); // wait for 1 confirm block + await waitForEvmTransactionMined(transaction); // wait for 1 confirm block } const { contract, method, args } = await getIncomingEvmTransactionData({ @@ -737,11 +732,8 @@ const actions = defineActions({ checkEvmNetwork(context); const transaction: ethers.TransactionResponse = await contract[method](...args); - const fee = transaction.gasPrice ? ethersUtil.calcEvmFee(transaction.gasPrice, transaction.gasLimit) : undefined; - return { - hash: transaction.hash, - fee, - }; + + return transaction; }, }); diff --git a/src/store/bridge/types.ts b/src/store/bridge/types.ts index e95d56dba..683f4ce27 100644 --- a/src/store/bridge/types.ts +++ b/src/store/bridge/types.ts @@ -35,8 +35,3 @@ export type BridgeState = { inProgressIds: Record; notificationData: Nullable; }; - -export type SignTxResult = { - hash: string; - fee: Nullable; -}; diff --git a/src/store/moonpay/actions.ts b/src/store/moonpay/actions.ts index 74845d866..b23cd4384 100644 --- a/src/store/moonpay/actions.ts +++ b/src/store/moonpay/actions.ts @@ -56,17 +56,15 @@ const actions = defineActions({ }, async getTransactionTranserData(_, hash: string): Promise> { try { - const confirmations = 1; - const timeout = 0; const ethersInstance = ethersUtil.getEthersInstance(); console.info(`Moonpay: found latest moonpay transaction.\nChecking ethereum transaction by hash:\n${hash}`); // wait until transaction complete // ISSUE: moonpay sending eth in ropsten, erc20 in rinkeby - await ethersInstance.waitForTransaction(hash, confirmations, timeout); + await ethersInstance.waitForTransaction(hash); - const tx = await ethersInstance.getTransaction(hash); + const tx = await ethersUtil.getEvmTransaction(hash); if (!tx) throw new Error(`Transaction "${hash}" not found`); diff --git a/src/utils/bridge/common/types.ts b/src/utils/bridge/common/types.ts index a6577b924..d91b25acb 100644 --- a/src/utils/bridge/common/types.ts +++ b/src/utils/bridge/common/types.ts @@ -1,5 +1,6 @@ import type { IBridgeTransaction } from '@sora-substrate/util'; import type { RegisteredAccountAsset } from '@sora-substrate/util/build/assets/types'; +import type { TransactionResponse } from 'ethers'; export type AddAsset = (address: string) => Promise; export type GetAssetByAddress = (address: string) => Nullable; @@ -11,7 +12,7 @@ export type GetTransaction = (id: string) => T; export type UpdateTransaction = (id: string, params: Partial) => void; export type ShowNotification = (tx: T) => void; export type BeforeTransactionSign = () => Promise; -export type SignExternal = (id: string) => Promise; +export type SignExternal = (id: string) => Promise; export type TransactionBoundaryStates = Partial< Record< T['type'], diff --git a/src/utils/bridge/common/utils.ts b/src/utils/bridge/common/utils.ts index 5d411a239..37c9737a9 100644 --- a/src/utils/bridge/common/utils.ts +++ b/src/utils/bridge/common/utils.ts @@ -13,38 +13,29 @@ import type { EthHistory } from '@sora-substrate/util/build/bridgeProxy/eth/type import type { EvmHistory } from '@sora-substrate/util/build/bridgeProxy/evm/types'; import type { SubHistory } from '@sora-substrate/util/build/bridgeProxy/sub/types'; -const waitForEvmTransactionStatus = async ( - hash: string, - replaceCallback: (hash: string) => any, - cancelCallback: (hash: string) => any -) => { +export const waitForEvmTransactionMined = async ( + tx: ethers.TransactionResponse | null, + replaceCallback?: (tx: ethers.TransactionResponse | null) => void +): Promise => { + if (!tx) throw new Error('[waitForEvmTransactionMined]: tx cannot be empty!'); + try { - const ethersInstance = ethersUtil.getEthersInstance(); - await ethersInstance.waitForTransaction(hash); - } catch (error: any) { + const startBlock = tx.blockNumber ?? (await ethersUtil.getBlockNumber()); + const replaceableTx = tx.replaceableTransaction(startBlock); + const txReceipt = await replaceableTx.wait(); + + return txReceipt; + } catch (error) { if (ethers.isError(error, 'TRANSACTION_REPLACED')) { - if (error.reason === 'cancelled') { - cancelCallback(error.replacement.hash); - } else { - replaceCallback(error.replacement.hash); - } - } - } -}; + const replacedTx = error.replacement; -export const waitForEvmTransactionMined = async (hash?: string, updatedCallback?: (hash: string) => void) => { - if (!hash) throw new Error('[waitForEvmTransactionMined]: hash cannot be empty!'); - - await waitForEvmTransactionStatus( - hash, - async (replaceHash: string) => { - updatedCallback?.(replaceHash); - await waitForEvmTransactionMined(replaceHash, updatedCallback); - }, - (cancelHash) => { - throw new Error(`[waitForEvmTransactionMined]: The transaction was canceled by the user [${cancelHash}]`); + replaceCallback?.(replacedTx); + + return await waitForEvmTransactionMined(replacedTx, replaceCallback); } - ); + + throw error; + } }; export const getEvmTransactionRecieptByHash = async ( @@ -55,11 +46,9 @@ export const getEvmTransactionRecieptByHash = async ( if (!receipt) throw new Error(`Transaction receipt "${transactionHash}" not found`); - const { from, gasPrice, gasUsed, blockNumber, blockHash } = receipt; - - const fee = ethersUtil.calcEvmFee(gasPrice, gasUsed); + const { fee, from, blockNumber, blockHash } = receipt; - return { fee, blockHash, blockNumber, from }; + return { fee: fee.toString(), blockHash, blockNumber, from }; } catch (error) { return null; } diff --git a/src/utils/bridge/eth/classes/reducers.ts b/src/utils/bridge/eth/classes/reducers.ts index 6367f6011..9ea449912 100644 --- a/src/utils/bridge/eth/classes/reducers.ts +++ b/src/utils/bridge/eth/classes/reducers.ts @@ -3,14 +3,16 @@ import first from 'lodash/fp/first'; import { BridgeReducer } from '@/utils/bridge/common/classes'; import type { IBridgeReducerOptions, GetBridgeHistoryInstance, SignExternal } from '@/utils/bridge/common/types'; -import { - getEvmTransactionRecieptByHash, - getTransactionEvents, - waitForEvmTransactionMined, -} from '@/utils/bridge/common/utils'; +import { getTransactionEvents, waitForEvmTransactionMined } from '@/utils/bridge/common/utils'; import { ethBridgeApi } from '@/utils/bridge/eth/api'; import type { EthBridgeHistory } from '@/utils/bridge/eth/classes/history'; -import { getTransaction, waitForApprovedRequest, waitForIncomingRequest } from '@/utils/bridge/eth/utils'; +import { + getTransaction, + getTransactionFee, + waitForApprovedRequest, + waitForIncomingRequest, +} from '@/utils/bridge/eth/utils'; +import ethersUtil from '@/utils/ethers-util'; import type { IBridgeTransaction } from '@sora-substrate/util'; import type { RegisteredAccountAsset } from '@sora-substrate/util/build/assets/types'; @@ -39,12 +41,21 @@ export class EthBridgeReducer extends BridgeReducer { async onEvmPending(id: string): Promise { const tx = this.getTransaction(id); - const updatedCallback = (externalHash: string) => this.updateTransactionParams(id, { externalHash }); + const hash = tx.externalHash; - await waitForEvmTransactionMined(tx.externalHash, updatedCallback); + if (!hash) throw new Error(`[${this.constructor.name}]: Ethereum transaction hash is empty`); + + const txResponse = await ethersUtil.getEvmTransaction(hash); + const txReceipt = await waitForEvmTransactionMined(txResponse, (replacedTx) => { + if (replacedTx) { + this.updateTransactionParams(id, { + externalHash: replacedTx.hash, + externalNetworkFee: getTransactionFee(replacedTx), + }); + } + }); - const { fee, blockNumber, blockHash } = - (await getEvmTransactionRecieptByHash(this.getTransaction(id).externalHash as string)) || {}; + const { fee, blockNumber, blockHash } = txReceipt || {}; if (!(fee && blockNumber && blockHash)) { this.updateTransactionParams(id, { externalHash: undefined, externalNetworkFee: undefined }); @@ -55,7 +66,7 @@ export class EthBridgeReducer extends BridgeReducer { // In EthHistory 'blockHeight' will store evm block number this.updateTransactionParams(id, { - externalNetworkFee: fee, + externalNetworkFee: fee.toString(), externalBlockHeight: blockNumber, externalBlockId: blockHash, }); @@ -68,11 +79,11 @@ export class EthBridgeReducer extends BridgeReducer { this.beforeSubmit(id); try { - const { hash: externalHash, fee } = await signExternal(id); - + const signedTx = await signExternal(id); + // update after sign this.updateTransactionParams(id, { - externalHash, - externalNetworkFee: fee ?? tx.externalNetworkFee, + externalHash: signedTx.hash, + externalNetworkFee: getTransactionFee(signedTx), }); } catch (error: any) { // maybe transaction already completed, try to restore ethereum transaction hash diff --git a/src/utils/bridge/eth/utils.ts b/src/utils/bridge/eth/utils.ts index 1feed0caf..8fc63cb1d 100644 --- a/src/utils/bridge/eth/utils.ts +++ b/src/utils/bridge/eth/utils.ts @@ -57,14 +57,16 @@ export const updateTransaction = async (id: string, params = {}) => { }; export const waitForApprovedRequest = async (tx: EthHistory): Promise => { - if (!tx.hash) throw new Error(`[Bridge]: Tx hash cannot be empty`); + const hash = tx.hash; + + if (!hash) throw new Error(`[Bridge]: Tx hash cannot be empty`); if (!Number.isFinite(tx.externalNetwork)) throw new Error(`[Bridge]: Tx externalNetwork should be a number, ${tx.externalNetwork} received`); let subscription!: Subscription; await new Promise((resolve, reject) => { - subscription = ethBridgeApi.subscribeOnRequestStatus(tx.hash as string).subscribe((status) => { + subscription = ethBridgeApi.subscribeOnRequestStatus(hash).subscribe((status) => { switch (status) { case BridgeTxStatus.Failed: case BridgeTxStatus.Frozen: @@ -80,7 +82,11 @@ export const waitForApprovedRequest = async (tx: EthHistory): Promise => { @@ -282,3 +288,10 @@ export async function getEthNetworkFee( return ethersUtil.calcEvmFee(gasPrice, gasLimitTotal); } + +export const getTransactionFee = (tx: ethers.TransactionResponse | ethers.TransactionReceipt) => { + const gasPrice = tx.gasPrice; + const gasAmount = 'gasUsed' in tx ? tx.gasUsed : tx.gasLimit; + + return ethersUtil.calcEvmFee(gasPrice, gasAmount); +}; diff --git a/yarn.lock b/yarn.lock index 5540ef9d0..a83157b94 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2349,71 +2349,71 @@ resolved "https://registry.yarnpkg.com/@soda/get-current-script/-/get-current-script-1.0.2.tgz#a53515db25d8038374381b73af20bb4f2e508d87" integrity sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w== -"@sora-substrate/api@1.31.0": - version "1.31.0" - resolved "https://registry.yarnpkg.com/@sora-substrate/api/-/api-1.31.0.tgz#cb023783e61b522a1409d0c05f4870e109e49040" - integrity sha512-ztn9nhl5TB0uoPZ34sNMainPB55bJs8ZWoKd+liZfWyfMfxRws9DZF0AYehXVczH/I0bUam6Xf0lJOn0AfOi/Q== +"@sora-substrate/api@1.32.9": + version "1.32.9" + resolved "https://registry.yarnpkg.com/@sora-substrate/api/-/api-1.32.9.tgz#73bec73462d285b8d877b67de09989a63f045c4e" + integrity sha512-QQaUxyPrzh6GyZ/GdAgeOBC+ie/GtalnadrGNc136wYJAFK5ncZLsKNPOePrHCe4f/od7noLnzO0P5mMHRWHMQ== dependencies: "@open-web3/orml-api-derive" "1.1.4" "@polkadot/api" "9.14.2" - "@sora-substrate/types" "1.31.0" + "@sora-substrate/types" "1.32.9" -"@sora-substrate/connection@1.31.0": - version "1.31.0" - resolved "https://registry.yarnpkg.com/@sora-substrate/connection/-/connection-1.31.0.tgz#55a32348a87d8a4cfe935a99d06616e5b5bf9c2b" - integrity sha512-vDBkRrn/+0xFQ3ZYczNEXyZ1MIwg8t4jOfCxes+xs+HLvLF46vSm1OEJ78XIngFOVh19H9ofi4kSlWjeaRmx5w== +"@sora-substrate/connection@1.32.9": + version "1.32.9" + resolved "https://registry.yarnpkg.com/@sora-substrate/connection/-/connection-1.32.9.tgz#53d816fad802ab566c4969174f1a3386ad1fd447" + integrity sha512-E4UahadF0UpARxLSalErp17MrwVAKD+XMkQDURzZxTw68rIwmcgsWo6LOFIXJEvLCSHswOujfuzJ/hevhIoaSg== dependencies: - "@sora-substrate/api" "1.31.0" + "@sora-substrate/api" "1.32.9" -"@sora-substrate/liquidity-proxy@1.31.0": - version "1.31.0" - resolved "https://registry.yarnpkg.com/@sora-substrate/liquidity-proxy/-/liquidity-proxy-1.31.0.tgz#57c1dcb1b6d392bc6a8d24f99746cdfd83f24adf" - integrity sha512-LFg0dONnHx0ONGLm5x1hjhfQ+J50+MnHbyoebsQXFaoeWfHtmtvDF9PFD5qdqm6aQJ/QEz60BUIafiL/9oUzSw== +"@sora-substrate/liquidity-proxy@1.32.9": + version "1.32.9" + resolved "https://registry.yarnpkg.com/@sora-substrate/liquidity-proxy/-/liquidity-proxy-1.32.9.tgz#c9e1643fea7a86520bc597aed28fff7db9f760be" + integrity sha512-QoLWveu8F9zk6I9GrgPUTwIosoiVuspktV8o9jOgXqR0ERsufv9B4mCgEbxOR6LaVWDtrnma/8x3m141+nMWug== dependencies: - "@sora-substrate/math" "1.31.0" + "@sora-substrate/math" "1.32.9" -"@sora-substrate/math@1.31.0": - version "1.31.0" - resolved "https://registry.yarnpkg.com/@sora-substrate/math/-/math-1.31.0.tgz#a34cc35fa251a407b78e4c22a6234cfc4b9ade4c" - integrity sha512-OcZ2ZLsP7+OjJHzuieM95lXvNGwNTm/HSgQTOhc4P3RQgyTtxwIyaW5yP55t7SSOzOygA4Rz47tI4K2KyWRs4g== +"@sora-substrate/math@1.32.9": + version "1.32.9" + resolved "https://registry.yarnpkg.com/@sora-substrate/math/-/math-1.32.9.tgz#bd4a37d91206b7c13477a2735fd5ab64a1b8c26d" + integrity sha512-OCpiiYzU0EkQl0tLNPWT5VCTOwzIAJU5p3B+Xpyo9vKueaW0OfCRRHqfqwoLN9MGcZT502ygn9XqbP5171i3LQ== dependencies: "@polkadot/types" "9.14.2" - bignumber.js "^9.0.1" - lodash "^4.17.15" + bignumber.js "^9.1.2" + lodash "^4.17.21" -"@sora-substrate/type-definitions@1.31.0": - version "1.31.0" - resolved "https://registry.yarnpkg.com/@sora-substrate/type-definitions/-/type-definitions-1.31.0.tgz#75ab66b95ae5235a3aa879a938ab18ff484c86f4" - integrity sha512-3p03vVSRcbAGwemflfmHULLfV8Tihqc1Khs48snUy4Ez4COtKtmRlH2g6iapUYoWAhZrP1+9miuQ8nRFHCTlkA== +"@sora-substrate/type-definitions@1.32.9": + version "1.32.9" + resolved "https://registry.yarnpkg.com/@sora-substrate/type-definitions/-/type-definitions-1.32.9.tgz#2edcdafe37dd7b68de656d8177ca2a379a2ec5ec" + integrity sha512-o/MY1ooQULwyp80x9eIsZOxL8rH+zYOcgrhnslsAb5CCW0wgZxnzMnC7GrtXuphyFFfxKB3E13EyqbOfXN1SUA== dependencies: "@open-web3/orml-type-definitions" "1.1.4" -"@sora-substrate/types@1.31.0": - version "1.31.0" - resolved "https://registry.yarnpkg.com/@sora-substrate/types/-/types-1.31.0.tgz#a12f15438d850eb6fe22004a75458e4645ff4212" - integrity sha512-c8zqOc5T87kLmmlwtxVh/65u1Dy0Nz0meftGdJ7YcDCWoJXqIAaG/rMAZlvajO10bWd43jpAUcLERzemncLpgQ== +"@sora-substrate/types@1.32.9": + version "1.32.9" + resolved "https://registry.yarnpkg.com/@sora-substrate/types/-/types-1.32.9.tgz#93554462861a7fd337156d40bba38400fd79a2a1" + integrity sha512-lYlLAwlurlQRknyu1xGuW5vZX/QjxLEI1Pc7MorZHB3KHFXNldmP+RuN0saTz568wYTY3BpYTmUcsXBJagtcbQ== dependencies: "@open-web3/api-mobx" "0.9.4-26" "@open-web3/orml-types" "1.1.4" "@polkadot/api" "9.14.2" "@polkadot/typegen" "9.14.2" "@polkadot/types" "9.14.2" - "@sora-substrate/type-definitions" "1.31.0" + "@sora-substrate/type-definitions" "1.32.9" -"@sora-substrate/util@1.31.0": - version "1.31.0" - resolved "https://registry.yarnpkg.com/@sora-substrate/util/-/util-1.31.0.tgz#89c77add9ddd66980187bae9462a5f2f66d24bd6" - integrity sha512-wn++Jllgr7/40P+ykmQz1WBTFgMK12GvgDEqY+Ufqz35jxLfn/5Mu3U6xQyhFcpODyRkoYor1tewCaCXLkBIrg== +"@sora-substrate/util@1.32.9": + version "1.32.9" + resolved "https://registry.yarnpkg.com/@sora-substrate/util/-/util-1.32.9.tgz#ac9e1afbbf4fb2c87cbd63a49668dbaa989d0f09" + integrity sha512-hffi7Hl0UT0vB3xNyGqkEG6Z9/Ws9OWjNyvhbOW9PzoNrtDR98sa2NTwjUhtA/pm6T9jQmaDQBB78xms2PdiRw== dependencies: "@polkadot/ui-keyring" "2.12.1" - "@sora-substrate/api" "1.31.0" - "@sora-substrate/connection" "1.31.0" - "@sora-substrate/liquidity-proxy" "1.31.0" - "@sora-substrate/math" "1.31.0" - "@sora-substrate/types" "1.31.0" - axios "^0.21.1" - crypto-js "^4.0.0" - lodash "^4.17.15" + "@sora-substrate/api" "1.32.9" + "@sora-substrate/connection" "1.32.9" + "@sora-substrate/liquidity-proxy" "1.32.9" + "@sora-substrate/math" "1.32.9" + "@sora-substrate/types" "1.32.9" + axios "^1.6.7" + crypto-js "^4.2.0" + lodash "^4.17.21" "@sora-test/wallet-connect@^0.0.9": version "0.0.9" @@ -2443,13 +2443,13 @@ vue-property-decorator "^9.1.2" vuex "^3.6.2" -"@soramitsu/soraneo-wallet-web@1.32.0": - version "1.32.0" - resolved "https://nexus.iroha.tech/repository/npm-group/@soramitsu/soraneo-wallet-web/-/soraneo-wallet-web-1.32.0.tgz#bb1dfe4995736c4f28ea868e4ea7e90514cf434d" - integrity sha512-iGPmVXam/Q9GvkFx/8Zs9gftdk+O/UBBI+Y4E7vwRBJF8FdhkmtL1/Je4OFzeVQCuQqWHntexgre1MeL+d3bZw== +"@soramitsu/soraneo-wallet-web@1.32.5": + version "1.32.5" + resolved "https://nexus.iroha.tech/repository/npm-group/@soramitsu/soraneo-wallet-web/-/soraneo-wallet-web-1.32.5.tgz#335267c02cca234b0d6b35a23024612c5bb24b33" + integrity sha512-YJLHlap1ceA+RAqEoIOM6jYISkH4/FFefzVjyGvPiy12hnfzRH7PVQ0UVrVow2213JsGIER2I3hROOEDKip+sQ== dependencies: "@polkadot/vue-identicon" "2.12.1" - "@sora-substrate/util" "1.31.0" + "@sora-substrate/util" "1.32.9" "@sora-test/wallet-connect" "^0.0.9" "@soramitsu-ui/ui-vue2" "^1.1.1" "@urql/core" "^4.1.2" @@ -2457,7 +2457,7 @@ "@zxing/library" "^0.20.0" base-64 "^1.0.0" core-js "^3.32.2" - crypto-js "^4.1.1" + crypto-js "^4.2.0" crypto-random-string "^5.0.0" dayjs "^1.11.9" direct-vuex "^0.12.1" @@ -4520,12 +4520,14 @@ available-typed-arrays@^1.0.5: resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -axios@^0.21.1: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== +axios@^1.6.7: + version "1.6.7" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.7.tgz#7b48c2e27c96f9c68a2f8f31e2ab19f59b06b0a7" + integrity sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA== dependencies: - follow-redirects "^1.14.0" + follow-redirects "^1.15.4" + form-data "^4.0.0" + proxy-from-env "^1.1.0" babel-helper-vue-jsx-merge-props@^2.0.0: version "2.0.3" @@ -4682,7 +4684,7 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -bignumber.js@^9.0.1: +bignumber.js@^9.1.2: version "9.1.2" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== @@ -5808,10 +5810,10 @@ crypto-browserify@^3.12.0: randombytes "^2.0.0" randomfill "^1.0.3" -crypto-js@^4.0.0, crypto-js@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf" - integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== +crypto-js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" + integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== crypto-random-string@^2.0.0: version "2.0.0" @@ -7519,10 +7521,10 @@ flatted@^3.2.7: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== -follow-redirects@^1.0.0, follow-redirects@^1.14.0: - version "1.15.3" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" - integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== +follow-redirects@^1.0.0, follow-redirects@^1.15.4: + version "1.15.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== for-each@^0.3.3: version "0.3.3" @@ -11967,6 +11969,11 @@ proxy-compare@2.5.1: resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-2.5.1.tgz#17818e33d1653fbac8c2ec31406bce8a2966f600" integrity sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA== +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -13805,11 +13812,6 @@ uncrypto@^0.1.3: resolved "https://registry.yarnpkg.com/uncrypto/-/uncrypto-0.1.3.tgz#e1288d609226f2d02d8d69ee861fa20d8348ef2b" integrity sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q== -undici-types@~5.25.1: - version "5.25.3" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.25.3.tgz#e044115914c85f0bcbb229f346ab739f064998c3" - integrity sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA== - undici-types@~5.26.4: version "5.26.5" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"