@rango-dev/widget-embedded 0.1.11-next.11 → 0.1.11-next.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/dist/pages/ConfirmSwapPage.d.ts.map +1 -1
- package/dist/pages/Home.d.ts.map +1 -1
- package/dist/pages/SwapDetailsPage.d.ts.map +1 -1
- package/dist/utils/routing.d.ts +4 -4
- package/dist/utils/routing.d.ts.map +1 -1
- package/dist/widget-embedded.cjs.development.js +230 -199
- package/dist/widget-embedded.cjs.development.js.map +1 -1
- package/dist/widget-embedded.cjs.production.min.js +230 -199
- package/dist/widget-embedded.cjs.production.min.js.map +1 -1
- package/dist/widget-embedded.esm.js +230 -199
- package/dist/widget-embedded.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/pages/ConfirmSwapPage.tsx +3 -1
- package/src/pages/Home.tsx +2 -1
- package/src/pages/SwapDetailsPage.tsx +6 -12
- package/src/utils/routing.ts +31 -11
|
@@ -6,10 +6,10 @@ import { isCosmosBlockchain, isEvmBlockchain } from 'rango-types';
|
|
|
6
6
|
import { useSearchParams, useLocation, createSearchParams, useNavigate, useInRouterContext, useRoutes } from 'react-router-dom';
|
|
7
7
|
import { create } from 'zustand';
|
|
8
8
|
import BigNumber, { BigNumber as BigNumber$1 } from 'bignumber.js';
|
|
9
|
-
import { Network, isEvmAddress, KEPLR_COMPATIBLE_WALLETS, detectInstallLink, WalletType, getCosmosExperimentalChainInfo, detectMobileScreens, convertEvmBlockchainMetaToEvmChainInfo } from '@rango-dev/wallets-shared';
|
|
10
|
-
import { readAccountAddress, useWallets, Provider as Provider$1, Events } from '@rango-dev/wallets-core';
|
|
11
9
|
import { persist, subscribeWithSelector } from 'zustand/middleware';
|
|
12
10
|
import { RangoClient, isEvmBlockchain as isEvmBlockchain$1 } from 'rango-sdk';
|
|
11
|
+
import { Network, isEvmAddress, KEPLR_COMPATIBLE_WALLETS, detectInstallLink, WalletType, getCosmosExperimentalChainInfo, detectMobileScreens, convertEvmBlockchainMetaToEvmChainInfo } from '@rango-dev/wallets-shared';
|
|
12
|
+
import { readAccountAddress, useWallets, Provider as Provider$1, Events } from '@rango-dev/wallets-core';
|
|
13
13
|
import { shallow } from 'zustand/shallow';
|
|
14
14
|
import { useTranslation, initReactI18next } from 'react-i18next';
|
|
15
15
|
import { styled as styled$1 } from '@rango-dev/ui/src/theme';
|
|
@@ -118,6 +118,195 @@ const decimalNumber = function (number, toFixed) {
|
|
|
118
118
|
return parseFloat(number).toFixed(toFixed);
|
|
119
119
|
};
|
|
120
120
|
|
|
121
|
+
function searchParamsToToken(tokens, searchParams, chain) {
|
|
122
|
+
if (!chain) return null;
|
|
123
|
+
return tokens.find(token => {
|
|
124
|
+
const symbolAndAddress = searchParams?.split('--');
|
|
125
|
+
if (symbolAndAddress?.length === 1) return token.symbol === symbolAndAddress[0] && token.address === null && token.blockchain === chain.name;
|
|
126
|
+
return token.symbol === symbolAndAddress?.[0] && token.address === symbolAndAddress?.[1] && token.blockchain === chain.name;
|
|
127
|
+
}) || null;
|
|
128
|
+
}
|
|
129
|
+
function getBestRouteToTokenUsdPrice(bestRoute) {
|
|
130
|
+
return bestRoute?.result?.swaps[bestRoute?.result?.swaps.length - 1].to.usdPrice;
|
|
131
|
+
}
|
|
132
|
+
function isNumberOfSwapsChanged(route1, route2) {
|
|
133
|
+
const route1Swaps = route1.result?.swaps || [];
|
|
134
|
+
const route2Swaps = route2.result?.swaps || [];
|
|
135
|
+
return route1Swaps.length !== route2Swaps.length;
|
|
136
|
+
}
|
|
137
|
+
function isRouteSwappersUpdated(route1, route2) {
|
|
138
|
+
const route1Swappers = route1.result?.swaps.map(swap => swap.swapperId) || [];
|
|
139
|
+
const route2Swappers = route2.result?.swaps.map(swap => swap.swapperId) || [];
|
|
140
|
+
return !areEqual(route1Swappers, route2Swappers);
|
|
141
|
+
}
|
|
142
|
+
function isRouteInternalCoinsUpdated(route1, route2) {
|
|
143
|
+
const route1InternalCoins = route1.result?.swaps.map(swap => swap.to.symbol) || [];
|
|
144
|
+
const route2InternalCoins = route2.result?.swaps.map(swap => swap.to.symbol) || [];
|
|
145
|
+
return !areEqual(route1InternalCoins, route2InternalCoins);
|
|
146
|
+
}
|
|
147
|
+
function isRouteChanged(route1, route2) {
|
|
148
|
+
return isNumberOfSwapsChanged(route1, route2) || isRouteSwappersUpdated(route1, route2) || isRouteInternalCoinsUpdated(route1, route2);
|
|
149
|
+
}
|
|
150
|
+
function getRequiredBalanceOfWallet(selectedWallet, fee) {
|
|
151
|
+
if (fee === null) return null;
|
|
152
|
+
const relatedFeeStatus = fee?.find(item => item.blockchain === selectedWallet.chain)?.wallets.find(wallet => wallet.address?.toLowerCase() === selectedWallet.address.toLowerCase());
|
|
153
|
+
if (!relatedFeeStatus) return null;
|
|
154
|
+
return relatedFeeStatus.requiredAssets;
|
|
155
|
+
}
|
|
156
|
+
function isRouteParametersChanged(params) {
|
|
157
|
+
if (params.store === 'bestRoute') {
|
|
158
|
+
const {
|
|
159
|
+
prevState,
|
|
160
|
+
currentState
|
|
161
|
+
} = params;
|
|
162
|
+
return !!currentState.fromToken && !!currentState.toToken && (prevState.fromChain?.name !== currentState.fromChain?.name || prevState.toChain?.name !== currentState.toChain?.name || prevState.fromToken?.symbol !== currentState.fromToken?.symbol || prevState.toToken?.symbol !== currentState.toToken?.symbol || prevState.fromToken?.blockchain !== prevState.fromToken?.blockchain || prevState.toToken?.blockchain !== currentState.toToken?.blockchain || prevState.fromToken?.address !== currentState.fromToken?.address || prevState.toToken?.address !== currentState.toToken?.address || prevState.inputAmount !== currentState.inputAmount);
|
|
163
|
+
} else if (params.store === 'settings') {
|
|
164
|
+
const {
|
|
165
|
+
prevState,
|
|
166
|
+
currentState
|
|
167
|
+
} = params;
|
|
168
|
+
return prevState.slippage !== currentState.slippage || prevState.customSlippage !== currentState.customSlippage || prevState.disabledLiquiditySources?.length !== currentState.disabledLiquiditySources?.length || prevState.infiniteApprove || currentState.infiniteApprove;
|
|
169
|
+
}
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
function getFormatedBestRoute(bestRoute) {
|
|
173
|
+
if (!bestRoute) return null;
|
|
174
|
+
const formatedSwaps = (bestRoute.result?.swaps || []).map(swap => ({
|
|
175
|
+
...swap,
|
|
176
|
+
fromAmount: numberToString(swap.fromAmount, 6, 6),
|
|
177
|
+
toAmount: numberToString(swap.toAmount, 6, 6)
|
|
178
|
+
}));
|
|
179
|
+
return {
|
|
180
|
+
...bestRoute,
|
|
181
|
+
...(bestRoute.result && {
|
|
182
|
+
result: {
|
|
183
|
+
...bestRoute.result,
|
|
184
|
+
swaps: formatedSwaps
|
|
185
|
+
}
|
|
186
|
+
})
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
function getFormatedPendingSwap(pendingSwap) {
|
|
190
|
+
const formatedSteps = pendingSwap.steps.map(step => ({
|
|
191
|
+
...step,
|
|
192
|
+
feeInUsd: numberToString(step.feeInUsd, 4, 4),
|
|
193
|
+
outputAmount: numberToString(step.outputAmount, 6, 6),
|
|
194
|
+
expectedOutputAmountHumanReadable: numberToString(step.expectedOutputAmountHumanReadable, 6, 6)
|
|
195
|
+
}));
|
|
196
|
+
return {
|
|
197
|
+
...pendingSwap,
|
|
198
|
+
inputAmount: numberToString(pendingSwap.inputAmount, 6, 6),
|
|
199
|
+
steps: formatedSteps
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
//todo: refactor bestRoute store and add loadingStatus
|
|
203
|
+
const getBestRouteStatus = (loading, error) => {
|
|
204
|
+
if (loading) return 'loading';
|
|
205
|
+
if (error) return 'failed';else return 'success';
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
const createSelectors = _store => {
|
|
209
|
+
let store = _store;
|
|
210
|
+
store.use = {};
|
|
211
|
+
for (let k of Object.keys(store.getState())) {
|
|
212
|
+
store.use[k] = () => store(s => s[k]);
|
|
213
|
+
}
|
|
214
|
+
return store;
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
const RANGO_PUBLIC_API_KEY = 'c6381a79-2817-4602-83bf-6a641a409e32';
|
|
218
|
+
let configs = {
|
|
219
|
+
API_KEY: RANGO_PUBLIC_API_KEY
|
|
220
|
+
};
|
|
221
|
+
function getConfig(name) {
|
|
222
|
+
return configs[name];
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
let rango = undefined;
|
|
226
|
+
const httpService = () => {
|
|
227
|
+
if (rango) return rango;
|
|
228
|
+
rango = new RangoClient(getConfig('API_KEY'));
|
|
229
|
+
return rango;
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
const SLIPPAGES = [0.5, 1, 3, 5, 8, 13, 20];
|
|
233
|
+
const DEFAULT_SLIPPAGE = 1;
|
|
234
|
+
const HIGH_SLIPPAGE = 5;
|
|
235
|
+
const MAX_SLIPPAGE = 100;
|
|
236
|
+
const MIN_SLIPPGAE = 0;
|
|
237
|
+
|
|
238
|
+
const useMetaStore = /*#__PURE__*/createSelectors( /*#__PURE__*/create()(set => ({
|
|
239
|
+
meta: {
|
|
240
|
+
blockchains: [],
|
|
241
|
+
popularTokens: [],
|
|
242
|
+
swappers: [],
|
|
243
|
+
tokens: []
|
|
244
|
+
},
|
|
245
|
+
loadingStatus: 'loading',
|
|
246
|
+
fetchMeta: async () => {
|
|
247
|
+
try {
|
|
248
|
+
const response = await httpService().getAllMetadata();
|
|
249
|
+
const chainThatHasTokenInMetaResponse = removeDuplicateFrom(response.tokens.map(t => t.blockchain));
|
|
250
|
+
const enabledChains = response.blockchains.filter(chain => chain.enabled && chainThatHasTokenInMetaResponse.includes(chain.name));
|
|
251
|
+
response.blockchains = enabledChains.sort((a, b) => a.sort - b.sort);
|
|
252
|
+
set({
|
|
253
|
+
meta: response,
|
|
254
|
+
loadingStatus: 'success'
|
|
255
|
+
});
|
|
256
|
+
} catch (error) {
|
|
257
|
+
set({
|
|
258
|
+
loadingStatus: 'failed'
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
})));
|
|
263
|
+
|
|
264
|
+
const useSettingsStore = /*#__PURE__*/createSelectors( /*#__PURE__*/create()( /*#__PURE__*/persist( /*#__PURE__*/subscribeWithSelector(set => ({
|
|
265
|
+
slippage: DEFAULT_SLIPPAGE,
|
|
266
|
+
customSlippage: null,
|
|
267
|
+
infiniteApprove: false,
|
|
268
|
+
affiliateRef: null,
|
|
269
|
+
disabledLiquiditySources: [],
|
|
270
|
+
theme: 'auto',
|
|
271
|
+
setSlippage: slippage => set(() => ({
|
|
272
|
+
slippage: slippage
|
|
273
|
+
})),
|
|
274
|
+
setCustomSlippage: customSlippage => set(() => ({
|
|
275
|
+
customSlippage: customSlippage
|
|
276
|
+
})),
|
|
277
|
+
setAffiliateRef: affiliateRef => set(() => ({
|
|
278
|
+
affiliateRef
|
|
279
|
+
})),
|
|
280
|
+
toggleAllLiquiditySources: () => set(state => {
|
|
281
|
+
const {
|
|
282
|
+
swappers
|
|
283
|
+
} = useMetaStore.getState().meta;
|
|
284
|
+
const swappersGroup = removeDuplicateFrom(swappers.map(swapper => swapper.swapperGroup));
|
|
285
|
+
if (swappersGroup.length === state.disabledLiquiditySources.length) return {
|
|
286
|
+
disabledLiquiditySources: []
|
|
287
|
+
};else {
|
|
288
|
+
return {
|
|
289
|
+
disabledLiquiditySources: swappersGroup
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
}),
|
|
293
|
+
toggleInfiniteApprove: () => set(state => ({
|
|
294
|
+
infiniteApprove: !state.infiniteApprove
|
|
295
|
+
})),
|
|
296
|
+
toggleLiquiditySource: name => set(state => {
|
|
297
|
+
if (state.disabledLiquiditySources.includes(name)) return {
|
|
298
|
+
disabledLiquiditySources: state.disabledLiquiditySources.filter(liquiditySource => liquiditySource != name)
|
|
299
|
+
};else return {
|
|
300
|
+
disabledLiquiditySources: state.disabledLiquiditySources.concat(name)
|
|
301
|
+
};
|
|
302
|
+
}),
|
|
303
|
+
setTheme: theme => set(() => ({
|
|
304
|
+
theme
|
|
305
|
+
}))
|
|
306
|
+
})), {
|
|
307
|
+
name: 'user-settings'
|
|
308
|
+
})));
|
|
309
|
+
|
|
121
310
|
function getStateWallet(state) {
|
|
122
311
|
switch (true) {
|
|
123
312
|
case state.connected:
|
|
@@ -637,165 +826,6 @@ function shouldRetrySwap(pendingSwap) {
|
|
|
637
826
|
return pendingSwap.status === 'failed' && !!pendingSwap.finishTime && new Date().getTime() - parseInt(pendingSwap.finishTime) < 4 * 3600 * 1000;
|
|
638
827
|
}
|
|
639
828
|
|
|
640
|
-
function searchParamsToToken(tokens, searchParams, chain) {
|
|
641
|
-
if (!chain) return null;
|
|
642
|
-
return tokens.find(token => {
|
|
643
|
-
const symbolAndAddress = searchParams?.split('--');
|
|
644
|
-
if (symbolAndAddress?.length === 1) return token.symbol === symbolAndAddress[0] && token.address === null && token.blockchain === chain.name;
|
|
645
|
-
return token.symbol === symbolAndAddress?.[0] && token.address === symbolAndAddress?.[1] && token.blockchain === chain.name;
|
|
646
|
-
}) || null;
|
|
647
|
-
}
|
|
648
|
-
function getBestRouteToTokenUsdPrice(bestRoute) {
|
|
649
|
-
return bestRoute?.result?.swaps[bestRoute?.result?.swaps.length - 1].to.usdPrice;
|
|
650
|
-
}
|
|
651
|
-
function isNumberOfSwapsChanged(route1, route2) {
|
|
652
|
-
const route1Swaps = route1.result?.swaps || [];
|
|
653
|
-
const route2Swaps = route2.result?.swaps || [];
|
|
654
|
-
return route1Swaps.length !== route2Swaps.length;
|
|
655
|
-
}
|
|
656
|
-
function isRouteSwappersUpdated(route1, route2) {
|
|
657
|
-
const route1Swappers = route1.result?.swaps.map(swap => swap.swapperId) || [];
|
|
658
|
-
const route2Swappers = route2.result?.swaps.map(swap => swap.swapperId) || [];
|
|
659
|
-
return !areEqual(route1Swappers, route2Swappers);
|
|
660
|
-
}
|
|
661
|
-
function isRouteInternalCoinsUpdated(route1, route2) {
|
|
662
|
-
const route1InternalCoins = route1.result?.swaps.map(swap => swap.to.symbol) || [];
|
|
663
|
-
const route2InternalCoins = route2.result?.swaps.map(swap => swap.to.symbol) || [];
|
|
664
|
-
return !areEqual(route1InternalCoins, route2InternalCoins);
|
|
665
|
-
}
|
|
666
|
-
function isRouteChanged(route1, route2) {
|
|
667
|
-
return isNumberOfSwapsChanged(route1, route2) || isRouteSwappersUpdated(route1, route2) || isRouteInternalCoinsUpdated(route1, route2);
|
|
668
|
-
}
|
|
669
|
-
function getRequiredBalanceOfWallet(selectedWallet, fee) {
|
|
670
|
-
if (fee === null) return null;
|
|
671
|
-
const relatedFeeStatus = fee?.find(item => item.blockchain === selectedWallet.chain)?.wallets.find(wallet => wallet.address?.toLowerCase() === selectedWallet.address.toLowerCase());
|
|
672
|
-
if (!relatedFeeStatus) return null;
|
|
673
|
-
return relatedFeeStatus.requiredAssets;
|
|
674
|
-
}
|
|
675
|
-
function isRouteParametersChanged(params) {
|
|
676
|
-
if (params.store === 'bestRoute') {
|
|
677
|
-
const {
|
|
678
|
-
prevState,
|
|
679
|
-
currentState
|
|
680
|
-
} = params;
|
|
681
|
-
return !!currentState.fromToken && !!currentState.toToken && (prevState.fromChain?.name !== currentState.fromChain?.name || prevState.toChain?.name !== currentState.toChain?.name || prevState.fromToken?.symbol !== currentState.fromToken?.symbol || prevState.toToken?.symbol !== currentState.toToken?.symbol || prevState.fromToken?.blockchain !== prevState.fromToken?.blockchain || prevState.toToken?.blockchain !== currentState.toToken?.blockchain || prevState.fromToken?.address !== currentState.fromToken?.address || prevState.toToken?.address !== currentState.toToken?.address || prevState.inputAmount !== currentState.inputAmount);
|
|
682
|
-
} else if (params.store === 'settings') {
|
|
683
|
-
const {
|
|
684
|
-
prevState,
|
|
685
|
-
currentState
|
|
686
|
-
} = params;
|
|
687
|
-
return prevState.slippage !== currentState.slippage || prevState.customSlippage !== currentState.customSlippage || prevState.disabledLiquiditySources?.length !== currentState.disabledLiquiditySources?.length || prevState.infiniteApprove || currentState.infiniteApprove;
|
|
688
|
-
}
|
|
689
|
-
return false;
|
|
690
|
-
}
|
|
691
|
-
//todo: refactor bestRoute store and add loadingStatus
|
|
692
|
-
const getBestRouteStatus = (loading, error) => {
|
|
693
|
-
if (loading) return 'loading';
|
|
694
|
-
if (error) return 'failed';else return 'success';
|
|
695
|
-
};
|
|
696
|
-
|
|
697
|
-
const createSelectors = _store => {
|
|
698
|
-
let store = _store;
|
|
699
|
-
store.use = {};
|
|
700
|
-
for (let k of Object.keys(store.getState())) {
|
|
701
|
-
store.use[k] = () => store(s => s[k]);
|
|
702
|
-
}
|
|
703
|
-
return store;
|
|
704
|
-
};
|
|
705
|
-
|
|
706
|
-
const RANGO_PUBLIC_API_KEY = 'c6381a79-2817-4602-83bf-6a641a409e32';
|
|
707
|
-
let configs = {
|
|
708
|
-
API_KEY: RANGO_PUBLIC_API_KEY
|
|
709
|
-
};
|
|
710
|
-
function getConfig(name) {
|
|
711
|
-
return configs[name];
|
|
712
|
-
}
|
|
713
|
-
|
|
714
|
-
let rango = undefined;
|
|
715
|
-
const httpService = () => {
|
|
716
|
-
if (rango) return rango;
|
|
717
|
-
rango = new RangoClient(getConfig('API_KEY'));
|
|
718
|
-
return rango;
|
|
719
|
-
};
|
|
720
|
-
|
|
721
|
-
const SLIPPAGES = [0.5, 1, 3, 5, 8, 13, 20];
|
|
722
|
-
const DEFAULT_SLIPPAGE = 1;
|
|
723
|
-
const HIGH_SLIPPAGE = 5;
|
|
724
|
-
const MAX_SLIPPAGE = 100;
|
|
725
|
-
const MIN_SLIPPGAE = 0;
|
|
726
|
-
|
|
727
|
-
const useMetaStore = /*#__PURE__*/createSelectors( /*#__PURE__*/create()(set => ({
|
|
728
|
-
meta: {
|
|
729
|
-
blockchains: [],
|
|
730
|
-
popularTokens: [],
|
|
731
|
-
swappers: [],
|
|
732
|
-
tokens: []
|
|
733
|
-
},
|
|
734
|
-
loadingStatus: 'loading',
|
|
735
|
-
fetchMeta: async () => {
|
|
736
|
-
try {
|
|
737
|
-
const response = await httpService().getAllMetadata();
|
|
738
|
-
const chainThatHasTokenInMetaResponse = removeDuplicateFrom(response.tokens.map(t => t.blockchain));
|
|
739
|
-
const enabledChains = response.blockchains.filter(chain => chain.enabled && chainThatHasTokenInMetaResponse.includes(chain.name));
|
|
740
|
-
response.blockchains = enabledChains.sort((a, b) => a.sort - b.sort);
|
|
741
|
-
set({
|
|
742
|
-
meta: response,
|
|
743
|
-
loadingStatus: 'success'
|
|
744
|
-
});
|
|
745
|
-
} catch (error) {
|
|
746
|
-
set({
|
|
747
|
-
loadingStatus: 'failed'
|
|
748
|
-
});
|
|
749
|
-
}
|
|
750
|
-
}
|
|
751
|
-
})));
|
|
752
|
-
|
|
753
|
-
const useSettingsStore = /*#__PURE__*/createSelectors( /*#__PURE__*/create()( /*#__PURE__*/persist( /*#__PURE__*/subscribeWithSelector(set => ({
|
|
754
|
-
slippage: DEFAULT_SLIPPAGE,
|
|
755
|
-
customSlippage: null,
|
|
756
|
-
infiniteApprove: false,
|
|
757
|
-
affiliateRef: null,
|
|
758
|
-
disabledLiquiditySources: [],
|
|
759
|
-
theme: 'auto',
|
|
760
|
-
setSlippage: slippage => set(() => ({
|
|
761
|
-
slippage: slippage
|
|
762
|
-
})),
|
|
763
|
-
setCustomSlippage: customSlippage => set(() => ({
|
|
764
|
-
customSlippage: customSlippage
|
|
765
|
-
})),
|
|
766
|
-
setAffiliateRef: affiliateRef => set(() => ({
|
|
767
|
-
affiliateRef
|
|
768
|
-
})),
|
|
769
|
-
toggleAllLiquiditySources: () => set(state => {
|
|
770
|
-
const {
|
|
771
|
-
swappers
|
|
772
|
-
} = useMetaStore.getState().meta;
|
|
773
|
-
const swappersGroup = removeDuplicateFrom(swappers.map(swapper => swapper.swapperGroup));
|
|
774
|
-
if (swappersGroup.length === state.disabledLiquiditySources.length) return {
|
|
775
|
-
disabledLiquiditySources: []
|
|
776
|
-
};else {
|
|
777
|
-
return {
|
|
778
|
-
disabledLiquiditySources: swappersGroup
|
|
779
|
-
};
|
|
780
|
-
}
|
|
781
|
-
}),
|
|
782
|
-
toggleInfiniteApprove: () => set(state => ({
|
|
783
|
-
infiniteApprove: !state.infiniteApprove
|
|
784
|
-
})),
|
|
785
|
-
toggleLiquiditySource: name => set(state => {
|
|
786
|
-
if (state.disabledLiquiditySources.includes(name)) return {
|
|
787
|
-
disabledLiquiditySources: state.disabledLiquiditySources.filter(liquiditySource => liquiditySource != name)
|
|
788
|
-
};else return {
|
|
789
|
-
disabledLiquiditySources: state.disabledLiquiditySources.concat(name)
|
|
790
|
-
};
|
|
791
|
-
}),
|
|
792
|
-
setTheme: theme => set(() => ({
|
|
793
|
-
theme
|
|
794
|
-
}))
|
|
795
|
-
})), {
|
|
796
|
-
name: 'user-settings'
|
|
797
|
-
})));
|
|
798
|
-
|
|
799
829
|
const useWalletsStore = /*#__PURE__*/createSelectors( /*#__PURE__*/create()( /*#__PURE__*/subscribeWithSelector(set => ({
|
|
800
830
|
accounts: [],
|
|
801
831
|
balances: [],
|
|
@@ -1730,7 +1760,7 @@ function Home() {
|
|
|
1730
1760
|
}), showBestRoute && React.createElement(BestRouteContainer, null, React.createElement(BestRoute, {
|
|
1731
1761
|
error: bestRouteError,
|
|
1732
1762
|
loading: fetchingBestRoute,
|
|
1733
|
-
data: bestRoute,
|
|
1763
|
+
data: getFormatedBestRoute(bestRoute),
|
|
1734
1764
|
totalFee: numberToString(totalFeeInUsd, 0, 2),
|
|
1735
1765
|
feeWarning: highFee,
|
|
1736
1766
|
totalTime: secondsToString(totalArrivalTime(bestRoute))
|
|
@@ -2345,7 +2375,9 @@ function ConfirmSwapPage() {
|
|
|
2345
2375
|
navigate(navigationRoutes.swaps + `/${swap.requestId}`, {
|
|
2346
2376
|
replace: true
|
|
2347
2377
|
});
|
|
2348
|
-
|
|
2378
|
+
setTimeout(() => {
|
|
2379
|
+
setInputAmount('');
|
|
2380
|
+
}, 0);
|
|
2349
2381
|
}
|
|
2350
2382
|
});
|
|
2351
2383
|
},
|
|
@@ -2823,10 +2855,6 @@ function SwapDetailsPage() {
|
|
|
2823
2855
|
loading: loading,
|
|
2824
2856
|
onBack: navigateBackFrom.bind(null, navigationRoutes.swapDetails)
|
|
2825
2857
|
});
|
|
2826
|
-
const firstStep = swap.steps[0];
|
|
2827
|
-
const lastStep = swap.steps[swap.steps.length - 1];
|
|
2828
|
-
const fromAmount = numberToString(swap.inputAmount);
|
|
2829
|
-
const toAmount = numberToString(swap.simulationResult.outputAmount);
|
|
2830
2858
|
const currentStep = getCurrentStep(swap);
|
|
2831
2859
|
const currentStepBlockchain = currentStep ? getCurrentBlockchainOfOrNull(swap, currentStep) : null;
|
|
2832
2860
|
const currentStepWallet = currentStep ? getRelatedWalletOrNull(swap, currentStep) : null;
|
|
@@ -2839,38 +2867,41 @@ function SwapDetailsPage() {
|
|
|
2839
2867
|
const lastConvertedTokenInFailedSwap = getLastConvertedTokenInFailedSwap(swap);
|
|
2840
2868
|
return React.createElement(SwapHistory, Object.assign({
|
|
2841
2869
|
onBack: navigateBackFrom.bind(null, navigationRoutes.swapDetails),
|
|
2842
|
-
|
|
2843
|
-
|
|
2844
|
-
|
|
2845
|
-
|
|
2846
|
-
|
|
2847
|
-
|
|
2848
|
-
|
|
2849
|
-
|
|
2850
|
-
|
|
2851
|
-
|
|
2852
|
-
|
|
2853
|
-
|
|
2854
|
-
|
|
2855
|
-
|
|
2856
|
-
|
|
2857
|
-
|
|
2858
|
-
|
|
2859
|
-
|
|
2860
|
-
|
|
2861
|
-
|
|
2862
|
-
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
|
|
2866
|
-
|
|
2867
|
-
|
|
2868
|
-
|
|
2869
|
-
|
|
2870
|
-
|
|
2871
|
-
|
|
2872
|
-
|
|
2873
|
-
|
|
2870
|
+
/* TODO: It was temporarily removed to find a better solution*/
|
|
2871
|
+
/*
|
|
2872
|
+
previewInputs={
|
|
2873
|
+
<>
|
|
2874
|
+
<TokenPreview
|
|
2875
|
+
chain={{
|
|
2876
|
+
displayName: firstStep?.fromBlockchain || '',
|
|
2877
|
+
logo: firstStep?.fromBlockchainLogo || '',
|
|
2878
|
+
}}
|
|
2879
|
+
token={{
|
|
2880
|
+
symbol: firstStep?.fromSymbol || '',
|
|
2881
|
+
image: firstStep?.fromLogo || '',
|
|
2882
|
+
}}
|
|
2883
|
+
amount={fromAmount}
|
|
2884
|
+
label={t('From')}
|
|
2885
|
+
loadingStatus={'success'}
|
|
2886
|
+
/>
|
|
2887
|
+
<Spacer size={12} direction="vertical" />
|
|
2888
|
+
<TokenPreview
|
|
2889
|
+
chain={{
|
|
2890
|
+
displayName: lastStep?.toBlockchain || '',
|
|
2891
|
+
logo: lastStep?.toBlockchainLogo || '',
|
|
2892
|
+
}}
|
|
2893
|
+
token={{
|
|
2894
|
+
symbol: lastStep?.toSymbol || '',
|
|
2895
|
+
image: lastStep?.toLogo || '',
|
|
2896
|
+
}}
|
|
2897
|
+
amount={toAmount}
|
|
2898
|
+
label={t('To')}
|
|
2899
|
+
loadingStatus={'success'}
|
|
2900
|
+
/>
|
|
2901
|
+
</>
|
|
2902
|
+
}
|
|
2903
|
+
*/
|
|
2904
|
+
pendingSwap: getFormatedPendingSwap(swap),
|
|
2874
2905
|
onCopy: handleCopy,
|
|
2875
2906
|
isCopied: isCopied,
|
|
2876
2907
|
onCancel: onCancel,
|