@lifi/widget 3.30.10 → 3.30.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/dist/esm/components/RouteCard/RouteCard.js +3 -3
- package/dist/esm/components/RouteCard/RouteCard.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteCardEssentials.js +3 -5
- package/dist/esm/components/RouteCard/RouteCardEssentials.js.map +1 -1
- package/dist/esm/components/StepActions/StepActions.js +3 -3
- package/dist/esm/components/TokenList/TokenList.js +0 -1
- package/dist/esm/components/TokenList/TokenList.js.map +1 -1
- package/dist/esm/components/TransactionDetails.js +7 -7
- package/dist/esm/components/TransactionDetails.js.map +1 -1
- package/dist/esm/config/version.d.ts +1 -1
- package/dist/esm/config/version.js +1 -1
- package/dist/esm/hooks/useGasRecommendation.js +4 -2
- package/dist/esm/hooks/useGasRecommendation.js.map +1 -1
- package/dist/esm/hooks/useGasRefuel.js +6 -1
- package/dist/esm/hooks/useGasRefuel.js.map +1 -1
- package/dist/esm/hooks/useGasSufficiency.js +2 -3
- package/dist/esm/hooks/useGasSufficiency.js.map +1 -1
- package/dist/esm/hooks/useRoutes.js +2 -2
- package/dist/esm/hooks/useRoutes.js.map +1 -1
- package/dist/esm/i18n/bn.json +1 -0
- package/dist/esm/i18n/de.json +1 -0
- package/dist/esm/i18n/es.json +1 -0
- package/dist/esm/i18n/fr.json +1 -0
- package/dist/esm/i18n/hi.json +1 -0
- package/dist/esm/i18n/id.json +1 -0
- package/dist/esm/i18n/it.json +1 -0
- package/dist/esm/i18n/ja.json +1 -0
- package/dist/esm/i18n/ko.json +1 -0
- package/dist/esm/i18n/pl.json +1 -0
- package/dist/esm/i18n/pt.json +2 -1
- package/dist/esm/i18n/th.json +1 -0
- package/dist/esm/i18n/tr.json +1 -0
- package/dist/esm/i18n/uk.json +10 -9
- package/dist/esm/i18n/vi.json +1 -0
- package/dist/esm/i18n/zh.json +1 -0
- package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js +2 -4
- package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js.map +1 -1
- package/dist/esm/stores/chains/createChainOrderStore.js +9 -1
- package/dist/esm/stores/chains/createChainOrderStore.js.map +1 -1
- package/dist/esm/types/events.d.ts +34 -27
- package/dist/esm/types/events.js +13 -12
- package/dist/esm/types/events.js.map +1 -1
- package/package.json +4 -4
- package/package.json.tmp +3 -3
- package/src/components/RouteCard/RouteCard.tsx +3 -3
- package/src/components/RouteCard/RouteCardEssentials.tsx +4 -5
- package/src/components/StepActions/StepActions.tsx +3 -3
- package/src/components/TokenList/TokenList.tsx +0 -1
- package/src/components/TransactionDetails.tsx +8 -8
- package/src/config/version.ts +1 -1
- package/src/hooks/useGasRecommendation.ts +5 -2
- package/src/hooks/useGasRefuel.ts +6 -2
- package/src/hooks/useGasSufficiency.ts +1 -2
- package/src/hooks/useRoutes.ts +2 -3
- package/src/i18n/bn.json +1 -0
- package/src/i18n/de.json +1 -0
- package/src/i18n/es.json +1 -0
- package/src/i18n/fr.json +1 -0
- package/src/i18n/hi.json +1 -0
- package/src/i18n/id.json +1 -0
- package/src/i18n/it.json +1 -0
- package/src/i18n/ja.json +1 -0
- package/src/i18n/ko.json +1 -0
- package/src/i18n/pl.json +1 -0
- package/src/i18n/pt.json +2 -1
- package/src/i18n/th.json +1 -0
- package/src/i18n/tr.json +1 -0
- package/src/i18n/uk.json +10 -9
- package/src/i18n/vi.json +1 -0
- package/src/i18n/zh.json +1 -0
- package/src/pages/TransactionPage/TokenValueBottomSheet.tsx +2 -7
- package/src/stores/chains/createChainOrderStore.ts +9 -1
- package/src/types/events.ts +36 -27
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { useAccount } from '@lifi/wallet-management'
|
|
2
2
|
import { useMemo } from 'react'
|
|
3
|
+
import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'
|
|
3
4
|
import { useFieldValues } from '../stores/form/useFieldValues.js'
|
|
5
|
+
import { HiddenUI } from '../types/widget.js'
|
|
4
6
|
import { useAvailableChains } from './useAvailableChains.js'
|
|
5
7
|
import { useGasRecommendation } from './useGasRecommendation.js'
|
|
6
8
|
import { useIsContractAddress } from './useIsContractAddress.js'
|
|
@@ -8,7 +10,7 @@ import { useTokenBalance } from './useTokenBalance.js'
|
|
|
8
10
|
|
|
9
11
|
export const useGasRefuel = () => {
|
|
10
12
|
const { getChainById } = useAvailableChains()
|
|
11
|
-
|
|
13
|
+
const { hiddenUI } = useWidgetConfig()
|
|
12
14
|
const [fromChainId, fromTokenAddress, toChainId, toAddress] = useFieldValues(
|
|
13
15
|
'fromChain',
|
|
14
16
|
'fromToken',
|
|
@@ -56,7 +58,8 @@ export const useGasRefuel = () => {
|
|
|
56
58
|
!gasRecommendation?.recommended ||
|
|
57
59
|
!destinationNativeToken ||
|
|
58
60
|
!isChainTypeSatisfied ||
|
|
59
|
-
!isToAddressSatisfied
|
|
61
|
+
!isToAddressSatisfied ||
|
|
62
|
+
hiddenUI?.includes(HiddenUI.GasRefuelMessage)
|
|
60
63
|
) {
|
|
61
64
|
return false
|
|
62
65
|
}
|
|
@@ -74,6 +77,7 @@ export const useGasRefuel = () => {
|
|
|
74
77
|
isToAddressSatisfied,
|
|
75
78
|
destinationNativeToken,
|
|
76
79
|
toChainId,
|
|
80
|
+
hiddenUI,
|
|
77
81
|
])
|
|
78
82
|
|
|
79
83
|
return {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EVMChain, RouteExtended, Token, TokenAmount } from '@lifi/sdk'
|
|
2
|
-
import { ChainType
|
|
2
|
+
import { ChainType } from '@lifi/sdk'
|
|
3
3
|
import { useAccount } from '@lifi/wallet-management'
|
|
4
4
|
import { useQuery } from '@tanstack/react-query'
|
|
5
5
|
import { useMemo } from 'react'
|
|
@@ -73,7 +73,6 @@ export const useGasSufficiency = (route?: RouteExtended) => {
|
|
|
73
73
|
// Filter out steps that are relayer steps or have primaryType 'Permit' or 'Order'
|
|
74
74
|
const filteredSteps = route.steps.filter(
|
|
75
75
|
(step) =>
|
|
76
|
-
!isRelayerStep(step) &&
|
|
77
76
|
!step.typedData?.some(
|
|
78
77
|
(t) => t.primaryType === 'Permit' || t.primaryType === 'Order'
|
|
79
78
|
)
|
package/src/hooks/useRoutes.ts
CHANGED
|
@@ -6,7 +6,6 @@ import {
|
|
|
6
6
|
getRelayerQuote,
|
|
7
7
|
getRoutes,
|
|
8
8
|
isGaslessStep,
|
|
9
|
-
isRelayerStep,
|
|
10
9
|
LiFiErrorCode,
|
|
11
10
|
} from '@lifi/sdk'
|
|
12
11
|
import { useAccount } from '@lifi/wallet-management'
|
|
@@ -332,8 +331,8 @@ export const useRoutes = ({ observableRoute }: RoutesProps = {}) => {
|
|
|
332
331
|
return
|
|
333
332
|
}
|
|
334
333
|
|
|
335
|
-
const isObservableRelayerRoute = observableRoute?.steps?.some(
|
|
336
|
-
|
|
334
|
+
const isObservableRelayerRoute = observableRoute?.steps?.some((step) =>
|
|
335
|
+
isGaslessStep(step, fromChain)
|
|
337
336
|
)
|
|
338
337
|
|
|
339
338
|
const shouldUseMainRoutes =
|
package/src/i18n/bn.json
CHANGED
package/src/i18n/de.json
CHANGED
|
@@ -174,6 +174,7 @@
|
|
|
174
174
|
"exchangeRateUpdateCanceled": "",
|
|
175
175
|
"gasLimitIsTooLow": "Das Gaslimit ist zu niedrig",
|
|
176
176
|
"insufficientFunds": "Unzureichendes Guthaben",
|
|
177
|
+
"insufficientGas": "",
|
|
177
178
|
"rateLimitExceeded": "",
|
|
178
179
|
"signatureRejected": "",
|
|
179
180
|
"slippageNotMet": "Slippagebedingungen nicht erfüllt",
|
package/src/i18n/es.json
CHANGED
|
@@ -174,6 +174,7 @@
|
|
|
174
174
|
"exchangeRateUpdateCanceled": "Actualización del tipo de cambio cancelada",
|
|
175
175
|
"gasLimitIsTooLow": "Límite de gas es demasiado bajo",
|
|
176
176
|
"insufficientFunds": "Fondos insuficientes",
|
|
177
|
+
"insufficientGas": "",
|
|
177
178
|
"rateLimitExceeded": "",
|
|
178
179
|
"signatureRejected": "Firma requerida",
|
|
179
180
|
"slippageNotMet": "Condiciones de slippage no cumplidas",
|
package/src/i18n/fr.json
CHANGED
|
@@ -174,6 +174,7 @@
|
|
|
174
174
|
"exchangeRateUpdateCanceled": "Mise à jour du taux de change annulée",
|
|
175
175
|
"gasLimitIsTooLow": "La limite de gaz est trop basse.",
|
|
176
176
|
"insufficientFunds": "Fonds insuffisants",
|
|
177
|
+
"insufficientGas": "",
|
|
177
178
|
"rateLimitExceeded": "",
|
|
178
179
|
"signatureRejected": "Signature requise",
|
|
179
180
|
"slippageNotMet": "Les conditions de l'effet de glissement ne sont pas remplies.",
|
package/src/i18n/hi.json
CHANGED
package/src/i18n/id.json
CHANGED
|
@@ -174,6 +174,7 @@
|
|
|
174
174
|
"exchangeRateUpdateCanceled": "Pembaruan nilai tukar dibatalkan",
|
|
175
175
|
"gasLimitIsTooLow": "Gas limit terlalu rendah",
|
|
176
176
|
"insufficientFunds": "Dana tidak mencukupi",
|
|
177
|
+
"insufficientGas": "",
|
|
177
178
|
"rateLimitExceeded": "",
|
|
178
179
|
"signatureRejected": "Tanda tangan diperlukan",
|
|
179
180
|
"slippageNotMet": "Kondisi slippage tidak terpenuhi",
|
package/src/i18n/it.json
CHANGED
|
@@ -174,6 +174,7 @@
|
|
|
174
174
|
"exchangeRateUpdateCanceled": "",
|
|
175
175
|
"gasLimitIsTooLow": "Limite di gas troppo basso",
|
|
176
176
|
"insufficientFunds": "Fondi insufficienti",
|
|
177
|
+
"insufficientGas": "",
|
|
177
178
|
"rateLimitExceeded": "",
|
|
178
179
|
"signatureRejected": "",
|
|
179
180
|
"slippageNotMet": "Condizioni di slittamento di prezzo non rispettate",
|
package/src/i18n/ja.json
CHANGED
|
@@ -174,6 +174,7 @@
|
|
|
174
174
|
"exchangeRateUpdateCanceled": "交換レートの更新がキャンセルされました",
|
|
175
175
|
"gasLimitIsTooLow": "ガス制限が低すぎます",
|
|
176
176
|
"insufficientFunds": "残高が足りません",
|
|
177
|
+
"insufficientGas": "",
|
|
177
178
|
"rateLimitExceeded": "",
|
|
178
179
|
"signatureRejected": "署名が必要です",
|
|
179
180
|
"slippageNotMet": "スリッページの条件が満たされていません",
|
package/src/i18n/ko.json
CHANGED
|
@@ -174,6 +174,7 @@
|
|
|
174
174
|
"exchangeRateUpdateCanceled": "교환 비율 갱신이 취소되었습니다",
|
|
175
175
|
"gasLimitIsTooLow": "가스 한도가 너무 낮습니다",
|
|
176
176
|
"insufficientFunds": "잔고 부족",
|
|
177
|
+
"insufficientGas": "",
|
|
177
178
|
"rateLimitExceeded": "",
|
|
178
179
|
"signatureRejected": "서명이 필요합니다.",
|
|
179
180
|
"slippageNotMet": "슬리피지 조건을 충족하지 못했습니다.",
|
package/src/i18n/pl.json
CHANGED
package/src/i18n/pt.json
CHANGED
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"emptyBridgesList": "Não conseguimos encontrar nenhuma ponte que corresponda à sua pesquisa",
|
|
93
93
|
"emptyChainList": "Não conseguimos encontrar nenhuma rede que corresponda à sua pesquisa",
|
|
94
94
|
"emptyExchangesList": "Não conseguimos encontrar nenhuma corretora que corresponda à sua pesquisa",
|
|
95
|
-
"emptyTokenListAllNetworks": "",
|
|
95
|
+
"emptyTokenListAllNetworks": "Não conseguimos encontrar nenhum token. Por favor, busque por endereço de contrato se o token não aparecer, ou tente selecionar uma cadeia diferente.",
|
|
96
96
|
"emptyTransactionHistory": "O histórico de transações é armazenado apenas localmente e será excluído se você limpar os dados do seu navegador.",
|
|
97
97
|
"routeNotFound": "Razões para isso podem ser: baixa liquidez, valor selecionado é muito baixo, os custos com gás são muito elevados ou não há rotas para a combinação selecionada.",
|
|
98
98
|
"toAddressIsRequired": "O endereço da carteira de destino é necessário para continuar com a transferência.",
|
|
@@ -174,6 +174,7 @@
|
|
|
174
174
|
"exchangeRateUpdateCanceled": "Atualização da taxa de conversão cancelada",
|
|
175
175
|
"gasLimitIsTooLow": "O limite de gás é muito baixo",
|
|
176
176
|
"insufficientFunds": "Saldo insuficiente",
|
|
177
|
+
"insufficientGas": "Saldo insuficiente",
|
|
177
178
|
"rateLimitExceeded": "Limite de tentativas excedido",
|
|
178
179
|
"signatureRejected": "Necessário assinatura",
|
|
179
180
|
"slippageNotMet": "Condições de tolerância a discrepâncias não foram atendidas",
|
package/src/i18n/th.json
CHANGED
|
@@ -174,6 +174,7 @@
|
|
|
174
174
|
"exchangeRateUpdateCanceled": "การอัปเดตอัตราแลกเปลี่ยนถูกยกเลิก",
|
|
175
175
|
"gasLimitIsTooLow": "แก๊สคงเหลือต่ำเกินไป",
|
|
176
176
|
"insufficientFunds": "ยอดคงเหลือไม่เพียงพอ",
|
|
177
|
+
"insufficientGas": "",
|
|
177
178
|
"rateLimitExceeded": "",
|
|
178
179
|
"signatureRejected": "ต้องมีลายเซ็น",
|
|
179
180
|
"slippageNotMet": "ความคลาดเคลื่อนของราคาไม่เป็นไปตามเงื่อนไข.",
|
package/src/i18n/tr.json
CHANGED
|
@@ -174,6 +174,7 @@
|
|
|
174
174
|
"exchangeRateUpdateCanceled": "Fiyat güncellemesi iptal edildi",
|
|
175
175
|
"gasLimitIsTooLow": "Gaz limiti çok düşük",
|
|
176
176
|
"insufficientFunds": "Yetersiz bakiye",
|
|
177
|
+
"insufficientGas": "",
|
|
177
178
|
"rateLimitExceeded": "",
|
|
178
179
|
"signatureRejected": "İmza gerekiyor",
|
|
179
180
|
"slippageNotMet": "Slipaj koşulları karşılanmadı",
|
package/src/i18n/uk.json
CHANGED
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"getGas": "Отримати газ",
|
|
37
37
|
"learnMore": "Докладніше",
|
|
38
38
|
"light": "Світла",
|
|
39
|
-
"max": "",
|
|
39
|
+
"max": "МАКС",
|
|
40
40
|
"ok": "Ок",
|
|
41
41
|
"options": "Опції",
|
|
42
42
|
"removeTransaction": "Видалити транзакцію",
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"emptyBridgesList": "Ми не змогли знайти жодного моста, що відповідає вашому запиту",
|
|
93
93
|
"emptyChainList": "Ми не змогли знайти жодного чейна, що відповідає вашому запиту",
|
|
94
94
|
"emptyExchangesList": "Ми не змогли знайти жодного обмінника, що відповідає вашому запиту",
|
|
95
|
-
"emptyTokenListAllNetworks": "",
|
|
95
|
+
"emptyTokenListAllNetworks": "Не вдалося знайти жодного токена. Будь ласка, пошукайте за адресою токена або спробуйте вибрати інший чейн.",
|
|
96
96
|
"emptyTransactionHistory": "Історія транзакцій зберігається лише локально та буде видалена, якщо ви очистите дані браузера.",
|
|
97
97
|
"routeNotFound": "Причинами цього можуть бути: низька ліквідність, вибрана надто низька сума, занадто високі витрати на газ або відсутність маршрутів для вибраної комбінації.",
|
|
98
98
|
"toAddressIsRequired": "Для продовження переказу необхідно вказати адресу гаманця одержувача.",
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
"highValueLoss": "Вартість отриманих токенів значно нижча, ніж обмінені токени та вартість транзакції.",
|
|
130
130
|
"insufficientFunds": "У вас недостатньо коштів для здійснення свопу.",
|
|
131
131
|
"insufficientGas": "Для завершення свопа у вас недостатньо газу. Вам необхідно додати хоча б:",
|
|
132
|
-
"minFromAmountUSD": "",
|
|
132
|
+
"minFromAmountUSD": "Мінімальна сума {{amount, currencyExt(currency: USD)}}. Будь ласка, введіть більшу суму.",
|
|
133
133
|
"rateChanged": "Курс обміну змінився. Продовжуючи своп, ви приймете новий курс.",
|
|
134
134
|
"resetSettings": "Це скине пріоритет вашого маршруту, прослизання, ціну газу, увімкнені бриджі та обмінники.",
|
|
135
135
|
"slippageOutsideRecommendedLimits": "Високий допуск до прослизання може призвести до несприятливої торгівлі через фронт-біг.",
|
|
@@ -174,6 +174,7 @@
|
|
|
174
174
|
"exchangeRateUpdateCanceled": "Оновлення обмінного курсу скасовано",
|
|
175
175
|
"gasLimitIsTooLow": "Занадто низький ліміт газу",
|
|
176
176
|
"insufficientFunds": "Недостатньо коштів",
|
|
177
|
+
"insufficientGas": "Недостатня кількість газу",
|
|
177
178
|
"rateLimitExceeded": "Перевищено ліміт запитів",
|
|
178
179
|
"signatureRejected": "Підпис обов'язковий",
|
|
179
180
|
"slippageNotMet": "Не виконані умови прослизання",
|
|
@@ -212,7 +213,7 @@
|
|
|
212
213
|
"slippage": "Максимальна процентна різниця між очікуваною ціною і фактичною ціною з якою виконується трансфер. Ця величина може бути змінена в налаштуваннях."
|
|
213
214
|
},
|
|
214
215
|
"main": {
|
|
215
|
-
"allNetworks": "",
|
|
216
|
+
"allNetworks": "Всі мережі",
|
|
216
217
|
"allTokens": "Всі токени",
|
|
217
218
|
"bridgeStepDetails": "Бридж з {{from}} до {{to}} через {{tool}}",
|
|
218
219
|
"checkoutStepDetails": "Купівля через {{tool}}",
|
|
@@ -241,7 +242,7 @@
|
|
|
241
242
|
"process": {
|
|
242
243
|
"bridge": {
|
|
243
244
|
"actionRequired": "Підпишіть бридж транзакцію",
|
|
244
|
-
"messageRequired": "",
|
|
245
|
+
"messageRequired": "Підпишіть брідж повідомлення",
|
|
245
246
|
"done": "Бридж транзакцію схвалено",
|
|
246
247
|
"pending": "Очікування бридж операції",
|
|
247
248
|
"started": "Підготовка бридж транзакції"
|
|
@@ -260,7 +261,7 @@
|
|
|
260
261
|
},
|
|
261
262
|
"swap": {
|
|
262
263
|
"actionRequired": "Підпишіть своп транзакцію",
|
|
263
|
-
"messageRequired": "",
|
|
264
|
+
"messageRequired": "Підпишіть своп повідомлення",
|
|
264
265
|
"done": "Своп завершено",
|
|
265
266
|
"pending": "Очікування своп операції",
|
|
266
267
|
"started": "Підготовка своп транзакції"
|
|
@@ -313,7 +314,7 @@
|
|
|
313
314
|
"valueLoss": "Втрата вартості",
|
|
314
315
|
"searchBridges": "Пошук за назвою моста",
|
|
315
316
|
"searchExchanges": "Пошук за назвою обмінника",
|
|
316
|
-
"searchNetwork": ""
|
|
317
|
+
"searchNetwork": "Пошук мережі"
|
|
317
318
|
},
|
|
318
319
|
"settings": {
|
|
319
320
|
"appearance": "Вигляд",
|
|
@@ -345,7 +346,7 @@
|
|
|
345
346
|
"tokenMetric": {
|
|
346
347
|
"currentPrice": "Поточна ціна",
|
|
347
348
|
"contractAddress": "Адреса контракту",
|
|
348
|
-
"marketCap": "",
|
|
349
|
-
"volume24h": ""
|
|
349
|
+
"marketCap": "Ринкова капіталізація",
|
|
350
|
+
"volume24h": "Обсяг 24г"
|
|
350
351
|
}
|
|
351
352
|
}
|
package/src/i18n/vi.json
CHANGED
|
@@ -174,6 +174,7 @@
|
|
|
174
174
|
"exchangeRateUpdateCanceled": "Đã hủy cập nhật tỷ giá",
|
|
175
175
|
"gasLimitIsTooLow": "Giới hạn gas quá thấp",
|
|
176
176
|
"insufficientFunds": "Không đủ tài sản",
|
|
177
|
+
"insufficientGas": "",
|
|
177
178
|
"rateLimitExceeded": "",
|
|
178
179
|
"signatureRejected": "Yêu cầu chữ ký",
|
|
179
180
|
"slippageNotMet": "Điều kiện trượt giá không được đáp ứng",
|
package/src/i18n/zh.json
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { Route } from '@lifi/sdk'
|
|
2
|
-
import { isRelayerStep } from '@lifi/sdk'
|
|
3
2
|
import WarningRounded from '@mui/icons-material/WarningRounded'
|
|
4
3
|
import { Box, Button, Typography } from '@mui/material'
|
|
5
4
|
import type { RefObject } from 'react'
|
|
@@ -51,7 +50,6 @@ const TokenValueBottomSheetContent: React.FC<TokenValueBottomSheetProps> = ({
|
|
|
51
50
|
getAccumulatedFeeCostsBreakdown(route)
|
|
52
51
|
const fromAmountUSD = Number.parseFloat(route.fromAmountUSD)
|
|
53
52
|
const toAmountUSD = Number.parseFloat(route.toAmountUSD)
|
|
54
|
-
const hasRelayerSupport = route.steps.every(isRelayerStep)
|
|
55
53
|
return (
|
|
56
54
|
<Box
|
|
57
55
|
ref={ref}
|
|
@@ -104,16 +102,13 @@ const TokenValueBottomSheetContent: React.FC<TokenValueBottomSheetProps> = ({
|
|
|
104
102
|
}}
|
|
105
103
|
>
|
|
106
104
|
<Typography>{t('main.fees.network')}</Typography>
|
|
107
|
-
<FeeBreakdownTooltip
|
|
108
|
-
gasCosts={gasCosts}
|
|
109
|
-
relayerSupport={hasRelayerSupport}
|
|
110
|
-
>
|
|
105
|
+
<FeeBreakdownTooltip gasCosts={gasCosts} relayerSupport={!gasCostUSD}>
|
|
111
106
|
<Typography
|
|
112
107
|
sx={{
|
|
113
108
|
fontWeight: 600,
|
|
114
109
|
}}
|
|
115
110
|
>
|
|
116
|
-
{
|
|
111
|
+
{!gasCostUSD
|
|
117
112
|
? t('main.fees.free')
|
|
118
113
|
: t('format.currency', { value: gasCostUSD })}
|
|
119
114
|
</Typography>
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { StateCreator } from 'zustand'
|
|
2
2
|
import { persist } from 'zustand/middleware'
|
|
3
3
|
import { createWithEqualityFn } from 'zustand/traditional'
|
|
4
|
+
import { widgetEvents } from '../../hooks/useWidgetEvents.js'
|
|
5
|
+
import { WidgetEvent } from '../../types/events.js'
|
|
4
6
|
import type { PersistStoreProps } from '../types.js'
|
|
5
7
|
import type { ChainOrderState } from './types.js'
|
|
6
8
|
|
|
@@ -92,9 +94,11 @@ export const createChainOrderStore = ({ namePrefix }: PersistStoreProps) =>
|
|
|
92
94
|
set({ [`${formType}ShowAllNetworks`]: showAllNetworks })
|
|
93
95
|
},
|
|
94
96
|
setPinnedChain: (chainId) => {
|
|
97
|
+
const currentPinnedChains = get().pinnedChains
|
|
98
|
+
const wasAlreadyPinned = currentPinnedChains.includes(chainId)
|
|
95
99
|
set((state: ChainOrderState) => {
|
|
96
100
|
const pinnedChains = [...state.pinnedChains]
|
|
97
|
-
if (
|
|
101
|
+
if (wasAlreadyPinned) {
|
|
98
102
|
return {
|
|
99
103
|
pinnedChains: pinnedChains.filter((id) => id !== chainId),
|
|
100
104
|
}
|
|
@@ -104,6 +108,10 @@ export const createChainOrderStore = ({ namePrefix }: PersistStoreProps) =>
|
|
|
104
108
|
pinnedChains,
|
|
105
109
|
}
|
|
106
110
|
})
|
|
111
|
+
widgetEvents.emit(WidgetEvent.ChainPinned, {
|
|
112
|
+
chainId,
|
|
113
|
+
pinned: !wasAlreadyPinned,
|
|
114
|
+
})
|
|
107
115
|
},
|
|
108
116
|
}),
|
|
109
117
|
{
|
package/src/types/events.ts
CHANGED
|
@@ -5,52 +5,51 @@ import type { NavigationRouteType } from '../utils/navigationRoutes.js'
|
|
|
5
5
|
import type { TokenAmount } from './token.js'
|
|
6
6
|
|
|
7
7
|
export enum WidgetEvent {
|
|
8
|
-
RouteExecutionStarted = 'routeExecutionStarted',
|
|
9
|
-
RouteExecutionUpdated = 'routeExecutionUpdated',
|
|
10
|
-
RouteExecutionCompleted = 'routeExecutionCompleted',
|
|
11
|
-
RouteExecutionFailed = 'routeExecutionFailed',
|
|
12
|
-
RouteHighValueLoss = 'routeHighValueLoss',
|
|
13
|
-
RouteSelected = 'routeSelected',
|
|
14
8
|
AvailableRoutes = 'availableRoutes',
|
|
9
|
+
ChainPinned = 'chainPinned',
|
|
15
10
|
ContactSupport = 'contactSupport',
|
|
16
|
-
SourceChainTokenSelected = 'sourceChainTokenSelected',
|
|
17
11
|
DestinationChainTokenSelected = 'destinationChainTokenSelected',
|
|
18
|
-
|
|
12
|
+
FormFieldChanged = 'formFieldChanged',
|
|
13
|
+
LowAddressActivityConfirmed = 'lowAddressActivityConfirmed',
|
|
14
|
+
PageEntered = 'pageEntered',
|
|
19
15
|
/**
|
|
20
16
|
* @deprecated Use `PageEntered` event instead.
|
|
21
17
|
*/
|
|
22
18
|
ReviewTransactionPageEntered = 'reviewTransactionPageEntered',
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
RouteExecutionCompleted = 'routeExecutionCompleted',
|
|
20
|
+
RouteExecutionFailed = 'routeExecutionFailed',
|
|
21
|
+
RouteExecutionStarted = 'routeExecutionStarted',
|
|
22
|
+
RouteExecutionUpdated = 'routeExecutionUpdated',
|
|
23
|
+
RouteHighValueLoss = 'routeHighValueLoss',
|
|
24
|
+
RouteSelected = 'routeSelected',
|
|
25
|
+
SendToWalletToggled = 'sendToWalletToggled',
|
|
26
26
|
SettingUpdated = 'settingUpdated',
|
|
27
|
+
SourceChainTokenSelected = 'sourceChainTokenSelected',
|
|
27
28
|
TokenSearch = 'tokenSearch',
|
|
28
|
-
|
|
29
|
+
WidgetExpanded = 'widgetExpanded',
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
export type WidgetEvents = {
|
|
32
|
-
routeExecutionStarted: Route
|
|
33
|
-
routeExecutionUpdated: RouteExecutionUpdate
|
|
34
|
-
routeExecutionCompleted: Route
|
|
35
|
-
routeExecutionFailed: RouteExecutionUpdate
|
|
36
|
-
routeHighValueLoss: RouteHighValueLossUpdate
|
|
37
|
-
routeSelected: RouteSelected
|
|
38
33
|
availableRoutes: Route[]
|
|
34
|
+
chainPinned: ChainPinned
|
|
39
35
|
contactSupport: ContactSupport
|
|
40
|
-
sourceChainTokenSelected: ChainTokenSelected
|
|
41
36
|
destinationChainTokenSelected: ChainTokenSelected
|
|
42
|
-
sendToWalletToggled: boolean
|
|
43
37
|
formFieldChanged: FormFieldChanged
|
|
44
|
-
|
|
45
|
-
walletConnected: WalletConnected
|
|
46
|
-
widgetExpanded: boolean
|
|
38
|
+
lowAddressActivityConfirmed: LowAddressActivityConfirmed
|
|
47
39
|
pageEntered: NavigationRouteType
|
|
40
|
+
reviewTransactionPageEntered?: Route
|
|
41
|
+
routeExecutionCompleted: Route
|
|
42
|
+
routeExecutionFailed: RouteExecutionUpdate
|
|
43
|
+
routeExecutionStarted: Route
|
|
44
|
+
routeExecutionUpdated: RouteExecutionUpdate
|
|
45
|
+
routeHighValueLoss: RouteHighValueLossUpdate
|
|
46
|
+
routeSelected: RouteSelected
|
|
47
|
+
sendToWalletToggled: boolean
|
|
48
48
|
settingUpdated: SettingUpdated
|
|
49
|
+
sourceChainTokenSelected: ChainTokenSelected
|
|
49
50
|
tokenSearch: TokenSearch
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
chainId: number
|
|
53
|
-
}
|
|
51
|
+
walletConnected: WalletConnected
|
|
52
|
+
widgetExpanded: boolean
|
|
54
53
|
}
|
|
55
54
|
|
|
56
55
|
export type ContactSupport = {
|
|
@@ -108,3 +107,13 @@ export type SettingUpdated<
|
|
|
108
107
|
newSettings: SettingsProps
|
|
109
108
|
oldSettings: SettingsProps
|
|
110
109
|
}
|
|
110
|
+
|
|
111
|
+
export type ChainPinned = {
|
|
112
|
+
chainId: number
|
|
113
|
+
pinned: boolean
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export type LowAddressActivityConfirmed = {
|
|
117
|
+
address: string
|
|
118
|
+
chainId: number
|
|
119
|
+
}
|