@lifi/widget 3.24.1 → 3.24.2
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 +7 -0
- package/dist/esm/config/version.d.ts +1 -1
- package/dist/esm/config/version.js +1 -1
- package/dist/esm/hooks/useTokenSearch.js +4 -2
- package/dist/esm/hooks/useTokenSearch.js.map +1 -1
- package/dist/esm/hooks/useTokens.js +4 -2
- package/dist/esm/hooks/useTokens.js.map +1 -1
- package/dist/esm/utils/item.d.ts +9 -0
- package/dist/esm/utils/item.js +18 -0
- package/dist/esm/utils/item.js.map +1 -1
- package/package.json +1 -1
- package/package.json.tmp +1 -1
- package/src/config/version.ts +1 -1
- package/src/hooks/useTokenSearch.ts +9 -2
- package/src/hooks/useTokens.ts +9 -2
- package/src/utils/item.ts +26 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [3.24.2](https://github.com/lifinance/widget/compare/v3.24.1...v3.24.2) (2025-07-03)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* allow-deny - do not filter out tokens from unspecified chains ([#449](https://github.com/lifinance/widget/issues/449)) ([ced6cf6](https://github.com/lifinance/widget/commit/ced6cf68f329e31af0338b31fe18c5feed8417fb))
|
|
11
|
+
|
|
5
12
|
### [3.24.1](https://github.com/lifinance/widget/compare/v3.24.0...v3.24.1) (2025-07-02)
|
|
6
13
|
|
|
7
14
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export declare const name = "@lifi/widget";
|
|
2
|
-
export declare const version = "3.24.
|
|
2
|
+
export declare const version = "3.24.2";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getToken } from '@lifi/sdk';
|
|
2
2
|
import { useQuery, useQueryClient } from '@tanstack/react-query';
|
|
3
3
|
import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js';
|
|
4
|
-
import { isTokenAllowed } from '../utils/item.js';
|
|
4
|
+
import { filterConfigTokensByChain, isTokenAllowed } from '../utils/item.js';
|
|
5
5
|
import { getQueryKey } from '../utils/queries.js';
|
|
6
6
|
export const useTokenSearch = (chainId, tokenQuery, enabled, formType) => {
|
|
7
7
|
const queryClient = useQueryClient();
|
|
@@ -13,8 +13,10 @@ export const useTokenSearch = (chainId, tokenQuery, enabled, formType) => {
|
|
|
13
13
|
signal,
|
|
14
14
|
});
|
|
15
15
|
if (token) {
|
|
16
|
+
// Filter config tokens by chain before checking if token is allowed
|
|
17
|
+
const filteredConfigTokens = filterConfigTokensByChain(configTokens, formType, token.chainId);
|
|
16
18
|
// Return undefined if the token is denied
|
|
17
|
-
if (!isTokenAllowed(token,
|
|
19
|
+
if (!isTokenAllowed(token, filteredConfigTokens, formType)) {
|
|
18
20
|
return undefined;
|
|
19
21
|
}
|
|
20
22
|
queryClient.setQueriesData({ queryKey: [getQueryKey('tokens', keyPrefix)] }, (data) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTokenSearch.js","sourceRoot":"","sources":["../../../src/hooks/useTokenSearch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,QAAQ,EAAE,MAAM,WAAW,CAAA;AACvE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAA;AAG/E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"useTokenSearch.js","sourceRoot":"","sources":["../../../src/hooks/useTokenSearch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,QAAQ,EAAE,MAAM,WAAW,CAAA;AACvE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAA;AAG/E,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEjD,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,OAAgB,EAChB,UAAmB,EACnB,OAAiB,EACjB,QAAmB,EACnB,EAAE;IACF,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IACpC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,eAAe,EAAE,CAAA;IAE7D,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;QACnC,QAAQ,EAAE,CAAC,WAAW,CAAC,cAAc,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC;QACvE,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;YAC/D,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAkB,EAAE,UAAoB,EAAE;gBACrE,MAAM;aACP,CAAC,CAAA;YAEF,IAAI,KAAK,EAAE,CAAC;gBACV,oEAAoE;gBACpE,MAAM,oBAAoB,GAAG,yBAAyB,CACpD,YAAY,EACZ,QAAQ,EACR,KAAK,CAAC,OAAO,CACd,CAAA;gBAED,0CAA0C;gBAC1C,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,oBAAoB,EAAE,QAAQ,CAAC,EAAE,CAAC;oBAC3D,OAAO,SAAS,CAAA;gBAClB,CAAC;gBAED,WAAW,CAAC,cAAc,CACxB,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,EAAE,EAChD,CAAC,IAAI,EAAE,EAAE;oBACP,IACE,IAAI;wBACJ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAiB,CAAC,EAAE,IAAI,CACnC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CACnC,EACD,CAAC;wBACD,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,EAAE,CAAA;wBAC9B,UAAU,CAAC,MAAM,CAAC,OAAiB,CAAC,EAAE,IAAI,CAAC,KAAoB,CAAC,CAAA;wBAChE,OAAO,UAAU,CAAA;oBACnB,CAAC;gBACH,CAAC,CACF,CAAA;YACH,CAAC;YACD,OAAO,KAAoB,CAAA;QAC7B,CAAC;QAED,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,UAAU,IAAI,OAAO,CAAC;QAClD,KAAK,EAAE,KAAK;KACb,CAAC,CAAA;IACF,OAAO;QACL,KAAK,EAAE,IAAI;QACX,SAAS;KACV,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -2,7 +2,7 @@ import { ChainType, getTokens } from '@lifi/sdk';
|
|
|
2
2
|
import { useQuery } from '@tanstack/react-query';
|
|
3
3
|
import { useMemo } from 'react';
|
|
4
4
|
import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js';
|
|
5
|
-
import { isTokenAllowed } from '../utils/item.js';
|
|
5
|
+
import { filterConfigTokensByChain, isTokenAllowed } from '../utils/item.js';
|
|
6
6
|
import { getQueryKey } from '../utils/queries.js';
|
|
7
7
|
import { useChains } from './useChains.js';
|
|
8
8
|
export const useTokens = (selectedChainId, formType) => {
|
|
@@ -35,9 +35,11 @@ export const useTokens = (selectedChainId, formType) => {
|
|
|
35
35
|
if (includedTokens?.length) {
|
|
36
36
|
filteredTokens = [...includedTokens, ...filteredTokens];
|
|
37
37
|
}
|
|
38
|
+
// Filter config tokens by chain before checking if token is allowed
|
|
39
|
+
const filteredConfigTokens = filterConfigTokensByChain(configTokens, formType, selectedChainId);
|
|
38
40
|
// Get the appropriate allow/deny lists based on formType
|
|
39
41
|
filteredTokens = filteredTokens.filter((token) => token.chainId === selectedChainId &&
|
|
40
|
-
isTokenAllowed(token,
|
|
42
|
+
isTokenAllowed(token, filteredConfigTokens, formType));
|
|
41
43
|
const filteredTokensMap = new Map(filteredTokens.map((token) => [token.address, token]));
|
|
42
44
|
const [popularTokens, featuredTokens] = ['popular', 'featured'].map((tokenType) => {
|
|
43
45
|
const typedConfigTokens = configTokens?.[tokenType]?.filter((token) => token.chainId === selectedChainId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTokens.js","sourceRoot":"","sources":["../../../src/hooks/useTokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAA;AAG/E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"useTokens.js","sourceRoot":"","sources":["../../../src/hooks/useTokens.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/utils/item.d.ts
CHANGED
|
@@ -4,4 +4,13 @@ import type { AllowDeny, WidgetTokens } from '../types/widget.js';
|
|
|
4
4
|
type IncludesFn<T> = (list: T[], item: T) => boolean;
|
|
5
5
|
export declare const isItemAllowed: <T>(item: T, items?: AllowDeny<T>, includes?: IncludesFn<T>) => boolean;
|
|
6
6
|
export declare const isTokenAllowed: (token: BaseToken, configTokens: WidgetTokens | undefined, formType: FormType | undefined) => boolean;
|
|
7
|
+
export declare const filterConfigTokensByChain: (configTokens: WidgetTokens | undefined, formType: FormType | undefined, chainId: number) => {
|
|
8
|
+
allow: BaseToken[];
|
|
9
|
+
deny: BaseToken[];
|
|
10
|
+
featured?: import("@lifi/sdk").StaticToken[];
|
|
11
|
+
include?: import("@lifi/sdk").Token[];
|
|
12
|
+
popular?: import("@lifi/sdk").StaticToken[];
|
|
13
|
+
from?: AllowDeny<BaseToken>;
|
|
14
|
+
to?: AllowDeny<BaseToken>;
|
|
15
|
+
} | undefined;
|
|
7
16
|
export {};
|
package/dist/esm/utils/item.js
CHANGED
|
@@ -11,4 +11,22 @@ export const isTokenAllowed = (token, configTokens, formType) => {
|
|
|
11
11
|
? isItemAllowed(token, configTokens?.[formType], tokenIncludes)
|
|
12
12
|
: true));
|
|
13
13
|
};
|
|
14
|
+
export const filterConfigTokensByChain = (configTokens, formType, chainId) => {
|
|
15
|
+
if (!configTokens) {
|
|
16
|
+
return configTokens;
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
...configTokens,
|
|
20
|
+
allow: configTokens.allow?.filter((t) => t.chainId === chainId) ?? [],
|
|
21
|
+
deny: configTokens.deny?.filter((t) => t.chainId === chainId) ?? [],
|
|
22
|
+
...(formType && {
|
|
23
|
+
[formType]: {
|
|
24
|
+
allow: configTokens[formType]?.allow?.filter((t) => t.chainId === chainId) ??
|
|
25
|
+
[],
|
|
26
|
+
deny: configTokens[formType]?.deny?.filter((t) => t.chainId === chainId) ??
|
|
27
|
+
[],
|
|
28
|
+
},
|
|
29
|
+
}),
|
|
30
|
+
};
|
|
31
|
+
};
|
|
14
32
|
//# sourceMappingURL=item.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.js","sourceRoot":"","sources":["../../../src/utils/item.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAAO,EACP,KAAoB,EACpB,WAA0B,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAClD,EAAE;IACX,IAAI,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACpC,CAAC;IAED,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,CAAA;AAC3C,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,IAAiB,EAAE,IAAe,EAAE,EAAE,CAC3D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,CAAA;AAE5E,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,KAAgB,EAChB,YAAsC,EACtC,QAA8B,EAC9B,EAAE;IACF,OAAO,CACL,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,CAAC;QACjD,CAAC,QAAQ;YACP,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;YAC/D,CAAC,CAAC,IAAI,CAAC,CACV,CAAA;AACH,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"item.js","sourceRoot":"","sources":["../../../src/utils/item.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAAO,EACP,KAAoB,EACpB,WAA0B,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAClD,EAAE;IACX,IAAI,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACpC,CAAC;IAED,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,CAAA;AAC3C,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,IAAiB,EAAE,IAAe,EAAE,EAAE,CAC3D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,CAAA;AAE5E,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,KAAgB,EAChB,YAAsC,EACtC,QAA8B,EAC9B,EAAE;IACF,OAAO,CACL,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,CAAC;QACjD,CAAC,QAAQ;YACP,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;YAC/D,CAAC,CAAC,IAAI,CAAC,CACV,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,YAAsC,EACtC,QAA8B,EAC9B,OAAe,EACf,EAAE;IACF,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,YAAY,CAAA;IACrB,CAAC;IAED,OAAO;QACL,GAAG,YAAY;QACf,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,EAAE;QACrE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,EAAE;QACnE,GAAG,CAAC,QAAQ,IAAI;YACd,CAAC,QAAQ,CAAC,EAAE;gBACV,KAAK,EACH,YAAY,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC;oBACnE,EAAE;gBACJ,IAAI,EACF,YAAY,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC;oBAClE,EAAE;aACL;SACF,CAAC;KACH,CAAA;AACH,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lifi/widget",
|
|
3
|
-
"version": "3.24.
|
|
3
|
+
"version": "3.24.2",
|
|
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
|
"type": "module",
|
|
6
6
|
"main": "./dist/esm/index.js",
|
package/package.json.tmp
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lifi/widget",
|
|
3
|
-
"version": "3.24.
|
|
3
|
+
"version": "3.24.2",
|
|
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
|
"type": "module",
|
|
6
6
|
"main": "./src/index.ts",
|
package/src/config/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export const name = '@lifi/widget'
|
|
2
|
-
export const version = '3.24.
|
|
2
|
+
export const version = '3.24.2'
|
|
@@ -3,7 +3,7 @@ import { useQuery, useQueryClient } from '@tanstack/react-query'
|
|
|
3
3
|
import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'
|
|
4
4
|
import type { FormType } from '../stores/form/types.js'
|
|
5
5
|
import type { TokenAmount } from '../types/token.js'
|
|
6
|
-
import { isTokenAllowed } from '../utils/item.js'
|
|
6
|
+
import { filterConfigTokensByChain, isTokenAllowed } from '../utils/item.js'
|
|
7
7
|
import { getQueryKey } from '../utils/queries.js'
|
|
8
8
|
|
|
9
9
|
export const useTokenSearch = (
|
|
@@ -23,8 +23,15 @@ export const useTokenSearch = (
|
|
|
23
23
|
})
|
|
24
24
|
|
|
25
25
|
if (token) {
|
|
26
|
+
// Filter config tokens by chain before checking if token is allowed
|
|
27
|
+
const filteredConfigTokens = filterConfigTokensByChain(
|
|
28
|
+
configTokens,
|
|
29
|
+
formType,
|
|
30
|
+
token.chainId
|
|
31
|
+
)
|
|
32
|
+
|
|
26
33
|
// Return undefined if the token is denied
|
|
27
|
-
if (!isTokenAllowed(token,
|
|
34
|
+
if (!isTokenAllowed(token, filteredConfigTokens, formType)) {
|
|
28
35
|
return undefined
|
|
29
36
|
}
|
|
30
37
|
|
package/src/hooks/useTokens.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { useMemo } from 'react'
|
|
|
4
4
|
import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'
|
|
5
5
|
import type { FormType } from '../stores/form/types.js'
|
|
6
6
|
import type { TokenAmount } from '../types/token.js'
|
|
7
|
-
import { isTokenAllowed } from '../utils/item.js'
|
|
7
|
+
import { filterConfigTokensByChain, isTokenAllowed } from '../utils/item.js'
|
|
8
8
|
import { getQueryKey } from '../utils/queries.js'
|
|
9
9
|
import { useChains } from './useChains.js'
|
|
10
10
|
|
|
@@ -47,11 +47,18 @@ export const useTokens = (selectedChainId?: number, formType?: FormType) => {
|
|
|
47
47
|
filteredTokens = [...includedTokens, ...filteredTokens]
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
+
// Filter config tokens by chain before checking if token is allowed
|
|
51
|
+
const filteredConfigTokens = filterConfigTokensByChain(
|
|
52
|
+
configTokens,
|
|
53
|
+
formType,
|
|
54
|
+
selectedChainId
|
|
55
|
+
)
|
|
56
|
+
|
|
50
57
|
// Get the appropriate allow/deny lists based on formType
|
|
51
58
|
filteredTokens = filteredTokens.filter(
|
|
52
59
|
(token) =>
|
|
53
60
|
token.chainId === selectedChainId &&
|
|
54
|
-
isTokenAllowed(token,
|
|
61
|
+
isTokenAllowed(token, filteredConfigTokens, formType)
|
|
55
62
|
)
|
|
56
63
|
|
|
57
64
|
const filteredTokensMap = new Map(
|
package/src/utils/item.ts
CHANGED
|
@@ -31,3 +31,29 @@ export const isTokenAllowed = (
|
|
|
31
31
|
: true)
|
|
32
32
|
)
|
|
33
33
|
}
|
|
34
|
+
|
|
35
|
+
export const filterConfigTokensByChain = (
|
|
36
|
+
configTokens: WidgetTokens | undefined,
|
|
37
|
+
formType: FormType | undefined,
|
|
38
|
+
chainId: number
|
|
39
|
+
) => {
|
|
40
|
+
if (!configTokens) {
|
|
41
|
+
return configTokens
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return {
|
|
45
|
+
...configTokens,
|
|
46
|
+
allow: configTokens.allow?.filter((t) => t.chainId === chainId) ?? [],
|
|
47
|
+
deny: configTokens.deny?.filter((t) => t.chainId === chainId) ?? [],
|
|
48
|
+
...(formType && {
|
|
49
|
+
[formType]: {
|
|
50
|
+
allow:
|
|
51
|
+
configTokens[formType]?.allow?.filter((t) => t.chainId === chainId) ??
|
|
52
|
+
[],
|
|
53
|
+
deny:
|
|
54
|
+
configTokens[formType]?.deny?.filter((t) => t.chainId === chainId) ??
|
|
55
|
+
[],
|
|
56
|
+
},
|
|
57
|
+
}),
|
|
58
|
+
}
|
|
59
|
+
}
|