@lifi/widget 2.1.4 → 2.2.0-beta.1

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.
@@ -6,9 +6,13 @@ const material_1 = require("@mui/material");
6
6
  const hooks_1 = require("../../hooks");
7
7
  const FundsSufficiencyMessage_1 = require("./FundsSufficiencyMessage");
8
8
  const GasSufficiencyMessage_1 = require("./GasSufficiencyMessage");
9
+ const providers_1 = require("../../providers");
9
10
  const GasMessage = ({ route, ...props }) => {
10
11
  const { insufficientGas } = (0, hooks_1.useGasSufficiency)(route);
11
12
  const { insufficientFunds } = (0, hooks_1.useFundsSufficiency)(route);
12
- return ((0, jsx_runtime_1.jsx)(material_1.Collapse, { timeout: 225, in: Boolean(insufficientFunds || insufficientGas?.length), unmountOnExit: true, mountOnEnter: true, children: (0, jsx_runtime_1.jsx)(material_1.Box, { ...props, children: insufficientFunds ? ((0, jsx_runtime_1.jsx)(FundsSufficiencyMessage_1.FundsSufficiencyMessage, {})) : insufficientGas?.length ? ((0, jsx_runtime_1.jsx)(GasSufficiencyMessage_1.GasSufficiencyMessage, { insufficientGas: insufficientGas })) : null }) }));
13
+ const { sdkConfig } = (0, providers_1.useWidgetConfig)();
14
+ const isMultisigSigner = sdkConfig?.multisigConfig?.isMultisigSigner;
15
+ const validInsufficientGas = insufficientGas?.length && !isMultisigSigner;
16
+ return ((0, jsx_runtime_1.jsx)(material_1.Collapse, { timeout: 225, in: Boolean(insufficientFunds || validInsufficientGas), unmountOnExit: true, mountOnEnter: true, children: (0, jsx_runtime_1.jsx)(material_1.Box, { ...props, children: insufficientFunds ? ((0, jsx_runtime_1.jsx)(FundsSufficiencyMessage_1.FundsSufficiencyMessage, {})) : validInsufficientGas ? ((0, jsx_runtime_1.jsx)(GasSufficiencyMessage_1.GasSufficiencyMessage, { insufficientGas: insufficientGas })) : null }) }));
13
17
  };
14
18
  exports.GasMessage = GasMessage;
@@ -1,2 +1,2 @@
1
1
  export declare const name = "@lifi/widget";
2
- export declare const version = "2.1.4";
2
+ export declare const version = "2.2.0-beta.1";
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = exports.name = void 0;
4
4
  exports.name = '@lifi/widget';
5
- exports.version = '2.1.4';
5
+ exports.version = '2.2.0-beta.1';
@@ -7,18 +7,12 @@ const react_hook_form_1 = require("react-hook-form");
7
7
  const providers_1 = require("../providers");
8
8
  const stores_1 = require("../stores");
9
9
  const useChains = () => {
10
- const { chains, keyPrefix } = (0, providers_1.useWidgetConfig)();
10
+ const { chains } = (0, providers_1.useWidgetConfig)();
11
11
  const lifi = (0, providers_1.useLiFi)();
12
12
  const { getValues, setValue } = (0, react_hook_form_1.useFormContext)();
13
13
  const initializeChains = (0, stores_1.useChainOrderStore)((state) => state.initializeChains);
14
- const { data: availableChains, isLoading: isLoadingAvailableChains } = (0, react_query_1.useQuery)(['chains'], async () => lifi.getChains(), {
15
- refetchInterval: 300000,
16
- staleTime: 300000,
17
- });
18
- const { data: filteredChains, isLoading: isLoadingFilteredChains } = (0, react_query_1.useQuery)(['filtered-chains', availableChains?.length, keyPrefix], async () => {
19
- if (!availableChains) {
20
- return;
21
- }
14
+ const { data, isLoading } = (0, react_query_1.useQuery)(['chains'], async () => {
15
+ const availableChains = await lifi.getChains();
22
16
  const filteredChains = availableChains.filter((chain) => (0, providers_1.isItemAllowed)(chain.id, chains));
23
17
  const chainOrder = initializeChains(filteredChains.map((chain) => chain.id));
24
18
  const [fromChainValue, toChainValue] = getValues([
@@ -31,21 +25,18 @@ const useChains = () => {
31
25
  if (!toChainValue) {
32
26
  setValue(providers_1.FormKey.ToChain, chainOrder[0]);
33
27
  }
34
- return filteredChains;
28
+ return { availableChains, filteredChains };
35
29
  }, {
36
- enabled: Boolean(availableChains),
30
+ refetchInterval: 180000,
31
+ staleTime: 180000,
37
32
  });
38
33
  const getChainById = (0, react_1.useCallback)((chainId) => {
39
- const chain = availableChains?.find((chain) => chain.id === chainId);
34
+ const chain = data?.availableChains.find((chain) => chain.id === chainId);
40
35
  // if (!chain) {
41
36
  // throw new Error('Chain not found or chainId is invalid.');
42
37
  // }
43
38
  return chain;
44
- }, [availableChains]);
45
- return {
46
- chains: filteredChains,
47
- getChainById,
48
- isLoading: isLoadingAvailableChains || isLoadingFilteredChains,
49
- };
39
+ }, [data]);
40
+ return { chains: data?.filteredChains, getChainById, isLoading };
50
41
  };
51
42
  exports.useChains = useChains;
package/cjs/i18n/tr.json CHANGED
@@ -1,17 +1,6 @@
1
1
  {
2
- "language": {
3
- "name": "Türkçe",
4
- "title": "Dil"
5
- },
6
- "format": {
7
- "currency": "{{value, currency(currency: USD)}}",
8
- "number": "{{value, number(maximumFractionDigits: 9)}}"
9
- },
10
2
  "button": {
11
3
  "auto": "Otomatik",
12
- "bridge": "Gönder",
13
- "buy": "Satın al",
14
- "buyNow": "Hemen satın al",
15
4
  "cancel": "İptal",
16
5
  "connectWallet": "Cüzdanı Bağla",
17
6
  "contactSupport": "Destek Ekibine Ulaş",
@@ -21,75 +10,84 @@
21
10
  "delete": "Sil",
22
11
  "disconnect": "Bağlantıyı Kes",
23
12
  "done": "Tamamlandı",
24
- "exchange": "Al-Sat",
25
13
  "getGas": "Gaz al",
26
14
  "hide": "Gizle",
27
- "learnMore": "Daha fazla bilgi edinin",
28
- "lifiCheckout": "İşlem sonucu",
29
- "lifiExchange": "LI-FI Al-Sat",
15
+ "lifiSwap": "LI.FI Takas",
30
16
  "light": "Açık",
31
17
  "max": "maksimum",
32
18
  "ok": "Tamam",
33
- "removeTransaction": "İşlemi kaldır",
19
+ "okay": "Tamam",
20
+ "removeSwap": "Takas işlemini kaldır",
34
21
  "reset": "Sıfırla",
35
22
  "resetSettings": "Ayarları Sıfırla",
36
- "reviewBridge": "Köprüleri İncele",
37
- "reviewPurchase": "Satın almayı gözden geçir",
23
+ "restartSwap": "Takası yeniden başlat",
24
+ "reviewGasSwap": "Gaz takasını incele",
38
25
  "reviewSwap": "Takas işlemini incele",
39
26
  "seeDetails": "Detayları Gör",
40
27
  "showAll": "Tümünü Göster",
41
- "startBridging": "Başla",
42
- "startSwapping": "Takas işlemini başlat",
28
+ "startGasSwap": "Gaz takasını başlat",
29
+ "startSwap": "Takas işlemini başlat",
43
30
  "swap": "Takas et",
44
31
  "tryAgain": "Tekrar Deneyin",
45
- "viewCoverage": "Kapsamaya bak",
46
32
  "viewOnExplorer": "Tarayıcıda Görüntüle"
47
33
  },
34
+ "format": {
35
+ "currency": "{{value, currency(currency: USD)}}",
36
+ "number": "{{value, number(maximumFractionDigits: 9)}}"
37
+ },
48
38
  "header": {
49
- "activeTransactions": "Aktif işlemler",
50
- "bridge": "Gönder",
39
+ "activeSwaps": "Aktif takas işlemleri",
51
40
  "checkout": "Ödeme yap",
52
- "exchange": "Al-Sat",
53
41
  "from": "Şundan takas et",
54
42
  "gas": "Gaz",
55
- "payWith": "Şununla öde",
56
- "purchase": "Satın al",
57
- "purchaseDetails": "Satın Alma Detayları",
43
+ "gasSwap": "Gaz takası",
44
+ "routes": "Alacağınız",
58
45
  "selectChain": "Zincir Seç",
59
46
  "selectWallet": "Bir Cüzdan Seçin",
60
47
  "settings": "Ayarlar",
61
48
  "swap": "Takas",
49
+ "swapDetails": "Takas detayları",
50
+ "swapHistory": "Takas geçmişi",
62
51
  "to": "Şuna takas et",
63
- "transactionDetails": "İşlem ayrıntıları",
64
- "transactionHistory": "İşlem geçmişi",
65
- "walletConnected": "Cüzdan Bağlandı",
66
- "youGet": "Alacağınız"
52
+ "walletConnected": "Cüzdan Bağlandı"
53
+ },
54
+ "language": {
55
+ "name": "Türkçe",
56
+ "title": "Dil"
57
+ },
58
+ "settings": {
59
+ "enabledBridges": "Etkin Köprüler",
60
+ "enabledExchanges": "Etkin platformlar",
61
+ "gasPrice": {
62
+ "fast": "Hızlı",
63
+ "normal": "Standard",
64
+ "slow": "Yavaş",
65
+ "title": "Gaz ücreti"
66
+ },
67
+ "routePriority": "Rota önceliği",
68
+ "showDestinationWallet": "Hedef Adresi Göster",
69
+ "slippage": "Slipaj"
67
70
  },
68
71
  "info": {
69
72
  "message": {
70
- "autoRefuel": "{{chainName}} ağında gaz yetersiz. Devam ederek, işlem için gereken miktarda gaz alacaksınız.",
71
- "emptyActiveTransactions": "Devam eden işlemler burada görünecek. Tamamlandığında, işlem geçmişinden bulabilirsiniz.",
72
- "emptyTokenList": "{{chainName}} ağında token bulamadık veya sizde hiç token yok. Lütfen tekrar aramayı deneyin veya başka bir seçin.",
73
- "emptyTransactionHistory": "İşlem geçmişi yalnızca yerel olarak saklanır ve tarayıcı verilerinizi temizlerseniz silinir.",
74
- "routeNotFound": "Muhtemel sebepler şunlar olabilir: Düşük likidite, seçilen miktarın çok düşük olması, gaz masrafının çok olması ya da seçilen kombinasyon için rota olmaması."
73
+ "emptyActiveSwaps": "Devam eden işlemler burada görünecek. Tamamlandığında, işlem geçmişinden bulabilirsiniz",
74
+ "emptySwapHistory": "İşlem geçmişi yalnızca yerel olarak saklanır ve tarayıcı verilerinizi temizlerseniz silinir.",
75
+ "emptyTokenList": "{{chainName}} zincirinde token bulamadık veya sizde hiç token yok. Lütfen tekrar aramayı deneyin veya başka bir zincir seçin.",
76
+ "routeNotFound": "Başka bir token kombinasyonu deneyin"
75
77
  },
76
78
  "title": {
77
- "autoRefuel": "Gaz al",
78
- "emptyActiveTransactions": "Aktif işlem bulunmamaktadır",
79
- "emptyTransactionHistory": "Yakın zamanda bir işlem yok",
79
+ "emptyActiveSwaps": "Aktif işlem bulunamadı",
80
+ "emptySwapHistory": "Yakın zamanda işlem bulunamadı",
80
81
  "routeNotFound": "Kullanılabilir bir yol bulunamadı"
81
82
  }
82
83
  },
83
84
  "success": {
84
85
  "message": {
85
- "exchangePartiallySuccessful": "İşlemi tamamlamaya çalıştık, ancak {{tool}} üzerinde, {{tokenSymbol}} için likidite bulunmuyor.",
86
- "exchangeSuccessful": "Şu anda {{chainName}} ağındaki {{walletAddress}} adresinde {{amount, number(maximumFractionDigits: 9)}} adet {{tokenSymbol}} bulunmaktadır.",
87
- "purchaseSuccessful": "Şu anda {{chainName}} ağı {{walletAddress}} adresinde {{assetName}} bulunmaktadır."
86
+ "swapPartiallySuccessful": "Takas işlemini tamamlamaya çalıştık, ancak {{tool}} içerisinde, {{tokenSymbol}} için likidite bulunmuyor.",
87
+ "swapSuccessful": "Şu anda {{chainName}} ağındaki {{walletAddress}} adresli cüzdanda {{amount, number(maximumFractionDigits: 9)}} adet {{tokenSymbol}} bulunmaktadır."
88
88
  },
89
89
  "title": {
90
- "bridgePartiallySuccessful": "Köprü işlemi kısmen başarılı",
91
- "bridgeSuccessful": "İşlem başarılı",
92
- "purchaseSuccessful": "İşlem başarılı",
90
+ "gasSwapSuccessful": "Gaz takası başarılı",
93
91
  "refundIssued": "Geri ödeme yapıldı",
94
92
  "swapPartiallySuccessful": "Takas işlemi kısmen başarılı",
95
93
  "swapSuccessful": "Takas başarılı"
@@ -97,8 +95,8 @@
97
95
  },
98
96
  "warning": {
99
97
  "message": {
100
- "deleteActiveTransactions": "Aktif işlemler yalnızca yerel olarak depolanır ve silerseniz kurtarılamaz.",
101
- "deleteTransactionHistory": "İşlem geçmişi yalnızca yerel olarak depolanır ve silerseniz kurtarılamaz.",
98
+ "deleteActiveSwaps": "Etkin takaslar yalnızca yerel olarak depolanır ve silerseniz kurtarılamaz.",
99
+ "deleteSwapHistory": "Takas geçmişi yalnızca yerel olarak depolanır ve silerseniz kurtarılamaz.",
102
100
  "highValueLoss": "Elde edilecek varlıkların değeri, takas edilen varlıklardan ve işlem maliyetinden önemli ölçüde düşüktür.",
103
101
  "insufficientFunds": "Takas işlemini gerçekleştirmek için yeterli bakiyeniz bulunmamaktadır.",
104
102
  "insufficientGas": "En azından şunları eklemelisiniz:",
@@ -106,9 +104,9 @@
106
104
  "resetSettings": "Bu, rota önceliğinizi, slipajı, gaz fiyatını, etkin köprüleri ve takasları sıfırlayacaktır."
107
105
  },
108
106
  "title": {
109
- "deleteActiveTransactions": "Tüm aktif işlemleri sil?",
110
- "deleteTransaction": "Bu işlem silinsin mi?",
111
- "deleteTransactionHistory": "İşlem geçmişi silinsin mi?",
107
+ "deleteActiveSwaps": "Tüm aktif takasları silmek istiyor musunuz?",
108
+ "deleteSwap": "Bu takası silmek istiyor musunuz?",
109
+ "deleteSwapHistory": "Takas geçmişini silmek istiyor musunuz?",
112
110
  "highValueLoss": "Yüksek değer kaybı",
113
111
  "insufficientGas": "Yetersiz gaz",
114
112
  "rateChanged": "Oran değişti",
@@ -117,8 +115,6 @@
117
115
  },
118
116
  "error": {
119
117
  "message": {
120
- "allowanceRequired": "{{tokenSymbol}} için verilen izinden fazla miktarda transfer yapılamaz. Token izinlerini arttırıp tekrar deneyiniz.",
121
- "insufficientFunds": "Bu işlemi gerçekleştirmek için yeterli gaz bulunmamaktadır.",
122
118
  "slippageThreshold": "Slipaj, tanımlanan eşikten daha büyük. Yeni bir fiyat teklifi almak için lütfen yeni bir rota isteyin.",
123
119
  "transactionFailed": "Daha fazla bilgi için ağ tarayıcısını kontrol edin.",
124
120
  "transactionNotSent": "İşlem gönderilmedi. {{chainName}} üzerinde {{amount, number(maximumFractionDigits: 9)}} {{tokenSymbol}} cüzdanınızda bulunmaktadır.",
@@ -126,11 +122,10 @@
126
122
  "unknown": "Lütfen tekrar deneyin veya desteğe başvurun."
127
123
  },
128
124
  "title": {
129
- "allowanceRequired": "İzin miktarı yetersiz",
130
125
  "balanceIsTooLow": "Bakiye çok düşük",
131
126
  "chainSwitch": "Lütfen ağı değiştirin",
127
+ "failed": "İşlem Başarısız",
132
128
  "gasLimitIsTooLow": "Gaz limiti çok düşük",
133
- "insufficientFunds": "Yetersiz bakiye",
134
129
  "slippageNotMet": "Slipaj koşulları karşılanmadı",
135
130
  "transactionCanceled": "İşlem iptal edildi",
136
131
  "transactionFailed": "İşlem başarısız",
@@ -143,19 +138,6 @@
143
138
  "walletEnsAddressInvalid": "Cüzdan adresi geçerli değil veya ağ ENS desteklemiyor."
144
139
  }
145
140
  },
146
- "tooltip": {
147
- "additionalProviderFee": "Ek köprü, DEX'ler ve hizmet ücretleri.",
148
- "estimatedNetworkFee": "Tahmini ağ ücreti.",
149
- "estimatedTime": "Dakika cinsinden tahmini işlem süresi.",
150
- "notFound": {
151
- "text": "Aradığınız sayfayı bulamadık.",
152
- "title": "404"
153
- },
154
- "numberOfSteps": "İşlem birkaç adımdan oluşmaktadır. Her adım, imza gerektiren 1-2 işlem içerebilir.",
155
- "progressToNextUpdate": "Görüntülenen veriler, {{value}} saniye sonra otomatik olarak yenilenecektir. Manuel olarak güncellemek için burayı tıklayın.",
156
- "recommended": "Karmaşıklığı ve kullanım kolaylığını dengeleyen ucuz bir rota.",
157
- "settingsModified": "Ayarlar (değiştirilen)"
158
- },
159
141
  "main": {
160
142
  "crossStepDetails": "{{from}} ile {{to}} ağları arasında {{tool}} ile gönderim sağlayın",
161
143
  "currentAmount": "Geçerli miktar",
@@ -171,6 +153,7 @@
171
153
  "onChain": "{{chainName}} üzerinde",
172
154
  "otherTokens": "Diğer jetonlar",
173
155
  "ownedBy": "Tarafından sahip olunan",
156
+ "payWith": "Şununla öde",
174
157
  "process": {
175
158
  "crossChain": {
176
159
  "actionRequired": "Lütfen işlemi onaylayın",
@@ -178,9 +161,6 @@
178
161
  "pending": "Köprü işlemi bekleniyor",
179
162
  "started": "Köprü işlemi hazırlanıyor"
180
163
  },
181
- "nft": {
182
- "done": "NFT satın alındı"
183
- },
184
164
  "receivingChain": {
185
165
  "done": "Köprü işlemi tamamlandı",
186
166
  "partial": "Köprü işlemi kısmen tamamlandı",
@@ -206,30 +186,25 @@
206
186
  "quotedAmount": "Teklif edilen tutar",
207
187
  "rateChange": "Değişiklik oranı",
208
188
  "receiving": "Alınıyor",
209
- "refuelStepDetails": "{{tool}} aracılığıyla gaz al",
189
+ "routes": "Alacağınız",
210
190
  "selectChain": "Zincir",
211
191
  "selectChainAndToken": "Ağı ve jetonu seçin",
212
192
  "selectToken": "Jeton",
213
193
  "sendToAddress": "Bu adrese gönder: {{address}}",
214
194
  "sendToWallet": "Farklı bir cüzdana gönder",
215
- "sending": "Gönderiliyor",
216
195
  "sentToAddress": "Bu adrese gönderildi: {{address}}",
217
196
  "stepBridge": "Köprüle",
218
- "stepBridgeAndBuy": "Köprüle ve satın al",
219
- "stepDetails": "LI.FI aracılığıyla {{tool}}",
220
197
  "stepSwap": "Takas et",
221
198
  "stepSwapAndBridge": "Takas et ve Köprüle",
222
- "stepSwapAndBuy": "Takasla ve satın al",
223
199
  "supportId": "Destek",
224
200
  "swapStepDetails": "{{chain}} üzerinde {{tool}} aracılığıyla takas et",
201
+ "swapping": "Takas ediliyor",
225
202
  "tags": {
226
- "cheapest": "Ucuz",
227
- "fastest": "Hızlı",
228
- "insurable": "Sigortalanabilir",
229
- "insurance": "Sigorta",
230
- "insured": "Sigortalı",
231
- "recommended": "Önerilen",
232
- "safest": "Güvenli"
203
+ "ALTERNATIVE": "ALTERNATİF",
204
+ "CHEAPEST": "UCUZ",
205
+ "FASTEST": "HIZLI",
206
+ "RECOMMENDED": "TAVSİYE EDİLEN",
207
+ "SAFEST": "GÜVENLİ"
233
208
  },
234
209
  "to": "Şuna",
235
210
  "tokenOnChain": "{{chainName}} üzerindeki {{tokenSymbol}}",
@@ -238,24 +213,16 @@
238
213
  "valueLoss": "Değer kaybı",
239
214
  "walletAddressOrEns": "Cüzdan adresi veya ENS alan adı"
240
215
  },
241
- "insurance": {
242
- "bridgeExploits": "Köprü arızaları, hack veya istismarlar",
243
- "insure": "<0>{{amount, number(maximumFractionDigits: 9)}} adet {{tokenSymbol}}</0>. Tek seferde sigortala.",
244
- "insured": "<0>{{amount, number(maximumFractionDigits: 9)}} adet {{tokenSymbol}}</0> sigortalandı:",
245
- "slippageError": "Alınan tokenlar için slipaj hatası"
246
- },
247
- "settings": {
248
- "enabledBridges": "Etkin Köprüler",
249
- "enabledExchanges": "Etkin platformlar",
250
- "gasPrice": {
251
- "fast": "Hızlı",
252
- "normal": "Standard",
253
- "slow": "Yavaş",
254
- "title": "Gaz ücreti"
216
+ "tooltip": {
217
+ "estimatedNetworkFee": "Tahmini ücreti.",
218
+ "estimatedTime": "Dakika cinsinden tahmini işlem süresi.",
219
+ "notFound": {
220
+ "text": "Aradığınız sayfayı bulamadık.",
221
+ "title": "404"
255
222
  },
256
- "routePriority": "Rota önceliği",
257
- "showDestinationWallet": "Hedef Adresi Göster",
258
- "slippage": "Sapma toleransı"
223
+ "numberOfSteps": "İşlem birkaç adımdan oluşmaktadır. Her adım, imza gerektiren 1-2 işlem içerebilir.",
224
+ "progressToNextUpdate": "Görüntülenen veriler, {{value}} saniye sonra otomatik olarak yenilenecektir. Manuel olarak güncellemek için burayı tıklayın.",
225
+ "settingsModified": "Ayarlar (değiştirilen)"
259
226
  },
260
227
  "wallet": {
261
228
  "extensionNotFound": "Lütfen bu cüzdanı seçmeden önce yalnızca {{name}} tarayıcı uzantısının etkin olduğundan emin olun."
@@ -16,9 +16,7 @@ const SelectWalletPage = () => {
16
16
  const { navigateBack } = (0, hooks_1.useNavigateBack)();
17
17
  const { connect } = (0, providers_1.useWallet)();
18
18
  const [walletIdentity, setWalletIdentity] = (0, react_1.useState)({ show: false });
19
- // separate into installed and not installed wallets
20
- const installedWallets = wallet_management_1.supportedWallets.filter((wallet) => wallet.installed());
21
- const notInstalledWallets = wallet_management_1.supportedWallets.filter((wallet) => !wallet.installed() && wallet.name !== 'Default Wallet');
19
+ const [wallets, setWallets] = (0, react_1.useState)();
22
20
  const closeDialog = () => {
23
21
  setWalletIdentity((state) => ({
24
22
  ...state,
@@ -26,7 +24,7 @@ const SelectWalletPage = () => {
26
24
  }));
27
25
  };
28
26
  const handleConnect = (0, react_1.useCallback)(async (wallet) => {
29
- const identityCheckPassed = wallet.installed();
27
+ const identityCheckPassed = await wallet.installed();
30
28
  if (!identityCheckPassed) {
31
29
  setWalletIdentity({
32
30
  show: true,
@@ -37,10 +35,19 @@ const SelectWalletPage = () => {
37
35
  navigateBack();
38
36
  await connect(wallet);
39
37
  }, [connect, navigateBack]);
38
+ (0, react_1.useEffect)(() => {
39
+ Promise.all(wallet_management_1.supportedWallets.map((wallet) => wallet.installed())).then((installed) => {
40
+ // separate into installed and not installed wallets
41
+ const installedWallets = wallet_management_1.supportedWallets.filter((_, index) => installed[index]);
42
+ // always remove Default Wallet from not installed Wallets
43
+ const notInstalledWallets = wallet_management_1.supportedWallets.filter((wallet, index) => !installed[index] && wallet.name !== 'Default Wallet');
44
+ setWallets([...installedWallets, ...notInstalledWallets]);
45
+ });
46
+ }, []);
40
47
  return ((0, jsx_runtime_1.jsxs)(material_1.Container, { disableGutters: true, children: [(0, jsx_runtime_1.jsx)(material_1.List, { sx: {
41
48
  paddingLeft: 1.5,
42
49
  paddingRight: 1.5,
43
- }, children: [...installedWallets, ...notInstalledWallets].map((wallet) => ((0, jsx_runtime_1.jsxs)(ListItemButton_1.ListItemButton, { onClick: () => handleConnect(wallet), children: [(0, jsx_runtime_1.jsx)(material_1.ListItemAvatar, { children: (0, jsx_runtime_1.jsx)(material_1.Avatar, { src: wallet.icon.src || wallet.icon, alt: wallet.name, children: wallet.name[0] }) }), (0, jsx_runtime_1.jsx)(ListItemText_1.ListItemText, { primary: wallet.name })] }, wallet.name))) }), (0, jsx_runtime_1.jsxs)(Dialog_1.Dialog, { open: walletIdentity.show, onClose: closeDialog, children: [(0, jsx_runtime_1.jsx)(material_1.DialogContent, { children: (0, jsx_runtime_1.jsx)(material_1.DialogContentText, { children: t('wallet.extensionNotFound', {
50
+ }, children: wallets?.map((wallet) => ((0, jsx_runtime_1.jsxs)(ListItemButton_1.ListItemButton, { onClick: () => handleConnect(wallet), children: [(0, jsx_runtime_1.jsx)(material_1.ListItemAvatar, { children: (0, jsx_runtime_1.jsx)(material_1.Avatar, { src: wallet.icon.src || wallet.icon, alt: wallet.name, children: wallet.name[0] }) }), (0, jsx_runtime_1.jsx)(ListItemText_1.ListItemText, { primary: wallet.name })] }, wallet.name))) }), (0, jsx_runtime_1.jsxs)(Dialog_1.Dialog, { open: walletIdentity.show, onClose: closeDialog, children: [(0, jsx_runtime_1.jsx)(material_1.DialogContent, { children: (0, jsx_runtime_1.jsx)(material_1.DialogContentText, { children: t('wallet.extensionNotFound', {
44
51
  name: walletIdentity.wallet?.name,
45
52
  }) }) }), (0, jsx_runtime_1.jsx)(material_1.DialogActions, { children: (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", onClick: closeDialog, autoFocus: true, children: t('button.ok') }) })] })] }));
46
53
  };
@@ -2,13 +2,17 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StartInsurableTransactionButton = exports.StartTransactionButton = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const providers_1 = require("../../providers");
5
6
  const DefaultTransactionButton_1 = require("../../components/DefaultTransactionButton");
6
7
  const hooks_1 = require("../../hooks");
7
8
  const stores_1 = require("../../stores");
8
9
  const StartTransactionButton = ({ onClick, route, text, loading, }) => {
10
+ const { sdkConfig } = (0, providers_1.useWidgetConfig)();
11
+ const isMultisigSigner = sdkConfig?.multisigConfig?.isMultisigSigner;
9
12
  const { insufficientGas, isInitialLoading: isGasSufficiencyLoading } = (0, hooks_1.useGasSufficiency)(route);
10
13
  const { insufficientFunds, isInitialLoading: isFundsSufficiencyLoading } = (0, hooks_1.useFundsSufficiency)(route);
11
- return ((0, jsx_runtime_1.jsx)(DefaultTransactionButton_1.DefaultTransactionButton, { onClick: onClick, text: text, disabled: insufficientFunds || !!insufficientGas?.length, loading: isFundsSufficiencyLoading || isGasSufficiencyLoading || loading }));
14
+ const shouldDisableButton = !isMultisigSigner && (insufficientFunds || !!insufficientGas?.length);
15
+ return ((0, jsx_runtime_1.jsx)(DefaultTransactionButton_1.DefaultTransactionButton, { onClick: onClick, text: text, disabled: shouldDisableButton, loading: isFundsSufficiencyLoading || isGasSufficiencyLoading || loading }));
12
16
  };
13
17
  exports.StartTransactionButton = StartTransactionButton;
14
18
  const StartInsurableTransactionButton = ({ onClick, text, route, loading, disabled, insurableRouteId }) => {
@@ -6,6 +6,6 @@ const header_1 = require("./header");
6
6
  const routes_1 = require("./routes");
7
7
  const settings_1 = require("./settings");
8
8
  const StoreProvider = ({ children, config, }) => {
9
- return ((0, jsx_runtime_1.jsx)(settings_1.SplitSubvariantStoreProvider, { state: config.subvariant === 'split' ? 'swap' : undefined, children: (0, jsx_runtime_1.jsx)(header_1.HeaderStoreProvider, { namePrefix: config?.keyPrefix, children: (0, jsx_runtime_1.jsx)(routes_1.RouteExecutionStoreProvider, { namePrefix: config?.keyPrefix, children: children }) }) }));
9
+ return ((0, jsx_runtime_1.jsx)(settings_1.SplitSubvariantStoreProvider, { state: config.subvariant === 'split' ? 'swap' : undefined, children: (0, jsx_runtime_1.jsx)(header_1.HeaderStoreProvider, { namePrefix: config?.localStorageKeyPrefix, children: (0, jsx_runtime_1.jsx)(routes_1.RouteExecutionStoreProvider, { namePrefix: config?.localStorageKeyPrefix, children: children }) }) }));
10
10
  };
11
11
  exports.StoreProvider = StoreProvider;
@@ -89,7 +89,7 @@ export interface WidgetConfig {
89
89
  walletManagement?: WidgetWalletManagement;
90
90
  sdkConfig?: SDKConfig;
91
91
  buildUrl?: boolean;
92
- keyPrefix?: string;
92
+ localStorageKeyPrefix?: string;
93
93
  bridges?: {
94
94
  allow?: string[];
95
95
  deny?: string[];
@@ -3,8 +3,12 @@ import { Box, Collapse } from '@mui/material';
3
3
  import { useFundsSufficiency, useGasSufficiency } from '../../hooks';
4
4
  import { FundsSufficiencyMessage } from './FundsSufficiencyMessage';
5
5
  import { GasSufficiencyMessage } from './GasSufficiencyMessage';
6
+ import { useWidgetConfig } from '../../providers';
6
7
  export const GasMessage = ({ route, ...props }) => {
7
8
  const { insufficientGas } = useGasSufficiency(route);
8
9
  const { insufficientFunds } = useFundsSufficiency(route);
9
- return (_jsx(Collapse, { timeout: 225, in: Boolean(insufficientFunds || insufficientGas?.length), unmountOnExit: true, mountOnEnter: true, children: _jsx(Box, { ...props, children: insufficientFunds ? (_jsx(FundsSufficiencyMessage, {})) : insufficientGas?.length ? (_jsx(GasSufficiencyMessage, { insufficientGas: insufficientGas })) : null }) }));
10
+ const { sdkConfig } = useWidgetConfig();
11
+ const isMultisigSigner = sdkConfig?.multisigConfig?.isMultisigSigner;
12
+ const validInsufficientGas = insufficientGas?.length && !isMultisigSigner;
13
+ return (_jsx(Collapse, { timeout: 225, in: Boolean(insufficientFunds || validInsufficientGas), unmountOnExit: true, mountOnEnter: true, children: _jsx(Box, { ...props, children: insufficientFunds ? (_jsx(FundsSufficiencyMessage, {})) : validInsufficientGas ? (_jsx(GasSufficiencyMessage, { insufficientGas: insufficientGas })) : null }) }));
10
14
  };
@@ -1,2 +1,2 @@
1
1
  export declare const name = "@lifi/widget";
2
- export declare const version = "2.1.4";
2
+ export declare const version = "2.2.0-beta.1";
package/config/version.js CHANGED
@@ -1,2 +1,2 @@
1
1
  export const name = '@lifi/widget';
2
- export const version = '2.1.4';
2
+ export const version = '2.2.0-beta.1';
@@ -4,18 +4,12 @@ import { useFormContext } from 'react-hook-form';
4
4
  import { FormKey, isItemAllowed, useLiFi, useWidgetConfig } from '../providers';
5
5
  import { useChainOrderStore } from '../stores';
6
6
  export const useChains = () => {
7
- const { chains, keyPrefix } = useWidgetConfig();
7
+ const { chains } = useWidgetConfig();
8
8
  const lifi = useLiFi();
9
9
  const { getValues, setValue } = useFormContext();
10
10
  const initializeChains = useChainOrderStore((state) => state.initializeChains);
11
- const { data: availableChains, isLoading: isLoadingAvailableChains } = useQuery(['chains'], async () => lifi.getChains(), {
12
- refetchInterval: 300000,
13
- staleTime: 300000,
14
- });
15
- const { data: filteredChains, isLoading: isLoadingFilteredChains } = useQuery(['filtered-chains', availableChains?.length, keyPrefix], async () => {
16
- if (!availableChains) {
17
- return;
18
- }
11
+ const { data, isLoading } = useQuery(['chains'], async () => {
12
+ const availableChains = await lifi.getChains();
19
13
  const filteredChains = availableChains.filter((chain) => isItemAllowed(chain.id, chains));
20
14
  const chainOrder = initializeChains(filteredChains.map((chain) => chain.id));
21
15
  const [fromChainValue, toChainValue] = getValues([
@@ -28,20 +22,17 @@ export const useChains = () => {
28
22
  if (!toChainValue) {
29
23
  setValue(FormKey.ToChain, chainOrder[0]);
30
24
  }
31
- return filteredChains;
25
+ return { availableChains, filteredChains };
32
26
  }, {
33
- enabled: Boolean(availableChains),
27
+ refetchInterval: 180000,
28
+ staleTime: 180000,
34
29
  });
35
30
  const getChainById = useCallback((chainId) => {
36
- const chain = availableChains?.find((chain) => chain.id === chainId);
31
+ const chain = data?.availableChains.find((chain) => chain.id === chainId);
37
32
  // if (!chain) {
38
33
  // throw new Error('Chain not found or chainId is invalid.');
39
34
  // }
40
35
  return chain;
41
- }, [availableChains]);
42
- return {
43
- chains: filteredChains,
44
- getChainById,
45
- isLoading: isLoadingAvailableChains || isLoadingFilteredChains,
46
- };
36
+ }, [data]);
37
+ return { chains: data?.filteredChains, getChainById, isLoading };
47
38
  };