@rango-dev/widget-embedded 0.23.1-next.20 → 0.23.1-next.22
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/components/HeaderButtons/HeaderButtons.styles.d.ts +324 -0
- package/dist/components/HeaderButtons/HeaderButtons.styles.d.ts.map +1 -1
- package/dist/components/HeaderButtons/WalletButton.d.ts.map +1 -1
- package/dist/constants/searchFor.d.ts +7 -0
- package/dist/constants/searchFor.d.ts.map +1 -0
- package/dist/index.js +2 -2
- package/dist/index.js.map +4 -4
- package/dist/pages/SelectSwapItemsPage.d.ts.map +1 -1
- package/dist/store/slices/data.d.ts +3 -1
- package/dist/store/slices/data.d.ts.map +1 -1
- package/dist/utils/common.d.ts +4 -0
- package/dist/utils/common.d.ts.map +1 -1
- package/dist/utils/meta.d.ts +1 -0
- package/dist/utils/meta.d.ts.map +1 -1
- package/dist/utils/wallets.d.ts +1 -1
- package/dist/utils/wallets.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/components/HeaderButtons/HeaderButtons.styles.ts +19 -1
- package/src/components/HeaderButtons/RefreshButton.tsx +1 -1
- package/src/components/HeaderButtons/WalletButton.tsx +26 -6
- package/src/constants/searchFor.ts +6 -0
- package/src/containers/Settings/Lists.tsx +6 -6
- package/src/pages/SelectSwapItemsPage.tsx +2 -7
- package/src/store/slices/data.ts +74 -29
- package/src/utils/common.ts +181 -0
- package/src/utils/meta.ts +21 -0
- package/src/utils/wallets.ts +5 -47
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectSwapItemsPage.d.ts","sourceRoot":"","sources":["../../src/pages/SelectSwapItemsPage.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAmB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SelectSwapItemsPage.d.ts","sourceRoot":"","sources":["../../src/pages/SelectSwapItemsPage.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAaxC,UAAU,SAAS;IACjB,IAAI,EAAE,QAAQ,GAAG,aAAa,CAAC;CAChC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,qBAiGnD"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ConfigSlice } from './config';
|
|
2
|
+
import type { Balance } from '../../types';
|
|
2
3
|
import type { BlockchainMeta, SwapperMeta, Token } from 'rango-sdk';
|
|
3
4
|
import type { StateCreator } from 'zustand';
|
|
4
5
|
type BlockchainOptions = {
|
|
@@ -8,10 +9,11 @@ type TokenOptions = {
|
|
|
8
9
|
type: 'source' | 'destination';
|
|
9
10
|
blockchain?: string;
|
|
10
11
|
searchFor?: string;
|
|
12
|
+
getBalanceFor?: (token: Token) => Balance | null;
|
|
11
13
|
};
|
|
12
14
|
export type FetchStatus = 'loading' | 'success' | 'failed';
|
|
13
15
|
export interface DataSlice {
|
|
14
|
-
|
|
16
|
+
_blockchainsMapByName: Map<string, BlockchainMeta>;
|
|
15
17
|
_tokens: Token[];
|
|
16
18
|
_popularTokens: Token[];
|
|
17
19
|
_swappers: SwapperMeta[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/store/slices/data.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/store/slices/data.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAS5C,KAAK,iBAAiB,GAAG;IACvB,IAAI,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;CACjC,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,QAAQ,GAAG,aAAa,CAAC;IAE/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,GAAG,IAAI,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC3D,MAAM,WAAW,SAAS;IACxB,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACnD,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,cAAc,EAAE,KAAK,EAAE,CAAC;IACxB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,iBAAiB,KAAK,cAAc,EAAE,CAAC;IAC/D,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,YAAY,KAAK,KAAK,EAAE,CAAC;IAC5C,QAAQ,EAAE,MAAM,WAAW,EAAE,CAAC;IAC9B,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,GAAG,aAAa,KAAK,OAAO,CAAC;IACzE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,eAAO,MAAM,eAAe,EAAE,YAAY,CACxC,SAAS,GAAG,WAAW,EACvB;CAAE,EACF;CAAE,EACF,SAAS,CA4PT,CAAC"}
|
package/dist/utils/common.d.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
import type { Token } from 'rango-sdk';
|
|
1
2
|
export declare function removeDuplicateFrom<T>(array: T[]): T[];
|
|
2
3
|
export declare function areEqual(array1: (number | string)[], array2: (number | string)[]): boolean;
|
|
3
4
|
export declare function debounce(fn: Function, time: number): (...args: any) => void;
|
|
4
5
|
export declare function containsText(text: string, searchText: string): boolean;
|
|
6
|
+
export declare function exactText(text: string, searchText: string): boolean;
|
|
7
|
+
export declare function startWithText(text: string, searchText: string): boolean;
|
|
5
8
|
export declare const getContainer: () => HTMLElement;
|
|
6
9
|
export declare const getExpanded: () => HTMLElement;
|
|
10
|
+
export declare function compareWithSearchFor(tokenA: Token, tokenB: Token, searchFor?: string): number;
|
|
7
11
|
//# sourceMappingURL=common.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/utils/common.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/utils/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAWvC,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAEtD;AAED,wBAAgB,QAAQ,CACtB,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAC3B,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,WAK5B;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAGvB,GAAG,UAS9B;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAGtE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAEvE;AAED,eAAO,MAAM,YAAY,mBACyC,CAAC;AAEnE,eAAO,MAAM,WAAW,mBAC8C,CAAC;AAsDvE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,KAAK,EACb,MAAM,EAAE,KAAK,EACb,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CA0GR"}
|
package/dist/utils/meta.d.ts
CHANGED
|
@@ -4,4 +4,5 @@ export declare function getBlockchainShortNameFor(blockchainName: string, blockc
|
|
|
4
4
|
export declare function getSwapperDisplayName(swapperId: string, swappers: SwapperMeta[]): string | undefined;
|
|
5
5
|
export declare function findToken(t: Asset, tokens: Token[]): Token | null;
|
|
6
6
|
export declare function findBlockchain(name: string, blockchains: BlockchainMeta[]): BlockchainMeta | null;
|
|
7
|
+
export declare function isTokenNative(token: Token, blockchain: BlockchainMeta | undefined): boolean;
|
|
7
8
|
//# sourceMappingURL=meta.d.ts.map
|
package/dist/utils/meta.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/utils/meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAI3E,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,cAAc,EAAE,GAC5B,MAAM,GAAG,SAAS,CAGpB;AACD,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,cAAc,EAAE,GAC5B,MAAM,GAAG,SAAS,CAGpB;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,WAAW,EAAE,sBAGxB;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,gBAElD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,yBAEzE"}
|
|
1
|
+
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/utils/meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAI3E,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,cAAc,EAAE,GAC5B,MAAM,GAAG,SAAS,CAGpB;AACD,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,cAAc,EAAE,GAC5B,MAAM,GAAG,SAAS,CAGpB;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,WAAW,EAAE,sBAGxB;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,gBAElD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,yBAEzE;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,cAAc,GAAG,SAAS,WAiBvC"}
|
package/dist/utils/wallets.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export declare const getUsdPrice: (blockchain: string, symbol: string, address:
|
|
|
17
17
|
export declare const isExperimentalChain: (blockchains: BlockchainMeta[], wallet: string) => boolean;
|
|
18
18
|
export declare const getKeplrCompatibleConnectedWallets: (selectableWallets: Wallet[]) => WalletType[];
|
|
19
19
|
export declare function formatBalance(balance: Balance | null): Balance | null;
|
|
20
|
-
export declare function
|
|
20
|
+
export declare function compareTokenBalance(token1Balance: Balance | null, token2Balance: Balance | null): number;
|
|
21
21
|
export declare function areTokensEqual(tokenA: Pick<Token, 'blockchain' | 'symbol' | 'address'> | null, tokenB: Pick<Token, 'blockchain' | 'symbol' | 'address'> | null): boolean;
|
|
22
22
|
export declare function sortWalletsBasedOnConnectionState(wallets: ModalWalletInfo[]): ModalWalletInfo[];
|
|
23
23
|
export declare function getConciseAddress(address: string, maxChars?: number, ellipsisLength?: number): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallets.d.ts","sourceRoot":"","sources":["../../src/utils/wallets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EACb,SAAS,EACT,aAAa,EACb,MAAM,EACP,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EACV,KAAK,EACL,OAAO,EACP,UAAU,EACV,WAAW,EACX,UAAU,EAEX,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAErE,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,eAAe,CAAC;AAuB5D,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAWvE;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,WAAW,EAC3C,aAAa,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,UAAU,EAC/C,IAAI,EAAE,UAAU,EAAE,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,eAAe,EAAE,CA6BnB;AAED,wBAAgB,6BAA6B,CAC3C,oBAAoB,EAAE,cAAc,EAAE,GACrC,OAAO,EAAE,GAAG,IAAI,CAUlB;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,MAAM,EAAE,EAClB,cAAc,EAAE,MAAM,EAAE,EACxB,mBAAmB,EAAE,OAAO,EAAE,GAAG,IAAI,EACrC,gBAAgB,EAAE,OAAO,GACxB,MAAM,EAAE,CAkFV;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,YA4B5D;AAID,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,eAAe,WAOjC;AAED,wBAAgB,cAAc,CAC5B,gBAAgB,EAAE,YAAY,EAC9B,MAAM,EAAE,KAAK,EAAE,GACd,YAAY,EAAE,CAuBhB;AAED,wBAAgB,yBAAyB,CACvC,eAAe,EAAE,eAAe,GAC/B,eAAe,CAEjB;AAED,eAAO,MAAM,uBAAuB,oBAAqB,eAAe,EAAE,WAwCzE,CAAC;AAQF,eAAO,MAAM,WAAW,eACV,MAAM,UACV,MAAM,WACL,MAAM,GAAG,IAAI,aACX,KAAK,EAAE,KACjB,MAAM,GAAG,IAQX,CAAC;AACF,eAAO,MAAM,mBAAmB,gBACjB,cAAc,EAAE,UACrB,MAAM,KACb,OAUF,CAAC;AAEF,eAAO,MAAM,kCAAkC,sBAC1B,MAAM,EAAE,KAC1B,UAAU,EAUZ,CAAC;AAEF,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,CAkBrE;
|
|
1
|
+
{"version":3,"file":"wallets.d.ts","sourceRoot":"","sources":["../../src/utils/wallets.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rango-dev/widget-embedded",
|
|
3
|
-
"version": "0.23.1-next.
|
|
3
|
+
"version": "0.23.1-next.22",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"source": "./src/index.ts",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"@rango-dev/queue-manager-core": "^0.26.0",
|
|
26
26
|
"@rango-dev/queue-manager-rango-preset": "^0.28.1-next.3",
|
|
27
27
|
"@rango-dev/queue-manager-react": "^0.26.0",
|
|
28
|
-
"@rango-dev/ui": "^0.29.1-next.
|
|
28
|
+
"@rango-dev/ui": "^0.29.1-next.16",
|
|
29
29
|
"@rango-dev/wallets-react": "^0.14.1-next.1",
|
|
30
30
|
"@rango-dev/wallets-shared": "^0.28.1-next.1",
|
|
31
31
|
"bignumber.js": "^9.1.1",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { darkTheme, IconButton, styled } from '@rango-dev/ui';
|
|
1
|
+
import { css, darkTheme, IconButton, styled } from '@rango-dev/ui';
|
|
2
2
|
|
|
3
3
|
export const HeaderButton = styled(IconButton, {
|
|
4
4
|
width: '$24',
|
|
@@ -76,3 +76,21 @@ export const InProgressTransactionBadgeContainer = styled('div', {
|
|
|
76
76
|
backgroundColor: '$background',
|
|
77
77
|
borderRadius: '100%',
|
|
78
78
|
});
|
|
79
|
+
|
|
80
|
+
export const rowStyles = css({
|
|
81
|
+
display: 'flex',
|
|
82
|
+
flexDirection: 'row',
|
|
83
|
+
justifyContent: 'center',
|
|
84
|
+
alignItems: 'center',
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
export const WalletImageContainer = styled('div', {
|
|
88
|
+
borderRadius: '100%',
|
|
89
|
+
border: '1.5px transparent solid',
|
|
90
|
+
'&:not(:first-child)': {
|
|
91
|
+
marginLeft: '-$6',
|
|
92
|
+
},
|
|
93
|
+
img: {
|
|
94
|
+
borderRadius: '100%',
|
|
95
|
+
},
|
|
96
|
+
});
|
|
@@ -70,7 +70,7 @@ function RefreshButton({ onClick }: { onClick: (() => void) | undefined }) {
|
|
|
70
70
|
onTransitionEnd={() => setIsRefetched(false)}
|
|
71
71
|
isRefetched={isRefetched}>
|
|
72
72
|
<RefreshProgressButton
|
|
73
|
-
size={
|
|
73
|
+
size={22}
|
|
74
74
|
color={!onClick ? 'gray' : 'black'}
|
|
75
75
|
progress={(elapsedTime / MAX_ELAPSED_TIME) * MAX_PERCENTAGE}
|
|
76
76
|
/>
|
|
@@ -1,17 +1,37 @@
|
|
|
1
1
|
import type { PropTypes } from './HeaderButtons.types';
|
|
2
2
|
|
|
3
3
|
import { i18n } from '@lingui/core';
|
|
4
|
-
import { Tooltip, WalletIcon } from '@rango-dev/ui';
|
|
4
|
+
import { Image, Tooltip, WalletIcon } from '@rango-dev/ui';
|
|
5
5
|
import React from 'react';
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { useWalletList } from '../../hooks/useWalletList';
|
|
8
|
+
|
|
9
|
+
import {
|
|
10
|
+
ConnectedIcon,
|
|
11
|
+
HeaderButton,
|
|
12
|
+
rowStyles,
|
|
13
|
+
WalletImageContainer,
|
|
14
|
+
} from './HeaderButtons.styles';
|
|
8
15
|
|
|
9
16
|
function WalletButton(props: PropTypes) {
|
|
17
|
+
const { list } = useWalletList({});
|
|
18
|
+
const connectedWallets = list.filter(
|
|
19
|
+
(wallet) => wallet.state === 'connected'
|
|
20
|
+
);
|
|
21
|
+
const content = !connectedWallets.length ? (
|
|
22
|
+
i18n.t('Connect Wallet')
|
|
23
|
+
) : (
|
|
24
|
+
<div className={rowStyles()}>
|
|
25
|
+
{connectedWallets.map((wallet) => (
|
|
26
|
+
<WalletImageContainer key={wallet.title}>
|
|
27
|
+
<Image src={wallet.image} size={14} />
|
|
28
|
+
</WalletImageContainer>
|
|
29
|
+
))}
|
|
30
|
+
</div>
|
|
31
|
+
);
|
|
32
|
+
|
|
10
33
|
return (
|
|
11
|
-
<Tooltip
|
|
12
|
-
container={props.container}
|
|
13
|
-
side="top"
|
|
14
|
-
content={i18n.t('Connect Wallet')}>
|
|
34
|
+
<Tooltip container={props.container} side="bottom" content={content}>
|
|
15
35
|
<HeaderButton variant="ghost" size="small" onClick={props.onClick}>
|
|
16
36
|
{props.isConnected && <ConnectedIcon />}
|
|
17
37
|
<WalletIcon size={18} color="black" />
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export const MIN_LENGTH_SYMBOL_EXACT_MATCH = 1;
|
|
2
|
+
export const MIN_LENGTH_SYMBOL_START_WITH = 2;
|
|
3
|
+
export const MIN_LENGTH_SYMBOL_CONTAINS = 3;
|
|
4
|
+
export const MIN_LENGTH_TOKEN_NAME_EXACT_MATCH = 3;
|
|
5
|
+
export const MIN_LENGTH_TOKEN_NAME_CONTAINS = 3;
|
|
6
|
+
export const MIN_LENGTH_TOKEN_ADDRESS_CONTAINS = 4;
|
|
@@ -50,7 +50,7 @@ const themesList = [
|
|
|
50
50
|
},
|
|
51
51
|
{
|
|
52
52
|
id: ThemeModeEnum.DARK,
|
|
53
|
-
icon: <DarkModeIcon color="black" size={
|
|
53
|
+
icon: <DarkModeIcon color="black" size={14} />,
|
|
54
54
|
tooltip: (
|
|
55
55
|
<Typography size="xsmall" variant="body">
|
|
56
56
|
{i18n.t('Dark')}
|
|
@@ -69,7 +69,7 @@ const themesList = [
|
|
|
69
69
|
];
|
|
70
70
|
|
|
71
71
|
const getThemeIcon = (theme: ThemeMode) => {
|
|
72
|
-
const iconProps: SvgIconProps = { color: 'gray', size:
|
|
72
|
+
const iconProps: SvgIconProps = { color: 'gray', size: 14 };
|
|
73
73
|
|
|
74
74
|
switch (theme) {
|
|
75
75
|
case 'auto':
|
|
@@ -156,7 +156,7 @@ export function SettingsLists() {
|
|
|
156
156
|
</>
|
|
157
157
|
),
|
|
158
158
|
onClick: () => navigate(navigationRoutes.bridges),
|
|
159
|
-
start: <BridgeIcon color="gray" size={
|
|
159
|
+
start: <BridgeIcon color="gray" size={14} />,
|
|
160
160
|
};
|
|
161
161
|
|
|
162
162
|
const exchangeItem = {
|
|
@@ -173,7 +173,7 @@ export function SettingsLists() {
|
|
|
173
173
|
<ChevronRightIcon color="gray" />
|
|
174
174
|
</>
|
|
175
175
|
),
|
|
176
|
-
start: <ExchangeIcon color="gray" size={
|
|
176
|
+
start: <ExchangeIcon color="gray" size={14} />,
|
|
177
177
|
onClick: () => navigate(navigationRoutes.exchanges),
|
|
178
178
|
};
|
|
179
179
|
|
|
@@ -184,7 +184,7 @@ export function SettingsLists() {
|
|
|
184
184
|
{i18n.t('Language')}
|
|
185
185
|
</Typography>
|
|
186
186
|
),
|
|
187
|
-
start: <LanguageIcon color="gray" size={
|
|
187
|
+
start: <LanguageIcon color="gray" size={14} />,
|
|
188
188
|
end: <ChevronRightIcon color="gray" />,
|
|
189
189
|
onClick: () => navigate(navigationRoutes.languages),
|
|
190
190
|
};
|
|
@@ -214,7 +214,7 @@ export function SettingsLists() {
|
|
|
214
214
|
</Tooltip>
|
|
215
215
|
</>
|
|
216
216
|
),
|
|
217
|
-
start: <DoneIcon color="gray" size={
|
|
217
|
+
start: <DoneIcon color="gray" size={14} />,
|
|
218
218
|
end: <Switch checked={infiniteApprove} />,
|
|
219
219
|
onClick: toggleInfiniteApprove,
|
|
220
220
|
};
|
|
@@ -14,7 +14,6 @@ import { useNavigateBack } from '../hooks/useNavigateBack';
|
|
|
14
14
|
import { useAppStore } from '../store/AppStore';
|
|
15
15
|
import { useQuoteStore } from '../store/quote';
|
|
16
16
|
import { useWalletsStore } from '../store/wallets';
|
|
17
|
-
import { sortTokens } from '../utils/wallets';
|
|
18
17
|
|
|
19
18
|
interface PropTypes {
|
|
20
19
|
type: 'source' | 'destination';
|
|
@@ -34,7 +33,6 @@ export function SelectSwapItemsPage(props: PropTypes) {
|
|
|
34
33
|
} = useQuoteStore();
|
|
35
34
|
const getBalanceFor = useWalletsStore.use.getBalanceFor();
|
|
36
35
|
const [searchedFor, setSearchedFor] = useState<string>('');
|
|
37
|
-
const { isTokenPinned } = useAppStore();
|
|
38
36
|
|
|
39
37
|
const selectedBlockchain = type === 'source' ? fromBlockchain : toBlockchain;
|
|
40
38
|
const selectedBlockchainName = selectedBlockchain?.name ?? '';
|
|
@@ -47,12 +45,9 @@ export function SelectSwapItemsPage(props: PropTypes) {
|
|
|
47
45
|
type,
|
|
48
46
|
blockchain: selectedBlockchainName,
|
|
49
47
|
searchFor: searchedFor,
|
|
48
|
+
getBalanceFor: getBalanceFor,
|
|
50
49
|
});
|
|
51
50
|
|
|
52
|
-
const checkIsTokenPinned = (token: Token) => isTokenPinned(token, type);
|
|
53
|
-
|
|
54
|
-
const tokensList = sortTokens(tokens, getBalanceFor, checkIsTokenPinned);
|
|
55
|
-
|
|
56
51
|
const updateBlockchain = (blockchain: BlockchainMeta) => {
|
|
57
52
|
if (type === 'source') {
|
|
58
53
|
setFromBlockchain(blockchain);
|
|
@@ -101,7 +96,7 @@ export function SelectSwapItemsPage(props: PropTypes) {
|
|
|
101
96
|
/>
|
|
102
97
|
<Divider size={16} />
|
|
103
98
|
<TokenList
|
|
104
|
-
list={
|
|
99
|
+
list={tokens}
|
|
105
100
|
selectedBlockchain={selectedBlockchainName}
|
|
106
101
|
searchedFor={searchedFor}
|
|
107
102
|
type={type}
|
package/src/store/slices/data.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
// We keep all the received data from server in this slice
|
|
2
2
|
|
|
3
3
|
import type { ConfigSlice } from './config';
|
|
4
|
+
import type { Balance } from '../../types';
|
|
4
5
|
import type { BlockchainMeta, SwapperMeta, Token } from 'rango-sdk';
|
|
5
6
|
import type { StateCreator } from 'zustand';
|
|
6
7
|
|
|
7
8
|
import { httpService as sdk } from '../../services/httpService';
|
|
8
|
-
import { containsText } from '../../utils/common';
|
|
9
|
+
import { compareWithSearchFor, containsText } from '../../utils/common';
|
|
9
10
|
import { isTokenExcludedInConfig } from '../../utils/configs';
|
|
11
|
+
import { isTokenNative } from '../../utils/meta';
|
|
10
12
|
import { sortLiquiditySourcesByGroupTitle } from '../../utils/settings';
|
|
11
|
-
import { areTokensEqual } from '../../utils/wallets';
|
|
13
|
+
import { areTokensEqual, compareTokenBalance } from '../../utils/wallets';
|
|
12
14
|
|
|
13
15
|
type BlockchainOptions = {
|
|
14
16
|
type?: 'source' | 'destination';
|
|
@@ -19,10 +21,12 @@ type TokenOptions = {
|
|
|
19
21
|
// filter by an specific blockchain
|
|
20
22
|
blockchain?: string;
|
|
21
23
|
searchFor?: string;
|
|
24
|
+
getBalanceFor?: (token: Token) => Balance | null;
|
|
22
25
|
};
|
|
26
|
+
|
|
23
27
|
export type FetchStatus = 'loading' | 'success' | 'failed';
|
|
24
28
|
export interface DataSlice {
|
|
25
|
-
|
|
29
|
+
_blockchainsMapByName: Map<string, BlockchainMeta>;
|
|
26
30
|
_tokens: Token[];
|
|
27
31
|
_popularTokens: Token[];
|
|
28
32
|
_swappers: SwapperMeta[];
|
|
@@ -31,7 +35,6 @@ export interface DataSlice {
|
|
|
31
35
|
tokens: (options?: TokenOptions) => Token[];
|
|
32
36
|
swappers: () => SwapperMeta[];
|
|
33
37
|
isTokenPinned: (token: Token, type: 'source' | 'destination') => boolean;
|
|
34
|
-
|
|
35
38
|
fetch: () => Promise<void>;
|
|
36
39
|
}
|
|
37
40
|
|
|
@@ -42,14 +45,17 @@ export const createDataSlice: StateCreator<
|
|
|
42
45
|
DataSlice
|
|
43
46
|
> = (set, get) => ({
|
|
44
47
|
// State
|
|
45
|
-
|
|
48
|
+
_blockchainsMapByName: new Map<string, BlockchainMeta>(),
|
|
46
49
|
_tokens: [],
|
|
47
50
|
_popularTokens: [],
|
|
48
51
|
_swappers: [],
|
|
49
52
|
fetchStatus: 'loading',
|
|
50
53
|
// Selectors
|
|
51
54
|
blockchains: (options) => {
|
|
52
|
-
const
|
|
55
|
+
const blockchainsMapByName = get()._blockchainsMapByName;
|
|
56
|
+
const blockchainsFromState = Array.from(
|
|
57
|
+
blockchainsMapByName?.values() || []
|
|
58
|
+
);
|
|
53
59
|
|
|
54
60
|
if (!options || !options?.type) {
|
|
55
61
|
return blockchainsFromState;
|
|
@@ -76,6 +82,7 @@ export const createDataSlice: StateCreator<
|
|
|
76
82
|
},
|
|
77
83
|
tokens: (options) => {
|
|
78
84
|
const tokensFromState = get()._tokens;
|
|
85
|
+
const blockchainsMapByName = get()._blockchainsMapByName;
|
|
79
86
|
|
|
80
87
|
if (!options || !options?.type) {
|
|
81
88
|
return tokensFromState;
|
|
@@ -127,29 +134,62 @@ export const createDataSlice: StateCreator<
|
|
|
127
134
|
|
|
128
135
|
return true;
|
|
129
136
|
})
|
|
130
|
-
.sort((
|
|
131
|
-
//
|
|
132
|
-
|
|
133
|
-
|
|
137
|
+
.sort((tokenA, tokenB) => {
|
|
138
|
+
//1. sort by pinned tokens
|
|
139
|
+
const isToken1Pinned = get().isTokenPinned(tokenA, options.type);
|
|
140
|
+
const isToken2Pinned = get().isTokenPinned(tokenB, options.type);
|
|
141
|
+
if (isToken1Pinned !== isToken2Pinned) {
|
|
142
|
+
return isToken1Pinned ? -1 : 1;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
//2. sort by balance
|
|
146
|
+
if (options.getBalanceFor) {
|
|
147
|
+
const token1Balance = options.getBalanceFor(tokenA);
|
|
148
|
+
const token2Balance = options.getBalanceFor(tokenB);
|
|
149
|
+
const balanceCompare = compareTokenBalance(
|
|
150
|
+
token1Balance,
|
|
151
|
+
token2Balance
|
|
152
|
+
);
|
|
153
|
+
if (balanceCompare !== 0) {
|
|
154
|
+
return balanceCompare;
|
|
155
|
+
}
|
|
134
156
|
}
|
|
135
|
-
|
|
136
|
-
|
|
157
|
+
|
|
158
|
+
//3. sort by token popularity
|
|
159
|
+
if (tokenA.isPopular !== tokenB.isPopular) {
|
|
160
|
+
return tokenA.isPopular ? -1 : 1;
|
|
137
161
|
}
|
|
138
162
|
|
|
139
|
-
//
|
|
140
|
-
if (
|
|
141
|
-
|
|
163
|
+
//4. sort by search phrase
|
|
164
|
+
if (options.searchFor) {
|
|
165
|
+
const symbolSearchForCompare = compareWithSearchFor(
|
|
166
|
+
tokenA,
|
|
167
|
+
tokenB,
|
|
168
|
+
options.searchFor
|
|
169
|
+
);
|
|
170
|
+
if (symbolSearchForCompare) {
|
|
171
|
+
return symbolSearchForCompare;
|
|
172
|
+
}
|
|
142
173
|
}
|
|
143
|
-
|
|
144
|
-
|
|
174
|
+
|
|
175
|
+
const blockChainA = blockchainsMapByName.get(tokenA.blockchain);
|
|
176
|
+
const blockChainB = blockchainsMapByName.get(tokenB.blockchain);
|
|
177
|
+
|
|
178
|
+
//5. sort by native token
|
|
179
|
+
const isNativeTokenA = isTokenNative(tokenA, blockChainA);
|
|
180
|
+
const isNativeTokenB = isTokenNative(tokenB, blockChainB);
|
|
181
|
+
if (isNativeTokenA !== isNativeTokenB) {
|
|
182
|
+
return isNativeTokenA ? -1 : 1;
|
|
145
183
|
}
|
|
146
184
|
|
|
147
|
-
//
|
|
148
|
-
if (
|
|
149
|
-
return -1;
|
|
185
|
+
//6. sort by token isSecondary
|
|
186
|
+
if (tokenA.isSecondaryCoin !== tokenB.isSecondaryCoin) {
|
|
187
|
+
return tokenA.isSecondaryCoin ? 1 : -1;
|
|
150
188
|
}
|
|
151
|
-
|
|
152
|
-
|
|
189
|
+
|
|
190
|
+
//7. sort by blockchain order
|
|
191
|
+
if (!!blockChainA && !!blockChainB) {
|
|
192
|
+
return blockChainA.sort - blockChainB.sort;
|
|
153
193
|
}
|
|
154
194
|
|
|
155
195
|
return 0;
|
|
@@ -213,7 +253,11 @@ export const createDataSlice: StateCreator<
|
|
|
213
253
|
});
|
|
214
254
|
|
|
215
255
|
set({ fetchStatus: 'success' });
|
|
216
|
-
const
|
|
256
|
+
const blockchainsMapByName: Map<string, BlockchainMeta> = new Map<
|
|
257
|
+
string,
|
|
258
|
+
BlockchainMeta
|
|
259
|
+
>();
|
|
260
|
+
|
|
217
261
|
const tokens: Token[] = [];
|
|
218
262
|
const popularTokens: Token[] = response.popularTokens;
|
|
219
263
|
const swappers: SwapperMeta[] = response.swappers;
|
|
@@ -226,20 +270,21 @@ export const createDataSlice: StateCreator<
|
|
|
226
270
|
tokens.push(token);
|
|
227
271
|
});
|
|
228
272
|
|
|
229
|
-
response.blockchains.
|
|
273
|
+
const sortedBlockchain = response.blockchains.sort(
|
|
274
|
+
(a, b) => a.sort - b.sort
|
|
275
|
+
);
|
|
276
|
+
|
|
277
|
+
sortedBlockchain.forEach((blockchain) => {
|
|
230
278
|
if (
|
|
231
279
|
blockchain.enabled &&
|
|
232
280
|
blockchainsWithAtLeastOneToken.has(blockchain.name)
|
|
233
281
|
) {
|
|
234
|
-
|
|
282
|
+
blockchainsMapByName.set(blockchain.name, blockchain);
|
|
235
283
|
}
|
|
236
284
|
});
|
|
237
285
|
|
|
238
|
-
// Sort
|
|
239
|
-
blockchains.sort((a, b) => a.sort - b.sort);
|
|
240
|
-
|
|
241
286
|
set({
|
|
242
|
-
|
|
287
|
+
_blockchainsMapByName: blockchainsMapByName,
|
|
243
288
|
_tokens: tokens,
|
|
244
289
|
_popularTokens: popularTokens,
|
|
245
290
|
_swappers: swappers,
|