@rango-dev/widget-embedded 0.17.1-next.25 → 0.17.1-next.26
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/ConfirmWalletsModal/ConfirmWallets.styles.d.ts +3 -3
- package/dist/components/Quote/Quote.styles.d.ts +1 -1
- package/dist/components/TokenList/TokenList.d.ts.map +1 -1
- package/dist/components/TokenList/TokenList.helpers.d.ts +2 -2
- package/dist/components/TokenList/TokenList.helpers.d.ts.map +1 -1
- package/dist/components/TokenList/TokenList.types.d.ts +3 -9
- package/dist/components/TokenList/TokenList.types.d.ts.map +1 -1
- package/dist/components/TokenList/index.d.ts +0 -1
- package/dist/components/TokenList/index.d.ts.map +1 -1
- package/dist/containers/Wallets/Wallets.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +3 -3
- package/dist/pages/Home.d.ts.map +1 -1
- package/dist/pages/SelectSwapItemsPage.d.ts.map +1 -1
- package/dist/store/quote.d.ts +4 -5
- package/dist/store/quote.d.ts.map +1 -1
- package/dist/store/wallets.d.ts +5 -2
- package/dist/store/wallets.d.ts.map +1 -1
- package/dist/types/wallets.d.ts +15 -1
- package/dist/types/wallets.d.ts.map +1 -1
- package/dist/utils/wallets.d.ts +6 -8
- package/dist/utils/wallets.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/components/TokenList/TokenList.helpers.ts +2 -2
- package/src/components/TokenList/TokenList.tsx +10 -12
- package/src/components/TokenList/TokenList.types.ts +3 -10
- package/src/components/TokenList/index.ts +0 -1
- package/src/containers/Wallets/Wallets.tsx +2 -3
- package/src/pages/Home.tsx +9 -33
- package/src/pages/SelectSwapItemsPage.tsx +3 -6
- package/src/store/quote.ts +2 -3
- package/src/store/wallets.ts +56 -29
- package/src/types/wallets.ts +18 -1
- package/src/utils/wallets.ts +80 -134
package/dist/pages/Home.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Home.d.ts","sourceRoot":"","sources":["../../src/pages/Home.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Home.d.ts","sourceRoot":"","sources":["../../src/pages/Home.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsC,MAAM,OAAO,CAAC;AA8C3D,wBAAgB,IAAI,sBA4NnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectSwapItemsPage.d.ts","sourceRoot":"","sources":["../../src/pages/SelectSwapItemsPage.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAcxC,UAAU,SAAS;IACjB,IAAI,EAAE,QAAQ,GAAG,aAAa,CAAC;CAChC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"SelectSwapItemsPage.d.ts","sourceRoot":"","sources":["../../src/pages/SelectSwapItemsPage.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAcxC,UAAU,SAAS;IACjB,IAAI,EAAE,QAAQ,GAAG,aAAa,CAAC;CAChC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,qBA2FnD"}
|
package/dist/store/quote.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { TokenWithBalance } from '../components/TokenList';
|
|
2
1
|
import type { Wallet } from '../types';
|
|
3
2
|
import type { PendingSwap } from '@rango-dev/queue-manager-rango-preset/dist/shared';
|
|
4
3
|
import type { BestRouteResponse, BlockchainMeta, MetaResponse, Token } from 'rango-sdk';
|
|
@@ -18,8 +17,8 @@ export interface QuoteState {
|
|
|
18
17
|
inputUsdValue: BigNumber | null;
|
|
19
18
|
outputAmount: BigNumber | null;
|
|
20
19
|
outputUsdValue: BigNumber | null;
|
|
21
|
-
fromToken:
|
|
22
|
-
toToken:
|
|
20
|
+
fromToken: Token | null;
|
|
21
|
+
toToken: Token | null;
|
|
23
22
|
quoteWalletsConfirmed: boolean;
|
|
24
23
|
selectedWallets: Wallet[];
|
|
25
24
|
quoteWarningsConfirmed: boolean;
|
|
@@ -62,8 +61,8 @@ export declare const useQuoteStore: {
|
|
|
62
61
|
inputUsdValue: () => BigNumber | null;
|
|
63
62
|
outputAmount: () => BigNumber | null;
|
|
64
63
|
outputUsdValue: () => BigNumber | null;
|
|
65
|
-
fromToken: () =>
|
|
66
|
-
toToken: () =>
|
|
64
|
+
fromToken: () => Token | null;
|
|
65
|
+
toToken: () => Token | null;
|
|
67
66
|
quoteWalletsConfirmed: () => boolean;
|
|
68
67
|
selectedWallets: () => Wallet[];
|
|
69
68
|
quoteWarningsConfirmed: () => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quote.d.ts","sourceRoot":"","sources":["../../src/store/quote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"quote.d.ts","sourceRoot":"","sources":["../../src/store/quote.ts"],"names":[],"mappings":"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"}
|
package/dist/store/wallets.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Wallet } from '../types';
|
|
1
|
+
import type { Balance, TokensBalance, Wallet } from '../types';
|
|
2
2
|
import type { WalletType } from '@rango-dev/wallets-shared';
|
|
3
3
|
import type { Token } from 'rango-sdk';
|
|
4
4
|
export type TokenBalance = {
|
|
@@ -21,6 +21,7 @@ export interface ConnectedWallet extends Wallet {
|
|
|
21
21
|
}
|
|
22
22
|
interface WalletsStore {
|
|
23
23
|
connectedWallets: ConnectedWallet[];
|
|
24
|
+
balances: TokensBalance;
|
|
24
25
|
customDestination: string;
|
|
25
26
|
loading: boolean;
|
|
26
27
|
connectWallet: (accounts: Wallet[], tokens: Token[]) => void;
|
|
@@ -31,6 +32,7 @@ interface WalletsStore {
|
|
|
31
32
|
}[]) => void;
|
|
32
33
|
clearConnectedWallet: () => void;
|
|
33
34
|
getWalletsDetails: (accounts: Wallet[], tokens: Token[], shouldRetry?: boolean) => void;
|
|
35
|
+
getBalanceFor: (token: Token) => Balance | null;
|
|
34
36
|
}
|
|
35
37
|
export declare const useWalletsStore: {
|
|
36
38
|
(): WalletsStore;
|
|
@@ -47,6 +49,7 @@ export declare const useWalletsStore: {
|
|
|
47
49
|
} & {
|
|
48
50
|
use: {
|
|
49
51
|
connectedWallets: () => ConnectedWallet[];
|
|
52
|
+
balances: () => TokensBalance;
|
|
50
53
|
customDestination: () => string;
|
|
51
54
|
loading: () => boolean;
|
|
52
55
|
connectWallet: () => (accounts: Wallet[], tokens: Token[]) => void;
|
|
@@ -57,8 +60,8 @@ export declare const useWalletsStore: {
|
|
|
57
60
|
}[]) => void;
|
|
58
61
|
clearConnectedWallet: () => () => void;
|
|
59
62
|
getWalletsDetails: () => (accounts: Wallet[], tokens: Token[], shouldRetry?: boolean) => void;
|
|
63
|
+
getBalanceFor: () => (token: Token) => Balance | null;
|
|
60
64
|
};
|
|
61
65
|
};
|
|
62
|
-
export declare const fetchingBalanceSelector: (state: WalletsStore) => boolean;
|
|
63
66
|
export {};
|
|
64
67
|
//# sourceMappingURL=wallets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallets.d.ts","sourceRoot":"","sources":["../../src/store/wallets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"wallets.d.ts","sourceRoot":"","sources":["../../src/store/wallets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAgBvC,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,MAAM,WAAW,eAAgB,SAAQ,MAAM;IAC7C,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAChC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;CAChB;AACD,UAAU,YAAY;IACpB,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,QAAQ,EAAE,aAAa,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IAC7D,gBAAgB,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IACnD,aAAa,EAAE,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,KAAK,IAAI,CAAC;IAC1E,oBAAoB,EAAE,MAAM,IAAI,CAAC;IACjC,iBAAiB,EAAE,CACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,EAAE,KAAK,EAAE,EACf,WAAW,CAAC,EAAE,OAAO,KAClB,IAAI,CAAC;IACV,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,GAAG,IAAI,CAAC;CACjD;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;wCAZA,MAAM,EAAE,UAAU,KAAK,EAAE,KAAK,IAAI;6CAC7B,UAAU,KAAK,IAAI;uCACzB;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,KAAK,IAAI;0CAC7C,IAAI;4CAEpB,MAAM,EAAE,UACV,KAAK,EAAE,gBACD,OAAO,KAClB,IAAI;qCACc,KAAK,KAAK,OAAO,GAAG,IAAI;;CA+LhD,CAAC"}
|
package/dist/types/wallets.d.ts
CHANGED
|
@@ -1,7 +1,21 @@
|
|
|
1
|
-
import { WalletType } from '@rango-dev/wallets-shared';
|
|
1
|
+
import type { WalletType } from '@rango-dev/wallets-shared';
|
|
2
2
|
export interface Wallet {
|
|
3
3
|
chain: string;
|
|
4
4
|
address: string;
|
|
5
5
|
walletType: WalletType;
|
|
6
6
|
}
|
|
7
|
+
export type Balance = {
|
|
8
|
+
amount: string;
|
|
9
|
+
decimals: number;
|
|
10
|
+
usdValue: string;
|
|
11
|
+
};
|
|
12
|
+
type Blockchain = string;
|
|
13
|
+
type TokenSymbol = string;
|
|
14
|
+
type Address = string;
|
|
15
|
+
/** `blockchain-symbol-Address` */
|
|
16
|
+
export type TokenHash = `${Blockchain}-${TokenSymbol}-${Address}`;
|
|
17
|
+
export type TokensBalance = {
|
|
18
|
+
[key: TokenHash]: Balance;
|
|
19
|
+
};
|
|
20
|
+
export {};
|
|
7
21
|
//# sourceMappingURL=wallets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallets.d.ts","sourceRoot":"","sources":["../../src/types/wallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"wallets.d.ts","sourceRoot":"","sources":["../../src/types/wallets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,UAAU,GAAG,MAAM,CAAC;AACzB,KAAK,WAAW,GAAG,MAAM,CAAC;AAC1B,KAAK,OAAO,GAAG,MAAM,CAAC;AAEtB,kCAAkC;AAClC,MAAM,MAAM,SAAS,GAAG,GAAG,UAAU,IAAI,WAAW,IAAI,OAAO,EAAE,CAAC;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC;CAC3B,CAAC"}
|
package/dist/utils/wallets.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { TokenWithBalance } from '../components/TokenList';
|
|
2
1
|
import type { ConnectedWallet, TokenBalance } from '../store/wallets';
|
|
3
|
-
import type { Wallet } from '../types';
|
|
2
|
+
import type { Balance, TokenHash, TokensBalance, Wallet } from '../types';
|
|
4
3
|
import type { WalletInfo as ModalWalletInfo } from '@rango-dev/ui';
|
|
5
|
-
import type { Network, WalletInfo, WalletState, WalletType } from '@rango-dev/wallets-shared';
|
|
4
|
+
import type { Asset, Network, WalletInfo, WalletState, WalletType } from '@rango-dev/wallets-shared';
|
|
6
5
|
import type { BestRouteResponse, BlockchainMeta, Token, WalletDetail } from 'rango-sdk';
|
|
7
6
|
import { WalletState as WalletStatus } from '@rango-dev/ui';
|
|
8
7
|
export declare function mapStatusToWalletState(state: WalletState): WalletStatus;
|
|
@@ -10,18 +9,15 @@ export declare function mapWalletTypesToWalletInfo(getState: (type: WalletType)
|
|
|
10
9
|
export declare function walletAndSupportedChainsNames(supportedBlockchains: BlockchainMeta[]): Network[] | null;
|
|
11
10
|
export declare function prepareAccountsForWalletStore(wallet: WalletType, accounts: string[], evmBasedChains: string[], supportedChainNames: Network[] | null, isContractWallet: boolean): Wallet[];
|
|
12
11
|
export declare function getRequiredChains(quote: BestRouteResponse | null): string[];
|
|
13
|
-
export declare function getBalanceFromWallet(connectedWallets: ConnectedWallet[], chain: string, symbol: string, address: string | null): TokenBalance | null;
|
|
14
12
|
export declare function isAccountAndWalletMatched(account: Wallet, connectedWallet: ConnectedWallet): boolean;
|
|
15
13
|
export declare function makeBalanceFor(retrievedBalance: WalletDetail, tokens: Token[]): TokenBalance[];
|
|
16
14
|
export declare function resetConnectedWalletState(connectedWallet: ConnectedWallet): ConnectedWallet;
|
|
17
15
|
export declare const calculateWalletUsdValue: (connectedWallet: ConnectedWallet[]) => string;
|
|
18
|
-
export declare const sortTokens: (tokens: TokenWithBalance[]) => TokenWithBalance[];
|
|
19
16
|
export declare const getUsdPrice: (blockchain: string, symbol: string, address: string | null, allTokens: Token[]) => number | null;
|
|
20
17
|
export declare const isExperimentalChain: (blockchains: BlockchainMeta[], wallet: string) => boolean;
|
|
21
18
|
export declare const getKeplrCompatibleConnectedWallets: (selectableWallets: Wallet[]) => WalletType[];
|
|
22
|
-
export declare function
|
|
23
|
-
export declare function
|
|
24
|
-
export declare function getSortedTokens(chain: BlockchainMeta | null, tokens: Token[], connectedWallets: ConnectedWallet[], otherChainTokens: TokenWithBalance[]): TokenWithBalance[];
|
|
19
|
+
export declare function formatBalance(balance: Balance | null): Balance | null;
|
|
20
|
+
export declare function sortTokensByBalance(tokens: Token[], getBalanceFor: (token: Token) => Balance | null): Token[];
|
|
25
21
|
export declare function tokensAreEqual(tokenA: Pick<Token, 'blockchain' | 'symbol' | 'address'> | null, tokenB: Pick<Token, 'blockchain' | 'symbol' | 'address'> | null): boolean;
|
|
26
22
|
export declare function sortWalletsBasedOnConnectionState(wallets: ModalWalletInfo[]): ModalWalletInfo[];
|
|
27
23
|
export declare function getConciseAddress(address: string, maxChars?: number, ellipsisLength?: number): string;
|
|
@@ -30,4 +26,6 @@ export declare function getAddress({ chain, connectedWallets, walletType, }: {
|
|
|
30
26
|
walletType: string;
|
|
31
27
|
chain: string;
|
|
32
28
|
}): string | undefined;
|
|
29
|
+
export declare function createTokenHash(token: Asset): TokenHash;
|
|
30
|
+
export declare function makeTokensBalance(connectedWallets: ConnectedWallet[]): TokensBalance;
|
|
33
31
|
//# sourceMappingURL=wallets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallets.d.ts","sourceRoot":"","sources":["../../src/utils/wallets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
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.17.1-next.
|
|
3
|
+
"version": "0.17.1-next.26",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"source": "./src/index.ts",
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
"@lingui/react": "4.2.1",
|
|
24
24
|
"@rango-dev/provider-all": "^0.22.1-next.7",
|
|
25
25
|
"@rango-dev/queue-manager-core": "^0.22.1-next.3",
|
|
26
|
-
"@rango-dev/queue-manager-rango-preset": "^0.22.1-next.
|
|
26
|
+
"@rango-dev/queue-manager-rango-preset": "^0.22.1-next.10",
|
|
27
27
|
"@rango-dev/queue-manager-react": "^0.22.1-next.3",
|
|
28
|
-
"@rango-dev/ui": "^0.22.1-next.
|
|
28
|
+
"@rango-dev/ui": "^0.22.1-next.15",
|
|
29
29
|
"@rango-dev/wallets-react": "^0.8.1-next.5",
|
|
30
30
|
"@rango-dev/wallets-shared": "^0.21.1-next.5",
|
|
31
31
|
"bignumber.js": "^9.1.1",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Token } from 'rango-sdk';
|
|
2
2
|
|
|
3
3
|
import { containsText } from '../../utils/common';
|
|
4
4
|
|
|
5
|
-
export const filterTokens = (list:
|
|
5
|
+
export const filterTokens = (list: Token[], searchedFor: string) =>
|
|
6
6
|
list.filter(
|
|
7
7
|
(token) =>
|
|
8
8
|
containsText(token.symbol, searchedFor) ||
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-magic-numbers */
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
RenderDescProps,
|
|
5
|
-
TokenWithBalance,
|
|
6
|
-
} from './TokenList.types';
|
|
2
|
+
import type { PropTypes, RenderDescProps } from './TokenList.types';
|
|
3
|
+
import type { Token } from 'rango-sdk';
|
|
7
4
|
import type { CommonProps } from 'react-window';
|
|
8
5
|
|
|
9
6
|
import { i18n } from '@lingui/core';
|
|
@@ -24,6 +21,7 @@ import React, { forwardRef, useEffect, useState } from 'react';
|
|
|
24
21
|
import { useAppStore } from '../../store/AppStore';
|
|
25
22
|
import { useWalletsStore } from '../../store/wallets';
|
|
26
23
|
import { generateRangeColors } from '../../utils/colors';
|
|
24
|
+
import { formatBalance } from '../../utils/wallets';
|
|
27
25
|
|
|
28
26
|
import { LoadingTokenList } from './LoadingTokenList';
|
|
29
27
|
import {
|
|
@@ -85,11 +83,11 @@ const renderDesc = (props: RenderDescProps) => {
|
|
|
85
83
|
export function TokenList(props: PropTypes) {
|
|
86
84
|
const { list, searchedFor = '', onChange, selectedBlockchain } = props;
|
|
87
85
|
|
|
88
|
-
const [tokens, setTokens] = useState<
|
|
86
|
+
const [tokens, setTokens] = useState<Token[]>(list);
|
|
89
87
|
const fetchStatus = useAppStore().fetchStatus;
|
|
90
88
|
const blockchains = useAppStore().blockchains();
|
|
91
89
|
const [hasNextPage, setHasNextPage] = useState<boolean>(true);
|
|
92
|
-
const loadingWallet = useWalletsStore
|
|
90
|
+
const { getBalanceFor, loading: loadingWallet } = useWalletsStore();
|
|
93
91
|
const { isTokenPinned } = useAppStore();
|
|
94
92
|
|
|
95
93
|
// eslint-disable-next-line react/display-name
|
|
@@ -134,7 +132,7 @@ export function TokenList(props: PropTypes) {
|
|
|
134
132
|
<VirtualizedList
|
|
135
133
|
Item={({ index, style }) => {
|
|
136
134
|
const token = tokens[index];
|
|
137
|
-
|
|
135
|
+
const tokenBalance = formatBalance(getBalanceFor(token));
|
|
138
136
|
const address = token.address || '';
|
|
139
137
|
const blockchain = blockchains.find(
|
|
140
138
|
(blockchain) => blockchain.name === token.blockchain
|
|
@@ -229,18 +227,18 @@ export function TokenList(props: PropTypes) {
|
|
|
229
227
|
<Skeleton variant="text" size="medium" width={50} />
|
|
230
228
|
</End>
|
|
231
229
|
) : (
|
|
232
|
-
|
|
230
|
+
tokenBalance && (
|
|
233
231
|
<BalanceContainer>
|
|
234
232
|
<Typography variant="title" size="small">
|
|
235
|
-
{
|
|
233
|
+
{tokenBalance.amount}
|
|
236
234
|
</Typography>
|
|
237
235
|
<div />
|
|
238
|
-
{
|
|
236
|
+
{tokenBalance.usdValue && (
|
|
239
237
|
<Typography
|
|
240
238
|
variant="body"
|
|
241
239
|
className="usd-value"
|
|
242
240
|
size="xsmall">
|
|
243
|
-
{`$${
|
|
241
|
+
{`$${tokenBalance.usdValue}`}
|
|
244
242
|
</Typography>
|
|
245
243
|
)}
|
|
246
244
|
</BalanceContainer>
|
|
@@ -1,16 +1,9 @@
|
|
|
1
1
|
import type { Token } from 'rango-sdk';
|
|
2
2
|
|
|
3
|
-
export interface TokenWithBalance extends Token {
|
|
4
|
-
balance?: {
|
|
5
|
-
amount: string;
|
|
6
|
-
usdValue: string;
|
|
7
|
-
};
|
|
8
|
-
}
|
|
9
|
-
|
|
10
3
|
export interface PropTypes {
|
|
11
|
-
list:
|
|
4
|
+
list: Token[];
|
|
12
5
|
searchedFor?: string;
|
|
13
|
-
onChange: (token:
|
|
6
|
+
onChange: (token: Token) => void;
|
|
14
7
|
selectedBlockchain?: string;
|
|
15
8
|
}
|
|
16
9
|
|
|
@@ -22,7 +15,7 @@ export interface RenderDescProps {
|
|
|
22
15
|
name?: string | null;
|
|
23
16
|
address: string;
|
|
24
17
|
url: string;
|
|
25
|
-
token:
|
|
18
|
+
token: Token;
|
|
26
19
|
customCssForTag: TagCSS;
|
|
27
20
|
customCssForTagTitle: TitleCSS;
|
|
28
21
|
}
|
|
@@ -28,15 +28,14 @@ export const WidgetContext = createContext<WidgetContextInterface>({
|
|
|
28
28
|
});
|
|
29
29
|
|
|
30
30
|
function Main(props: PropsWithChildren<PropTypes>) {
|
|
31
|
-
const updateConfig = useAppStore()
|
|
31
|
+
const { updateConfig } = useAppStore();
|
|
32
32
|
const blockchains = useAppStore().blockchains();
|
|
33
33
|
const tokens = useAppStore().tokens();
|
|
34
34
|
const walletOptions: ProvidersOptions = {
|
|
35
35
|
walletConnectProjectId: props.config?.walletConnectProjectId,
|
|
36
36
|
};
|
|
37
37
|
const { providers } = useWalletProviders(props.config.wallets, walletOptions);
|
|
38
|
-
const disconnectWallet = useWalletsStore
|
|
39
|
-
const connectWallet = useWalletsStore.use.connectWallet();
|
|
38
|
+
const { connectWallet, disconnectWallet } = useWalletsStore();
|
|
40
39
|
const onConnectWalletHandler = useRef<OnConnectHandler>();
|
|
41
40
|
useSyncStoresWithConfig();
|
|
42
41
|
|
package/src/pages/Home.tsx
CHANGED
|
@@ -9,8 +9,6 @@ import { SwitchFromAndToButton } from '../components/SwitchFromAndTo';
|
|
|
9
9
|
import { errorMessages } from '../constants/errors';
|
|
10
10
|
import { navigationRoutes } from '../constants/navigationRoutes';
|
|
11
11
|
import {
|
|
12
|
-
BALANCE_MAX_DECIMALS,
|
|
13
|
-
BALANCE_MIN_DECIMALS,
|
|
14
12
|
PERCENTAGE_CHANGE_MAX_DECIMALS,
|
|
15
13
|
PERCENTAGE_CHANGE_MIN_DECIMALS,
|
|
16
14
|
TOKEN_AMOUNT_MAX_DECIMALS,
|
|
@@ -27,7 +25,7 @@ import { useWalletsStore } from '../store/wallets';
|
|
|
27
25
|
import { numberToString } from '../utils/numbers';
|
|
28
26
|
import { getPriceImpact, getPriceImpactLevel } from '../utils/quote';
|
|
29
27
|
import { canComputePriceImpact, getSwapButtonState } from '../utils/swap';
|
|
30
|
-
import {
|
|
28
|
+
import { formatBalance } from '../utils/wallets';
|
|
31
29
|
|
|
32
30
|
const Container = styled('div', {
|
|
33
31
|
display: 'flex',
|
|
@@ -73,7 +71,7 @@ export function Home() {
|
|
|
73
71
|
|
|
74
72
|
const fetchMetaStatus = useAppStore().fetchStatus;
|
|
75
73
|
|
|
76
|
-
const connectedWallets = useWalletsStore
|
|
74
|
+
const { connectedWallets, getBalanceFor } = useWalletsStore();
|
|
77
75
|
const setCurrentPage = useUiStore.use.setCurrentPage();
|
|
78
76
|
const [showQuoteWarningModal, setShowQuoteWarningModal] = useState(false);
|
|
79
77
|
const layoutRef = useRef<HTMLDivElement>(null);
|
|
@@ -103,36 +101,14 @@ export function Home() {
|
|
|
103
101
|
needsToWarnEthOnPath,
|
|
104
102
|
});
|
|
105
103
|
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
connectedWallets,
|
|
111
|
-
fromBlockchain?.name,
|
|
112
|
-
fromToken?.symbol,
|
|
113
|
-
fromToken?.address
|
|
114
|
-
)?.amount || '0',
|
|
115
|
-
BALANCE_MIN_DECIMALS,
|
|
116
|
-
BALANCE_MAX_DECIMALS
|
|
117
|
-
)
|
|
118
|
-
: '0';
|
|
104
|
+
const fromTokenBalance = fromToken ? getBalanceFor(fromToken) : null;
|
|
105
|
+
|
|
106
|
+
const fromTokenFormattedBalance =
|
|
107
|
+
formatBalance(fromTokenBalance)?.amount ?? '0';
|
|
119
108
|
|
|
120
109
|
const tokenBalanceReal =
|
|
121
110
|
!!fromBlockchain && !!fromToken
|
|
122
|
-
? numberToString(
|
|
123
|
-
getBalanceFromWallet(
|
|
124
|
-
connectedWallets,
|
|
125
|
-
fromBlockchain?.name,
|
|
126
|
-
fromToken?.symbol,
|
|
127
|
-
fromToken?.address
|
|
128
|
-
)?.amount || '0',
|
|
129
|
-
getBalanceFromWallet(
|
|
130
|
-
connectedWallets,
|
|
131
|
-
fromBlockchain?.name,
|
|
132
|
-
fromToken?.symbol,
|
|
133
|
-
fromToken?.address
|
|
134
|
-
)?.decimal
|
|
135
|
-
)
|
|
111
|
+
? numberToString(fromTokenBalance?.amount, fromTokenBalance?.decimals)
|
|
136
112
|
: '0';
|
|
137
113
|
|
|
138
114
|
useEffect(() => {
|
|
@@ -194,7 +170,7 @@ export function Home() {
|
|
|
194
170
|
label={i18n.t('From')}
|
|
195
171
|
mode="From"
|
|
196
172
|
onInputChange={setInputAmount}
|
|
197
|
-
balance={
|
|
173
|
+
balance={fromTokenFormattedBalance}
|
|
198
174
|
chain={{
|
|
199
175
|
displayName: fromBlockchain?.displayName || '',
|
|
200
176
|
image: fromBlockchain?.logo || '',
|
|
@@ -220,7 +196,7 @@ export function Home() {
|
|
|
220
196
|
disabled={fetchMetaStatus === 'failed'}
|
|
221
197
|
loading={fetchMetaStatus === 'loading'}
|
|
222
198
|
onSelectMaxBalance={() => {
|
|
223
|
-
if (
|
|
199
|
+
if (fromTokenFormattedBalance !== '0') {
|
|
224
200
|
setInputAmount(tokenBalanceReal.split(',').join(''));
|
|
225
201
|
}
|
|
226
202
|
}}
|
|
@@ -14,7 +14,7 @@ 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 {
|
|
17
|
+
import { sortTokensByBalance } from '../utils/wallets';
|
|
18
18
|
|
|
19
19
|
interface PropTypes {
|
|
20
20
|
type: 'source' | 'destination';
|
|
@@ -32,7 +32,7 @@ export function SelectSwapItemsPage(props: PropTypes) {
|
|
|
32
32
|
setFromBlockchain,
|
|
33
33
|
setToBlockchain,
|
|
34
34
|
} = useQuoteStore();
|
|
35
|
-
const
|
|
35
|
+
const getBalanceFor = useWalletsStore.use.getBalanceFor();
|
|
36
36
|
const [searchedFor, setSearchedFor] = useState<string>('');
|
|
37
37
|
|
|
38
38
|
const selectedBlockchain = type === 'source' ? fromBlockchain : toBlockchain;
|
|
@@ -47,10 +47,7 @@ export function SelectSwapItemsPage(props: PropTypes) {
|
|
|
47
47
|
blockchain: selectedBlockchainName,
|
|
48
48
|
searchFor: searchedFor,
|
|
49
49
|
});
|
|
50
|
-
const tokensList =
|
|
51
|
-
tokens,
|
|
52
|
-
connectedWallets
|
|
53
|
-
);
|
|
50
|
+
const tokensList = sortTokensByBalance(tokens, getBalanceFor);
|
|
54
51
|
|
|
55
52
|
// Actions
|
|
56
53
|
const updateBlockchain = (blockchain: BlockchainMeta) => {
|
package/src/store/quote.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { TokenWithBalance } from '../components/TokenList';
|
|
2
1
|
import type { Wallet } from '../types';
|
|
3
2
|
import type { PendingSwap } from '@rango-dev/queue-manager-rango-preset/dist/shared';
|
|
4
3
|
import type {
|
|
@@ -38,8 +37,8 @@ export interface QuoteState {
|
|
|
38
37
|
inputUsdValue: BigNumber | null;
|
|
39
38
|
outputAmount: BigNumber | null;
|
|
40
39
|
outputUsdValue: BigNumber | null;
|
|
41
|
-
fromToken:
|
|
42
|
-
toToken:
|
|
40
|
+
fromToken: Token | null;
|
|
41
|
+
toToken: Token | null;
|
|
43
42
|
quoteWalletsConfirmed: boolean;
|
|
44
43
|
selectedWallets: Wallet[];
|
|
45
44
|
quoteWarningsConfirmed: boolean;
|
package/src/store/wallets.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Wallet } from '../types';
|
|
1
|
+
import type { Balance, TokensBalance, Wallet } from '../types';
|
|
2
2
|
import type { WalletType } from '@rango-dev/wallets-shared';
|
|
3
3
|
import type { Token } from 'rango-sdk';
|
|
4
4
|
|
|
@@ -7,8 +7,10 @@ import { subscribeWithSelector } from 'zustand/middleware';
|
|
|
7
7
|
|
|
8
8
|
import { httpService } from '../services/httpService';
|
|
9
9
|
import {
|
|
10
|
+
createTokenHash,
|
|
10
11
|
isAccountAndWalletMatched,
|
|
11
12
|
makeBalanceFor,
|
|
13
|
+
makeTokensBalance,
|
|
12
14
|
resetConnectedWalletState,
|
|
13
15
|
} from '../utils/wallets';
|
|
14
16
|
|
|
@@ -33,9 +35,9 @@ export interface ConnectedWallet extends Wallet {
|
|
|
33
35
|
loading: boolean;
|
|
34
36
|
error: boolean;
|
|
35
37
|
}
|
|
36
|
-
|
|
37
38
|
interface WalletsStore {
|
|
38
39
|
connectedWallets: ConnectedWallet[];
|
|
40
|
+
balances: TokensBalance;
|
|
39
41
|
customDestination: string;
|
|
40
42
|
loading: boolean;
|
|
41
43
|
connectWallet: (accounts: Wallet[], tokens: Token[]) => void;
|
|
@@ -47,12 +49,14 @@ interface WalletsStore {
|
|
|
47
49
|
tokens: Token[],
|
|
48
50
|
shouldRetry?: boolean
|
|
49
51
|
) => void;
|
|
52
|
+
getBalanceFor: (token: Token) => Balance | null;
|
|
50
53
|
}
|
|
51
54
|
|
|
52
55
|
export const useWalletsStore = createSelectors(
|
|
53
56
|
create<WalletsStore>()(
|
|
54
57
|
subscribeWithSelector((set, get) => ({
|
|
55
58
|
connectedWallets: [],
|
|
59
|
+
balances: {},
|
|
56
60
|
customDestination: '',
|
|
57
61
|
loading: false,
|
|
58
62
|
connectWallet: (accounts, tokens) => {
|
|
@@ -92,21 +96,27 @@ export const useWalletsStore = createSelectors(
|
|
|
92
96
|
connectedWallet.walletType !== walletType
|
|
93
97
|
)
|
|
94
98
|
.map((selectedWallet) => selectedWallet.chain);
|
|
99
|
+
|
|
100
|
+
const connectedWallets = state.connectedWallets
|
|
101
|
+
.filter(
|
|
102
|
+
(connectedWallet) => connectedWallet.walletType !== walletType
|
|
103
|
+
)
|
|
104
|
+
.map((connectedWallet) => {
|
|
105
|
+
const anyWalletSelectedForBlockchain = selectedWallets.includes(
|
|
106
|
+
connectedWallet.chain
|
|
107
|
+
);
|
|
108
|
+
if (anyWalletSelectedForBlockchain) {
|
|
109
|
+
return connectedWallet;
|
|
110
|
+
}
|
|
111
|
+
selectedWallets.push(connectedWallet.chain);
|
|
112
|
+
return { ...connectedWallet, selected: true };
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
const balances = makeTokensBalance(connectedWallets);
|
|
116
|
+
|
|
95
117
|
return {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
(connectedWallet) => connectedWallet.walletType !== walletType
|
|
99
|
-
)
|
|
100
|
-
.map((connectedWallet) => {
|
|
101
|
-
const anyWalletSelectedForBlockchain = selectedWallets.includes(
|
|
102
|
-
connectedWallet.chain
|
|
103
|
-
);
|
|
104
|
-
if (anyWalletSelectedForBlockchain) {
|
|
105
|
-
return connectedWallet;
|
|
106
|
-
}
|
|
107
|
-
selectedWallets.push(connectedWallet.chain);
|
|
108
|
-
return { ...connectedWallet, selected: true };
|
|
109
|
-
}),
|
|
118
|
+
balances,
|
|
119
|
+
connectedWallets,
|
|
110
120
|
};
|
|
111
121
|
});
|
|
112
122
|
},
|
|
@@ -159,9 +169,8 @@ export const useWalletsStore = createSelectors(
|
|
|
159
169
|
const response = await httpService().getWalletsDetails(data);
|
|
160
170
|
const retrievedBalance = response.wallets;
|
|
161
171
|
if (retrievedBalance) {
|
|
162
|
-
set((state) =>
|
|
163
|
-
|
|
164
|
-
connectedWallets: state.connectedWallets.map(
|
|
172
|
+
set((state) => {
|
|
173
|
+
const connectedWallets = state.connectedWallets.map(
|
|
165
174
|
(connectedWallet) => {
|
|
166
175
|
const matchedAccount = accounts.find((account) =>
|
|
167
176
|
isAccountAndWalletMatched(account, connectedWallet)
|
|
@@ -190,27 +199,45 @@ export const useWalletsStore = createSelectors(
|
|
|
190
199
|
}
|
|
191
200
|
: connectedWallet;
|
|
192
201
|
}
|
|
193
|
-
)
|
|
194
|
-
|
|
202
|
+
);
|
|
203
|
+
|
|
204
|
+
const balances = makeTokensBalance(connectedWallets);
|
|
205
|
+
|
|
206
|
+
return {
|
|
207
|
+
loading: false,
|
|
208
|
+
balances,
|
|
209
|
+
connectedWallets,
|
|
210
|
+
};
|
|
211
|
+
});
|
|
195
212
|
} else {
|
|
196
213
|
throw new Error('Wallet not found');
|
|
197
214
|
}
|
|
198
215
|
} catch (error) {
|
|
199
|
-
set((state) =>
|
|
200
|
-
|
|
201
|
-
connectedWallets: state.connectedWallets.map((balance) => {
|
|
216
|
+
set((state) => {
|
|
217
|
+
const connectedWallets = state.connectedWallets.map((balance) => {
|
|
202
218
|
return accounts.find((account) =>
|
|
203
219
|
isAccountAndWalletMatched(account, balance)
|
|
204
220
|
)
|
|
205
221
|
? resetConnectedWalletState(balance)
|
|
206
222
|
: balance;
|
|
207
|
-
})
|
|
208
|
-
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
const balances = makeTokensBalance(connectedWallets);
|
|
226
|
+
|
|
227
|
+
return {
|
|
228
|
+
loading: false,
|
|
229
|
+
balances,
|
|
230
|
+
connectedWallets,
|
|
231
|
+
};
|
|
232
|
+
});
|
|
209
233
|
}
|
|
210
234
|
},
|
|
235
|
+
getBalanceFor: (token) => {
|
|
236
|
+
const { balances } = get();
|
|
237
|
+
const tokenHash = createTokenHash(token);
|
|
238
|
+
const balance = balances[tokenHash];
|
|
239
|
+
return balance ?? null;
|
|
240
|
+
},
|
|
211
241
|
}))
|
|
212
242
|
)
|
|
213
243
|
);
|
|
214
|
-
|
|
215
|
-
export const fetchingBalanceSelector = (state: WalletsStore) =>
|
|
216
|
-
!!state.connectedWallets.find((wallet) => wallet.loading);
|
package/src/types/wallets.ts
CHANGED
|
@@ -1,7 +1,24 @@
|
|
|
1
|
-
import { WalletType } from '@rango-dev/wallets-shared';
|
|
1
|
+
import type { WalletType } from '@rango-dev/wallets-shared';
|
|
2
2
|
|
|
3
3
|
export interface Wallet {
|
|
4
4
|
chain: string;
|
|
5
5
|
address: string;
|
|
6
6
|
walletType: WalletType;
|
|
7
7
|
}
|
|
8
|
+
|
|
9
|
+
export type Balance = {
|
|
10
|
+
amount: string;
|
|
11
|
+
decimals: number;
|
|
12
|
+
usdValue: string;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
type Blockchain = string;
|
|
16
|
+
type TokenSymbol = string;
|
|
17
|
+
type Address = string;
|
|
18
|
+
|
|
19
|
+
/** `blockchain-symbol-Address` */
|
|
20
|
+
export type TokenHash = `${Blockchain}-${TokenSymbol}-${Address}`;
|
|
21
|
+
|
|
22
|
+
export type TokensBalance = {
|
|
23
|
+
[key: TokenHash]: Balance;
|
|
24
|
+
};
|