From 594c427c756c8a3004be25be629450ea352a00e4 Mon Sep 17 00:00:00 2001 From: Eugene Chybisov Date: Tue, 15 Nov 2022 14:33:17 +0000 Subject: [PATCH] fix: ability to set default slippage and route priority --- packages/widget-embedded/src/config.ts | 4 ++ packages/widget/src/hooks/useSwapRoutes.ts | 12 +++--- .../SettingsPage/RoutePrioritySelect.tsx | 3 +- .../src/pages/SettingsPage/SlippageInput.tsx | 4 +- .../WidgetProvider/WidgetProvider.tsx | 7 +++- packages/widget/src/stores/settings/types.ts | 8 ++-- .../src/stores/settings/useSettingsStore.ts | 41 +++++++++++++++---- packages/widget/src/types/widget.ts | 21 +++++++++- 8 files changed, 77 insertions(+), 23 deletions(-) diff --git a/packages/widget-embedded/src/config.ts b/packages/widget-embedded/src/config.ts index 298669846..b9c25656c 100644 --- a/packages/widget-embedded/src/config.ts +++ b/packages/widget-embedded/src/config.ts @@ -29,6 +29,10 @@ export const widgetBaseConfig: WidgetConfig = { // disabledUI: ['toAddress', 'fromAmount', 'toToken', 'fromToken'], sdkConfig: { apiUrl: 'https://staging.li.quest/v1/', + defaultRouteOptions: { + // slippage: 0.02, + // order: 'SAFEST', + }, }, tokens: { featured: [ diff --git a/packages/widget/src/hooks/useSwapRoutes.ts b/packages/widget/src/hooks/useSwapRoutes.ts index e978a0095..076d94edc 100644 --- a/packages/widget/src/hooks/useSwapRoutes.ts +++ b/packages/widget/src/hooks/useSwapRoutes.ts @@ -10,7 +10,7 @@ const refetchTime = 60_000; export const useSwapRoutes = () => { const lifi = useLiFi(); - const { variant } = useWidgetConfig(); + const { variant, sdkConfig } = useWidgetConfig(); const { account, provider } = useWallet(); const queryClient = useQueryClient(); const { slippage, enabledBridges, enabledExchanges, routePriority } = @@ -56,6 +56,7 @@ export const useSwapRoutes = () => { enabledExchanges, routePriority, variant, + sdkConfig?.defaultRouteOptions?.allowSwitchChain, ]; const previousDataUpdatedAt = queryClient.getQueryState(queryKey)?.dataUpdatedAt; @@ -83,6 +84,7 @@ export const useSwapRoutes = () => { enabledExchanges, routePriority, variant, + allowSwitchChain, ], signal, }) => { @@ -94,9 +96,9 @@ export const useSwapRoutes = () => { } catch { toWalletAddress = isAddress(toAddress) ? toAddress : fromAddress; } - const fromAmount = Big( - Number(fromTokenAmount) * 10 ** (fromToken?.decimals ?? 0), - ).toString(); + const fromAmount = Big(fromTokenAmount) + .mul(10 ** (fromToken?.decimals ?? 0)) + .toString(); const formattedSlippage = parseFloat(slippage) / 100; return lifi.getRoutes( { @@ -116,7 +118,7 @@ export const useSwapRoutes = () => { allow: enabledExchanges, }, order: routePriority, - allowSwitchChain: variant !== 'refuel', + allowSwitchChain: variant === 'refuel' ? false : allowSwitchChain, }, }, { signal }, diff --git a/packages/widget/src/pages/SettingsPage/RoutePrioritySelect.tsx b/packages/widget/src/pages/SettingsPage/RoutePrioritySelect.tsx index 2b298b8ef..2d2290c9f 100644 --- a/packages/widget/src/pages/SettingsPage/RoutePrioritySelect.tsx +++ b/packages/widget/src/pages/SettingsPage/RoutePrioritySelect.tsx @@ -11,6 +11,7 @@ export const RoutePrioritySelect: React.FC = () => { const { t } = useTranslation(); const setValue = useSettingsStore((state) => state.setValue); const { routePriority } = useSettings(['routePriority']); + const value = routePriority ?? ''; return ( @@ -18,7 +19,7 @@ export const RoutePrioritySelect: React.FC = () => {