@lifi/widget 1.32.0 → 1.32.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.
Files changed (78) hide show
  1. package/AppDrawer.style.d.ts +1 -1
  2. package/cjs/AppDrawer.style.d.ts +1 -1
  3. package/cjs/components/ActiveSwaps/ActiveSwaps.style.d.ts +2 -2
  4. package/cjs/components/Header/Header.style.d.ts +1 -1
  5. package/cjs/components/ReverseTokensButton/ReverseTokensButton.style.d.ts +1 -1
  6. package/cjs/components/SendToWallet/SendToWallet.style.d.ts +1 -1
  7. package/cjs/components/Step/StepProcess.style.d.ts +1 -1
  8. package/cjs/components/SwapInput/SwapInput.style.d.ts +1 -1
  9. package/cjs/components/SwapInput/SwapInputAdornment.style.d.ts +1 -1
  10. package/cjs/components/SwapRouteCard/SwapRouteCard.style.d.ts +1 -1
  11. package/cjs/components/TokenList/TokenList.style.d.ts +1 -1
  12. package/cjs/config/version.d.ts +1 -1
  13. package/cjs/config/version.js +1 -1
  14. package/cjs/hooks/useTools.js +1 -2
  15. package/cjs/i18n/en.json +0 -4
  16. package/cjs/i18n/uk.json +8 -8
  17. package/cjs/pages/SettingsPage/ColorSchemeButtonGroup.style.d.ts +1 -1
  18. package/cjs/providers/WidgetProvider/WidgetProvider.js +3 -5
  19. package/cjs/stores/StoreProvider.js +1 -7
  20. package/cjs/stores/chains/index.d.ts +1 -2
  21. package/cjs/stores/chains/index.js +1 -2
  22. package/cjs/stores/chains/useChainOrder.js +2 -2
  23. package/cjs/stores/chains/useChainOrderStore.d.ts +3 -0
  24. package/cjs/stores/chains/{createChainOrderStore.js → useChainOrderStore.js} +3 -4
  25. package/cjs/stores/routes/types.d.ts +1 -1
  26. package/cjs/stores/routes/useRecommendedRouteStore.d.ts +10 -2
  27. package/cjs/stores/routes/useRecommendedRouteStore.js +30 -2
  28. package/cjs/stores/settings/index.d.ts +1 -1
  29. package/cjs/stores/settings/index.js +1 -1
  30. package/cjs/stores/settings/useAppearance.js +2 -2
  31. package/cjs/stores/settings/useSettings.js +2 -2
  32. package/cjs/stores/settings/useSettingsStore.d.ts +6 -0
  33. package/cjs/stores/settings/{createSettingsStore.js → useSettingsStore.js} +20 -4
  34. package/components/ActiveSwaps/ActiveSwaps.style.d.ts +2 -2
  35. package/components/Header/Header.style.d.ts +1 -1
  36. package/components/ReverseTokensButton/ReverseTokensButton.style.d.ts +1 -1
  37. package/components/SendToWallet/SendToWallet.style.d.ts +1 -1
  38. package/components/Step/StepProcess.style.d.ts +1 -1
  39. package/components/SwapInput/SwapInput.style.d.ts +1 -1
  40. package/components/SwapInput/SwapInputAdornment.style.d.ts +1 -1
  41. package/components/SwapRouteCard/SwapRouteCard.style.d.ts +1 -1
  42. package/components/TokenList/TokenList.style.d.ts +1 -1
  43. package/config/version.d.ts +1 -1
  44. package/config/version.js +1 -1
  45. package/hooks/useTools.js +2 -3
  46. package/i18n/en.json +0 -4
  47. package/i18n/uk.json +8 -8
  48. package/package.json +1 -1
  49. package/pages/SettingsPage/ColorSchemeButtonGroup.style.d.ts +1 -1
  50. package/providers/WidgetProvider/WidgetProvider.js +5 -7
  51. package/stores/StoreProvider.js +2 -8
  52. package/stores/chains/index.d.ts +1 -2
  53. package/stores/chains/index.js +1 -2
  54. package/stores/chains/useChainOrder.js +1 -1
  55. package/stores/chains/useChainOrderStore.d.ts +3 -0
  56. package/stores/chains/{createChainOrderStore.js → useChainOrderStore.js} +2 -2
  57. package/stores/routes/types.d.ts +1 -1
  58. package/stores/routes/useRecommendedRouteStore.d.ts +10 -2
  59. package/stores/routes/useRecommendedRouteStore.js +25 -1
  60. package/stores/settings/index.d.ts +1 -1
  61. package/stores/settings/index.js +1 -1
  62. package/stores/settings/useAppearance.js +1 -1
  63. package/stores/settings/useSettings.js +1 -1
  64. package/stores/settings/useSettingsStore.d.ts +6 -0
  65. package/stores/settings/{createSettingsStore.js → useSettingsStore.js} +18 -2
  66. package/tsconfig.cjs.tsbuildinfo +1 -1
  67. package/cjs/stores/chains/ChainOrderStore.d.ts +0 -9
  68. package/cjs/stores/chains/ChainOrderStore.js +0 -32
  69. package/cjs/stores/chains/createChainOrderStore.d.ts +0 -4
  70. package/cjs/stores/settings/SettingsStore.d.ts +0 -11
  71. package/cjs/stores/settings/SettingsStore.js +0 -48
  72. package/cjs/stores/settings/createSettingsStore.d.ts +0 -5
  73. package/stores/chains/ChainOrderStore.d.ts +0 -9
  74. package/stores/chains/ChainOrderStore.js +0 -26
  75. package/stores/chains/createChainOrderStore.d.ts +0 -4
  76. package/stores/settings/SettingsStore.d.ts +0 -11
  77. package/stores/settings/SettingsStore.js +0 -41
  78. package/stores/settings/createSettingsStore.d.ts +0 -5
@@ -17,7 +17,7 @@ export declare const Label: import("@emotion/styled").StyledComponent<import("@m
17
17
  export declare const IconButton: import("@emotion/styled").StyledComponent<{
18
18
  children?: import("react").ReactNode;
19
19
  classes?: Partial<import("@mui/material").IconButtonClasses> | undefined;
20
- color?: "inherit" | "default" | "success" | "warning" | "error" | "info" | "primary" | "secondary" | undefined;
20
+ color?: "inherit" | "default" | "success" | "warning" | "error" | "primary" | "secondary" | "info" | undefined;
21
21
  disabled?: boolean | undefined;
22
22
  disableFocusRipple?: boolean | undefined;
23
23
  edge?: false | "end" | "start" | undefined;
@@ -35,4 +35,4 @@ export declare const ListItem: import("@emotion/styled").StyledComponent<{
35
35
  } | undefined;
36
36
  } & import("@mui/material/OverridableComponent").CommonProps & Omit<Omit<import("react").DetailedHTMLProps<import("react").LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & {
37
37
  ref?: ((instance: HTMLLIElement | null) => void) | import("react").RefObject<HTMLLIElement> | null | undefined;
38
- }, "button" | "className" | "style" | "classes" | "children" | "disabled" | "sx" | "alignItems" | "autoFocus" | "dense" | "divider" | "components" | "componentsProps" | "slotProps" | "slots" | "selected" | "disableGutters" | "ContainerComponent" | "ContainerProps" | "disablePadding" | "secondaryAction"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
38
+ }, "button" | "className" | "style" | "classes" | "children" | "disabled" | "sx" | "alignItems" | "autoFocus" | "dense" | "divider" | "components" | "slotProps" | "slots" | "componentsProps" | "selected" | "disableGutters" | "ContainerComponent" | "ContainerProps" | "disablePadding" | "secondaryAction"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
@@ -1,2 +1,2 @@
1
1
  export declare const name = "@lifi/widget";
2
- export declare const version = "1.32.0";
2
+ export declare const version = "1.32.1";
package/config/version.js CHANGED
@@ -1,2 +1,2 @@
1
1
  export const name = '@lifi/widget';
2
- export const version = '1.32.0';
2
+ export const version = '1.32.1';
package/hooks/useTools.js CHANGED
@@ -1,10 +1,9 @@
1
1
  import { useQuery } from '@tanstack/react-query';
2
2
  import { isItemAllowed, useLiFi, useWidgetConfig } from '../providers';
3
- import { useSettingsStoreContext } from '../stores';
3
+ import { useSettingsStore } from '../stores';
4
4
  export const useTools = () => {
5
5
  const lifi = useLiFi();
6
6
  const { bridges, exchanges } = useWidgetConfig();
7
- const settingsStoreContext = useSettingsStoreContext();
8
7
  const { data } = useQuery(['tools'], async () => {
9
8
  const tools = await lifi.getTools();
10
9
  return {
@@ -13,7 +12,7 @@ export const useTools = () => {
13
12
  };
14
13
  }, {
15
14
  onSuccess(data) {
16
- const { initializeTools } = settingsStoreContext.getState();
15
+ const { initializeTools } = useSettingsStore.getState();
17
16
  initializeTools('Bridges', data.bridges.map((bridge) => bridge.key));
18
17
  initializeTools('Exchanges', data.exchanges.map((exchange) => exchange.key));
19
18
  },
package/i18n/en.json CHANGED
@@ -56,7 +56,6 @@
56
56
  "title": "Language"
57
57
  },
58
58
  "settings": {
59
- "advancedPreferences": "Advanced preferences",
60
59
  "enabledBridges": "Enabled bridges",
61
60
  "enabledExchanges": "Enabled exchanges",
62
61
  "gasPrice": {
@@ -65,10 +64,7 @@
65
64
  "slow": "Slow",
66
65
  "title": "Gas price"
67
66
  },
68
- "resetToDefault": "Reset to default",
69
67
  "routePriority": "Route priority",
70
- "selectEnabledBridges": "Select enabled bridges",
71
- "selectEnabledExchanges": "Select enabled exchanges",
72
68
  "showDestinationWallet": "Show destination wallet",
73
69
  "slippage": "Slippage"
74
70
  },
package/i18n/uk.json CHANGED
@@ -6,7 +6,6 @@
6
6
  "contactSupport": "Служба підтримки",
7
7
  "continue": "Продовжити",
8
8
  "copyAddress": "Скопіювати адресу",
9
- "viewOnExplorer": "Переглянути в оглядачі",
10
9
  "dark": "Темна",
11
10
  "delete": "Видалити",
12
11
  "disconnect": "Від'єднатись",
@@ -19,6 +18,8 @@
19
18
  "ok": "Ок",
20
19
  "okay": "Добре",
21
20
  "removeSwap": "Видалити своп",
21
+ "reset": "Скинути",
22
+ "resetSettings": "Скинути налаштування",
22
23
  "restartSwap": "Перезапустити своп",
23
24
  "reviewGasSwap": "Переглянути своп газу",
24
25
  "reviewSwap": "Переглянути своп",
@@ -27,7 +28,8 @@
27
28
  "startGasSwap": "Почати своп газу",
28
29
  "startSwap": "Почати своп",
29
30
  "swap": "Своп",
30
- "tryAgain": "Спробувати ще раз"
31
+ "tryAgain": "Спробувати ще раз",
32
+ "viewOnExplorer": "Переглянути в оглядачі"
31
33
  },
32
34
  "format": {
33
35
  "currency": "{{value, currency(currency: USD)}}",
@@ -54,7 +56,6 @@
54
56
  "title": "Мова"
55
57
  },
56
58
  "settings": {
57
- "advancedPreferences": "Розширені параметри",
58
59
  "enabledBridges": "Увімкнені мости",
59
60
  "enabledExchanges": "Увімкнені обмінники",
60
61
  "gasPrice": {
@@ -63,10 +64,7 @@
63
64
  "slow": "Повільно",
64
65
  "title": "Ціна на газ"
65
66
  },
66
- "resetToDefault": "Скинути налаштування",
67
67
  "routePriority": "Пріоритет маршруту",
68
- "selectEnabledBridges": "Виберіть увімкнені мости",
69
- "selectEnabledExchanges": "Виберіть увімкнені обмінники",
70
68
  "showDestinationWallet": "Показати цільовий гаманець",
71
69
  "slippage": "Прослизання"
72
70
  },
@@ -201,7 +199,8 @@
201
199
  "highValueLoss": "Вартість отриманих токенів значно нижча, ніж обмінені токени та вартість транзакції.",
202
200
  "insufficientFunds": "У вас недостатньо коштів для здійснення свопу.",
203
201
  "insufficientGas": "Потрібно додати хоча б:",
204
- "rateChanged": "Курс обміну змінився. Продовжуючи своп, ви приймете новий курс."
202
+ "rateChanged": "Курс обміну змінився. Продовжуючи своп, ви приймете новий курс.",
203
+ "resetSettings": "Це скине пріоритет вашого маршруту, прослизання, ціну газу, увімкнені мости та обмінники."
205
204
  },
206
205
  "title": {
207
206
  "deleteActiveSwaps": "Видалити всі активні свопи?",
@@ -209,7 +208,8 @@
209
208
  "deleteSwapHistory": "Видалити історію свопів?",
210
209
  "highValueLoss": "Висока втрата вартості",
211
210
  "insufficientGas": "Недостатня кількість газу",
212
- "rateChanged": "Курс змінився"
211
+ "rateChanged": "Курс змінився",
212
+ "resetSettings": "Скинути налаштування?"
213
213
  }
214
214
  }
215
215
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/widget",
3
- "version": "1.32.0",
3
+ "version": "1.32.1",
4
4
  "description": "LI.FI Widget for cross-chain bridging and swapping. It will drive your multi-chain strategy and attract new users from everywhere.",
5
5
  "main": "./cjs/index.js",
6
6
  "module": "./index.js",
@@ -2,7 +2,7 @@
2
2
  export declare const ToggleButton: import("@emotion/styled").StyledComponent<{
3
3
  children?: import("react").ReactNode;
4
4
  classes?: Partial<import("@mui/material").ToggleButtonClasses> | undefined;
5
- color?: "success" | "warning" | "error" | "info" | "primary" | "secondary" | "standard" | undefined;
5
+ color?: "success" | "warning" | "error" | "primary" | "secondary" | "info" | "standard" | undefined;
6
6
  disabled?: boolean | undefined;
7
7
  disableFocusRipple?: boolean | undefined;
8
8
  fullWidth?: boolean | undefined;
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { getChainByKey } from '@lifi/sdk';
3
- import { createContext, useContext, useEffect, useId, useMemo } from 'react';
4
- import { setDefaultSettings, useSettingsStoreContext } from '../../stores';
3
+ import { createContext, useContext, useId, useMemo } from 'react';
4
+ import { setDefaultSettings } from '../../stores';
5
5
  import { formatAmount } from '../../utils';
6
6
  const initialContext = {
7
7
  disabledChains: [],
@@ -10,7 +10,6 @@ const initialContext = {
10
10
  const WidgetContext = createContext(initialContext);
11
11
  export const useWidgetConfig = () => useContext(WidgetContext);
12
12
  export const WidgetProvider = ({ children, config: { fromChain, fromToken, toChain, toToken, fromAmount, ...config } = {}, }) => {
13
- const settingsStoreContext = useSettingsStoreContext();
14
13
  const elementId = useId();
15
14
  const value = useMemo(() => {
16
15
  try {
@@ -21,7 +20,7 @@ export const WidgetProvider = ({ children, config: { fromChain, fromToken, toCha
21
20
  delete searchParams[`${key}Token`];
22
21
  }
23
22
  });
24
- return {
23
+ const value = {
25
24
  ...config,
26
25
  fromChain: (searchParams.fromChain &&
27
26
  isNaN(parseInt(searchParams.fromChain, 10))) ||
@@ -48,14 +47,13 @@ export const WidgetProvider = ({ children, config: { fromChain, fromToken, toCha
48
47
  : fromAmount,
49
48
  elementId,
50
49
  };
50
+ setDefaultSettings(value);
51
+ return value;
51
52
  }
52
53
  catch (e) {
53
54
  console.warn(e);
54
55
  return { ...config, elementId };
55
56
  }
56
57
  }, [config, elementId, fromAmount, fromChain, fromToken, toChain, toToken]);
57
- useEffect(() => {
58
- setDefaultSettings(settingsStoreContext, value);
59
- }, [settingsStoreContext, value]);
60
58
  return (_jsx(WidgetContext.Provider, { value: value, children: children }));
61
59
  };
@@ -1,11 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { ChainOrderStoreProvider } from './chains';
3
- import { RouteExecutionStoreProvider } from './routes';
4
- import { SettingsStoreProvider } from './settings';
2
+ import { RecommendedRouteStoreProvider, RouteExecutionStoreProvider, } from './routes';
5
3
  export const StoreProvider = ({ children, namePrefix }) => {
6
- return (_jsx(RouteExecutionStoreProvider, { namePrefix: namePrefix, children: _jsx(SettingsStoreProvider
7
- // namePrefix={namePrefix}
8
- , { children: _jsx(ChainOrderStoreProvider
9
- // namePrefix={namePrefix}
10
- , { children: children }) }) }));
4
+ return (_jsx(RouteExecutionStoreProvider, { namePrefix: namePrefix, children: _jsx(RecommendedRouteStoreProvider, { children: children }) }));
11
5
  };
@@ -1,4 +1,3 @@
1
- export * from './ChainOrderStore';
2
- export * from './createChainOrderStore';
3
1
  export * from './types';
4
2
  export * from './useChainOrder';
3
+ export * from './useChainOrderStore';
@@ -1,4 +1,3 @@
1
- export * from './ChainOrderStore';
2
- export * from './createChainOrderStore';
3
1
  export * from './types';
4
2
  export * from './useChainOrder';
3
+ export * from './useChainOrderStore';
@@ -1,5 +1,5 @@
1
1
  import { shallow } from 'zustand/shallow';
2
- import { useChainOrderStore } from './ChainOrderStore';
2
+ import { useChainOrderStore } from '.';
3
3
  export const useChainOrder = () => {
4
4
  return useChainOrderStore((state) => [state.chainOrder, state.setChain], shallow);
5
5
  };
@@ -0,0 +1,3 @@
1
+ import type { ChainOrderState } from './types';
2
+ export declare const maxChainToOrder = 9;
3
+ export declare const useChainOrderStore: import("zustand").UseBoundStore<import("zustand").StoreApi<ChainOrderState>>;
@@ -1,7 +1,7 @@
1
1
  import { create } from 'zustand';
2
2
  import { persist } from 'zustand/middleware';
3
3
  export const maxChainToOrder = 9;
4
- export const createChainOrderStore = ({ namePrefix }) => create(persist((set, get) => ({
4
+ export const useChainOrderStore = create(persist((set, get) => ({
5
5
  chainOrder: [],
6
6
  availableChains: [],
7
7
  initializeChains: (chainIds) => {
@@ -43,7 +43,7 @@ export const createChainOrderStore = ({ namePrefix }) => create(persist((set, ge
43
43
  });
44
44
  },
45
45
  }), {
46
- name: `${namePrefix || 'li.fi'}-widget-chains-order`,
46
+ name: `li.fi-widget-chains-order`,
47
47
  version: 0,
48
48
  partialize: (state) => ({ chainOrder: state.chainOrder }),
49
49
  }));
@@ -19,7 +19,7 @@ export declare enum RouteExecutionStatus {
19
19
  Partial = 8,
20
20
  Refunded = 16
21
21
  }
22
- export interface RecommendedRouteStore {
22
+ export interface RecommendedRouteState {
23
23
  recommendedRoute?: Route;
24
24
  setRecommendedRoute: (route?: Route) => void;
25
25
  }
@@ -1,2 +1,10 @@
1
- import type { RecommendedRouteStore } from './types';
2
- export declare const useRecommendedRouteStore: import("zustand").UseBoundStore<import("zustand").StoreApi<RecommendedRouteStore>>;
1
+ /// <reference types="react" />
2
+ import type { StoreApi, UseBoundStore } from 'zustand';
3
+ import type { PersistStoreProviderProps } from '../types';
4
+ import type { RecommendedRouteState } from './types';
5
+ export declare const createRecommendedRouteStore: () => UseBoundStore<StoreApi<RecommendedRouteState>>;
6
+ export type RecommendedRouteStore = UseBoundStore<StoreApi<RecommendedRouteState>>;
7
+ export declare const RecommendedRouteStoreContext: import("react").Context<RecommendedRouteStore | null>;
8
+ export declare function RecommendedRouteStoreProvider({ children, ...props }: PersistStoreProviderProps): JSX.Element;
9
+ export declare function useRecommendedRouteStore<T>(selector: (state: RecommendedRouteState) => T, equalityFn?: (left: T, right: T) => boolean): T;
10
+ export declare function useRecommendedRouteStoreContext(): RecommendedRouteStore;
@@ -1,8 +1,32 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext, useRef } from 'react';
1
3
  import { create } from 'zustand';
2
- export const useRecommendedRouteStore = create((set) => ({
4
+ export const createRecommendedRouteStore = () => create((set) => ({
3
5
  setRecommendedRoute: (recommendedRoute) => {
4
6
  set(() => ({
5
7
  recommendedRoute,
6
8
  }));
7
9
  },
8
10
  }));
11
+ export const RecommendedRouteStoreContext = createContext(null);
12
+ export function RecommendedRouteStoreProvider({ children, ...props }) {
13
+ const storeRef = useRef();
14
+ if (!storeRef.current) {
15
+ storeRef.current = createRecommendedRouteStore();
16
+ }
17
+ return (_jsx(RecommendedRouteStoreContext.Provider, { value: storeRef.current, children: children }));
18
+ }
19
+ export function useRecommendedRouteStore(selector, equalityFn) {
20
+ const useStore = useContext(RecommendedRouteStoreContext);
21
+ if (!useStore) {
22
+ throw new Error(`You forgot to wrap your component in <${RecommendedRouteStoreProvider.name}>.`);
23
+ }
24
+ return useStore(selector, equalityFn);
25
+ }
26
+ export function useRecommendedRouteStoreContext() {
27
+ const useStore = useContext(RecommendedRouteStoreContext);
28
+ if (!useStore) {
29
+ throw new Error(`You forgot to wrap your component in <${RecommendedRouteStoreProvider.name}>.`);
30
+ }
31
+ return useStore;
32
+ }
@@ -1,5 +1,5 @@
1
- export * from './SettingsStore';
2
1
  export * from './types';
3
2
  export * from './useAppearance';
4
3
  export * from './useSendToWalletStore';
5
4
  export * from './useSettings';
5
+ export * from './useSettingsStore';
@@ -1,5 +1,5 @@
1
- export * from './SettingsStore';
2
1
  export * from './types';
3
2
  export * from './useAppearance';
4
3
  export * from './useSendToWalletStore';
5
4
  export * from './useSettings';
5
+ export * from './useSettingsStore';
@@ -1,5 +1,5 @@
1
1
  import { shallow } from 'zustand/shallow';
2
- import { useSettingsStore } from './SettingsStore';
2
+ import { useSettingsStore } from './useSettingsStore';
3
3
  export const useAppearance = () => {
4
4
  const [appearance, setValue] = useSettingsStore((state) => [state.appearance, state.setValue], shallow);
5
5
  const setAppearance = (appearance) => {
@@ -1,5 +1,5 @@
1
1
  import { shallow } from 'zustand/shallow';
2
- import { useSettingsStore } from './SettingsStore';
2
+ import { useSettingsStore } from './useSettingsStore';
3
3
  export const useSettings = (keys) => {
4
4
  return useSettingsStore((state) => keys.reduce((values, key) => {
5
5
  values[key] = state[key];
@@ -0,0 +1,6 @@
1
+ import type { WidgetConfig } from '../../types';
2
+ import type { SettingsProps, SettingsState } from './types';
3
+ export declare const defaultConfigurableSettings: Pick<SettingsState, 'routePriority' | 'slippage'>;
4
+ export declare const defaultSettings: SettingsProps;
5
+ export declare const useSettingsStore: import("zustand").UseBoundStore<import("zustand").StoreApi<SettingsState>>;
6
+ export declare const setDefaultSettings: (config?: WidgetConfig) => void;
@@ -12,7 +12,7 @@ export const defaultSettings = {
12
12
  enabledBridges: [],
13
13
  enabledExchanges: [],
14
14
  };
15
- export const createSettingsStore = ({ namePrefix }) => create(persist((set, get) => ({
15
+ export const useSettingsStore = create(persist((set, get) => ({
16
16
  ...defaultSettings,
17
17
  setValue: (key, value) => set(() => ({
18
18
  [key]: value,
@@ -71,7 +71,7 @@ export const createSettingsStore = ({ namePrefix }) => create(persist((set, get)
71
71
  get().initializeTools('Exchanges', exchanges, true);
72
72
  },
73
73
  }), {
74
- name: `${namePrefix || 'li.fi'}-widget-settings`,
74
+ name: `li.fi-widget-settings`,
75
75
  version: 2,
76
76
  partialize: (state) => {
77
77
  const { enabledBridges, enabledExchanges, ...partializedState } = state;
@@ -96,3 +96,19 @@ export const createSettingsStore = ({ namePrefix }) => create(persist((set, get)
96
96
  return persistedState;
97
97
  },
98
98
  }));
99
+ export const setDefaultSettings = (config) => {
100
+ const { slippage, routePriority, setValue } = useSettingsStore.getState();
101
+ const defaultSlippage = (config?.slippage ||
102
+ config?.sdkConfig?.defaultRouteOptions?.slippage ||
103
+ 0) * 100;
104
+ const defaultRoutePriority = config?.routePriority || config?.sdkConfig?.defaultRouteOptions?.order;
105
+ defaultConfigurableSettings.slippage = (defaultSlippage || defaultConfigurableSettings.slippage)?.toString();
106
+ defaultConfigurableSettings.routePriority =
107
+ defaultRoutePriority || defaultConfigurableSettings.routePriority;
108
+ if (!slippage) {
109
+ setValue('slippage', defaultConfigurableSettings.slippage);
110
+ }
111
+ if (!routePriority) {
112
+ setValue('routePriority', defaultConfigurableSettings.routePriority);
113
+ }
114
+ };