@0xsquid/react-hooks 3.0.30-beta.18 → 3.0.30-beta.19
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/hooks/tokens/useAllConnectedWalletBalances.d.ts +17 -85
- package/dist/hooks/tokens/useAllConnectedWalletBalances.js +47 -37
- package/dist/hooks/tokens/useAllConnectedWalletBalances.js.map +1 -1
- package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.d.ts +7 -26
- package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js +70 -61
- package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js.map +1 -1
- package/dist/hooks/tokens/useBalance.js +2 -2
- package/dist/hooks/tokens/useBalance.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,89 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
volatility: import("@0xsquid/squid-types").Volatility;
|
|
16
|
-
usdPrice?: number | undefined;
|
|
17
|
-
axelarNetworkSymbol?: string | undefined;
|
|
18
|
-
subGraphOnly?: boolean | undefined;
|
|
19
|
-
subGraphIds?: string[] | undefined;
|
|
20
|
-
feeOnTransfer?: boolean | undefined;
|
|
21
|
-
isLpToken?: boolean | undefined;
|
|
22
|
-
disabled?: boolean | undefined;
|
|
23
|
-
}[];
|
|
24
|
-
cosmos: {
|
|
25
|
-
balance: string;
|
|
26
|
-
type: ChainType;
|
|
27
|
-
chainId: string;
|
|
28
|
-
address: string;
|
|
29
|
-
name: string;
|
|
30
|
-
symbol: string;
|
|
31
|
-
decimals: number;
|
|
32
|
-
logoURI?: string | undefined;
|
|
33
|
-
coingeckoId?: string | undefined;
|
|
34
|
-
interchainTokenId?: string | undefined;
|
|
35
|
-
volatility: import("@0xsquid/squid-types").Volatility;
|
|
36
|
-
usdPrice?: number | undefined;
|
|
37
|
-
axelarNetworkSymbol?: string | undefined;
|
|
38
|
-
subGraphOnly?: boolean | undefined;
|
|
39
|
-
subGraphIds?: string[] | undefined;
|
|
40
|
-
feeOnTransfer?: boolean | undefined;
|
|
41
|
-
isLpToken?: boolean | undefined;
|
|
42
|
-
disabled?: boolean | undefined;
|
|
43
|
-
}[];
|
|
44
|
-
bitcoin: {
|
|
45
|
-
balance: string;
|
|
46
|
-
type: ChainType;
|
|
47
|
-
chainId: string;
|
|
48
|
-
address: string;
|
|
49
|
-
name: string;
|
|
50
|
-
symbol: string;
|
|
51
|
-
decimals: number;
|
|
52
|
-
logoURI?: string | undefined;
|
|
53
|
-
coingeckoId?: string | undefined;
|
|
54
|
-
interchainTokenId?: string | undefined;
|
|
55
|
-
volatility: import("@0xsquid/squid-types").Volatility;
|
|
56
|
-
usdPrice?: number | undefined;
|
|
57
|
-
axelarNetworkSymbol?: string | undefined;
|
|
58
|
-
subGraphOnly?: boolean | undefined;
|
|
59
|
-
subGraphIds?: string[] | undefined;
|
|
60
|
-
feeOnTransfer?: boolean | undefined;
|
|
61
|
-
isLpToken?: boolean | undefined;
|
|
62
|
-
disabled?: boolean | undefined;
|
|
63
|
-
}[];
|
|
64
|
-
};
|
|
1
|
+
import { UseQueryOptions } from "@tanstack/react-query";
|
|
2
|
+
import { TokenWithBalance } from "src/core/types/tokens";
|
|
3
|
+
export declare const useAllConnectedWalletBalances: ({ direction, queryOptions, }?: {
|
|
4
|
+
direction?: "from" | "to" | undefined;
|
|
5
|
+
queryOptions?: UseQueryOptions<{
|
|
6
|
+
tokens: TokenWithBalance[];
|
|
7
|
+
totalUsdBalance: string;
|
|
8
|
+
}, unknown, {
|
|
9
|
+
tokens: TokenWithBalance[];
|
|
10
|
+
totalUsdBalance: string;
|
|
11
|
+
}, import("@tanstack/react-query").QueryKey> | undefined;
|
|
12
|
+
}) => {
|
|
13
|
+
tokens: TokenWithBalance[];
|
|
14
|
+
totalUsdBalance: number;
|
|
65
15
|
isInitialLoading: boolean;
|
|
66
16
|
isFetching: boolean;
|
|
67
17
|
isLoading: boolean;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
chainId: string;
|
|
72
|
-
address: string;
|
|
73
|
-
name: string;
|
|
74
|
-
symbol: string;
|
|
75
|
-
decimals: number;
|
|
76
|
-
logoURI?: string | undefined;
|
|
77
|
-
coingeckoId?: string | undefined;
|
|
78
|
-
interchainTokenId?: string | undefined;
|
|
79
|
-
volatility: import("@0xsquid/squid-types").Volatility;
|
|
80
|
-
usdPrice?: number | undefined;
|
|
81
|
-
axelarNetworkSymbol?: string | undefined;
|
|
82
|
-
subGraphOnly?: boolean | undefined;
|
|
83
|
-
subGraphIds?: string[] | undefined;
|
|
84
|
-
feeOnTransfer?: boolean | undefined;
|
|
85
|
-
isLpToken?: boolean | undefined;
|
|
86
|
-
disabled?: boolean | undefined;
|
|
87
|
-
}[];
|
|
88
|
-
totalUsdBalance: number;
|
|
18
|
+
isRefetching: boolean;
|
|
19
|
+
isError: boolean;
|
|
20
|
+
isSuccess: boolean;
|
|
89
21
|
};
|
|
@@ -1,50 +1,60 @@
|
|
|
1
1
|
import { ChainType } from "@0xsquid/squid-types";
|
|
2
2
|
import { useMemo } from "react";
|
|
3
|
-
import { useSquidChains } from "../chains/useSquidChains";
|
|
4
3
|
import { useWallet } from "../wallet/useWallet";
|
|
5
4
|
import { useAllTokensWithBalanceForChainType } from "./useAllTokensWithBalanceForChainType";
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
const BALANCE_STALE_TIME = 120000; // 2 minutes
|
|
6
|
+
const BALANCE_CACHE_TIME = 300000; // 5 minutes
|
|
7
|
+
export const useAllConnectedWalletBalances = ({ direction, queryOptions = {
|
|
8
|
+
staleTime: BALANCE_STALE_TIME,
|
|
9
|
+
cacheTime: BALANCE_CACHE_TIME,
|
|
10
|
+
}, } = {}) => {
|
|
8
11
|
const { connectedAddresses } = useWallet();
|
|
9
|
-
const
|
|
12
|
+
const evmBalancesQuery = useAllTokensWithBalanceForChainType({
|
|
10
13
|
chainType: ChainType.EVM,
|
|
11
|
-
address: connectedAddresses[ChainType.EVM]
|
|
14
|
+
address: connectedAddresses?.[ChainType.EVM],
|
|
15
|
+
direction,
|
|
16
|
+
queryOptions: {
|
|
17
|
+
...queryOptions,
|
|
18
|
+
enabled: Boolean(connectedAddresses?.[ChainType.EVM]),
|
|
19
|
+
},
|
|
12
20
|
});
|
|
13
|
-
const
|
|
21
|
+
const cosmosBalancesQuery = useAllTokensWithBalanceForChainType({
|
|
14
22
|
chainType: ChainType.COSMOS,
|
|
15
|
-
address: connectedAddresses[ChainType.COSMOS]
|
|
23
|
+
address: connectedAddresses?.[ChainType.COSMOS],
|
|
24
|
+
direction,
|
|
25
|
+
queryOptions: {
|
|
26
|
+
...queryOptions,
|
|
27
|
+
enabled: Boolean(connectedAddresses?.[ChainType.COSMOS]),
|
|
28
|
+
},
|
|
16
29
|
});
|
|
17
|
-
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
30
|
+
// Create a map of chain type to balance query results
|
|
31
|
+
const balanceQueries = useMemo(() => ({
|
|
32
|
+
[ChainType.EVM]: evmBalancesQuery,
|
|
33
|
+
[ChainType.COSMOS]: cosmosBalancesQuery,
|
|
34
|
+
}), [evmBalancesQuery, cosmosBalancesQuery]);
|
|
35
|
+
// Combine all tokens from different chains
|
|
36
|
+
const allTokens = useMemo(() => Object.values(balanceQueries).flatMap((query) => query.data?.tokens ?? []), [balanceQueries]);
|
|
37
|
+
// Calculate total USD balance across all chains
|
|
38
|
+
const totalUsdBalance = useMemo(() => {
|
|
39
|
+
return Object.values(balanceQueries).reduce((total, query) => {
|
|
40
|
+
const balanceStr = query?.data?.totalUsdBalance;
|
|
41
|
+
if (!balanceStr)
|
|
42
|
+
return total;
|
|
43
|
+
const balance = Number(balanceStr);
|
|
44
|
+
return Number.isFinite(balance) ? total + balance : total;
|
|
45
|
+
}, 0);
|
|
46
|
+
}, [balanceQueries]);
|
|
47
|
+
// Aggregate loading states
|
|
48
|
+
const queryStates = useMemo(() => ({
|
|
49
|
+
isInitialLoading: Object.values(balanceQueries).some((q) => q.isInitialLoading),
|
|
50
|
+
isFetching: Object.values(balanceQueries).some((q) => q.isFetching),
|
|
51
|
+
isLoading: Object.values(balanceQueries).some((q) => q.isLoading),
|
|
52
|
+
isRefetching: Object.values(balanceQueries).some((q) => q.isRefetching),
|
|
53
|
+
isError: Object.values(balanceQueries).some((q) => q.isError),
|
|
54
|
+
isSuccess: Object.values(balanceQueries).every((q) => q.isSuccess),
|
|
55
|
+
}), [balanceQueries]);
|
|
43
56
|
return {
|
|
44
|
-
|
|
45
|
-
isInitialLoading,
|
|
46
|
-
isFetching,
|
|
47
|
-
isLoading,
|
|
57
|
+
...queryStates,
|
|
48
58
|
tokens: allTokens,
|
|
49
59
|
totalUsdBalance,
|
|
50
60
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAllConnectedWalletBalances.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useAllConnectedWalletBalances.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"useAllConnectedWalletBalances.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useAllConnectedWalletBalances.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,14 @@
|
|
|
1
1
|
import { ChainType } from "@0xsquid/squid-types";
|
|
2
2
|
import { UseQueryOptions, UseQueryResult } from "@tanstack/react-query";
|
|
3
3
|
import { TokenWithBalance } from "../../core/types/tokens";
|
|
4
|
+
type QueryData = {
|
|
5
|
+
tokens: TokenWithBalance[];
|
|
6
|
+
totalUsdBalance: string;
|
|
7
|
+
};
|
|
4
8
|
export declare const useAllTokensWithBalanceForChainType: ({ chainType, address, direction, queryOptions, }: {
|
|
5
9
|
chainType?: ChainType | undefined;
|
|
6
10
|
address?: string | undefined;
|
|
7
11
|
direction?: "from" | "to" | undefined;
|
|
8
|
-
queryOptions?: UseQueryOptions<
|
|
9
|
-
}) =>
|
|
10
|
-
|
|
11
|
-
tokens: {
|
|
12
|
-
balance: string;
|
|
13
|
-
type: ChainType;
|
|
14
|
-
chainId: string;
|
|
15
|
-
address: string;
|
|
16
|
-
name: string;
|
|
17
|
-
symbol: string;
|
|
18
|
-
decimals: number;
|
|
19
|
-
logoURI?: string | undefined;
|
|
20
|
-
coingeckoId?: string | undefined;
|
|
21
|
-
interchainTokenId?: string | undefined;
|
|
22
|
-
volatility: import("@0xsquid/squid-types").Volatility;
|
|
23
|
-
usdPrice?: number | undefined;
|
|
24
|
-
axelarNetworkSymbol?: string | undefined;
|
|
25
|
-
subGraphOnly?: boolean | undefined;
|
|
26
|
-
subGraphIds?: string[] | undefined;
|
|
27
|
-
feeOnTransfer?: boolean | undefined;
|
|
28
|
-
isLpToken?: boolean | undefined;
|
|
29
|
-
disabled?: boolean | undefined;
|
|
30
|
-
}[];
|
|
31
|
-
refetch: <TPageData>(options?: (import("@tanstack/react-query").RefetchOptions & import("@tanstack/react-query").RefetchQueryFilters<TPageData>) | undefined) => Promise<import("@tanstack/react-query").QueryObserverResult<TokenWithBalance[], unknown>>;
|
|
32
|
-
totalUsdBalance: string;
|
|
33
|
-
};
|
|
12
|
+
queryOptions?: UseQueryOptions<QueryData, unknown, QueryData, import("@tanstack/react-query").QueryKey> | undefined;
|
|
13
|
+
}) => UseQueryResult<QueryData>;
|
|
14
|
+
export {};
|
|
@@ -11,76 +11,85 @@ export const useAllTokensWithBalanceForChainType = ({ chainType, address, direct
|
|
|
11
11
|
const { cosmosChains, chains } = useSquidChains(direction);
|
|
12
12
|
const { evmTokens, cosmosTokens } = useSquidTokens(direction);
|
|
13
13
|
const { keplrTypeWallet } = useCosmosContext();
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
});
|
|
36
|
-
return cosmosBalances;
|
|
37
|
-
}, {
|
|
38
|
-
...queryOptions,
|
|
39
|
-
enabled: cosmosTokens.length > 0 &&
|
|
40
|
-
chainType === ChainType.COSMOS &&
|
|
41
|
-
!!address &&
|
|
42
|
-
queryOptions?.enabled !== false,
|
|
43
|
-
});
|
|
44
|
-
const tokensWithBalanceQuery = useMemo(() => {
|
|
45
|
-
let baseQuery;
|
|
14
|
+
const placeholderData = useMemo(() => {
|
|
15
|
+
const tokens = {
|
|
16
|
+
[ChainType.EVM]: evmTokens.map((t) => ({ ...t, balance: "0" })),
|
|
17
|
+
[ChainType.COSMOS]: cosmosTokens.map((t) => ({ ...t, balance: "0" })),
|
|
18
|
+
[ChainType.BTC]: [],
|
|
19
|
+
};
|
|
20
|
+
if (!chainType) {
|
|
21
|
+
return {
|
|
22
|
+
tokens: [...tokens[ChainType.EVM], ...tokens[ChainType.COSMOS]],
|
|
23
|
+
totalUsdBalance: "0",
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
tokens: tokens[chainType],
|
|
28
|
+
totalUsdBalance: "0",
|
|
29
|
+
};
|
|
30
|
+
}, [evmTokens, cosmosTokens, chainType]);
|
|
31
|
+
const isQueryEnabled = useMemo(() => {
|
|
32
|
+
// Respect the queryOptions.enabled override if provided
|
|
33
|
+
if (queryOptions?.enabled === false)
|
|
34
|
+
return false;
|
|
46
35
|
switch (chainType) {
|
|
36
|
+
case ChainType.EVM:
|
|
37
|
+
return evmTokens.length > 0 && !!address;
|
|
47
38
|
case ChainType.COSMOS:
|
|
48
|
-
|
|
49
|
-
|
|
39
|
+
return cosmosTokens.length > 0 && !!address;
|
|
40
|
+
case undefined:
|
|
41
|
+
return false;
|
|
42
|
+
case ChainType.BTC:
|
|
43
|
+
default:
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
}, [
|
|
47
|
+
chainType,
|
|
48
|
+
evmTokens.length,
|
|
49
|
+
cosmosTokens.length,
|
|
50
|
+
address,
|
|
51
|
+
queryOptions?.enabled,
|
|
52
|
+
]);
|
|
53
|
+
const query = useQuery(keys().allTokensBalance(address, chainType), async () => {
|
|
54
|
+
// Return zero balances if no address
|
|
55
|
+
if (!address) {
|
|
56
|
+
const defaultTokens = placeholderData.tokens;
|
|
57
|
+
return {
|
|
58
|
+
tokens: defaultTokens,
|
|
59
|
+
totalUsdBalance: calculateTotalUsdBalanceUSD(defaultTokens),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
let fetchedTokens = [];
|
|
63
|
+
// Fetch tokens based on chain type
|
|
64
|
+
switch (chainType) {
|
|
50
65
|
case ChainType.EVM:
|
|
51
|
-
|
|
66
|
+
fetchedTokens = await getAllEvmTokensBalance(evmTokens, address, chains);
|
|
67
|
+
break;
|
|
68
|
+
case ChainType.COSMOS:
|
|
69
|
+
const addresses = await getAllKeysForSupportedCosmosChains(cosmosChains.map((c) => c.chainId), keplrTypeWallet);
|
|
70
|
+
fetchedTokens = await getAllCosmosBalancesForAddress({
|
|
71
|
+
addresses,
|
|
72
|
+
cosmosChains,
|
|
73
|
+
cosmosTokens,
|
|
74
|
+
});
|
|
52
75
|
break;
|
|
76
|
+
case ChainType.BTC:
|
|
53
77
|
default:
|
|
54
|
-
|
|
78
|
+
fetchedTokens = placeholderData.tokens;
|
|
79
|
+
break;
|
|
55
80
|
}
|
|
56
81
|
return {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
isSuccess: chainType ? baseQuery.isSuccess : true,
|
|
60
|
-
data: baseQuery.data ??
|
|
61
|
-
tokensWithZeroBalance[chainType ?? ChainType.EVM] ??
|
|
62
|
-
[],
|
|
82
|
+
tokens: fetchedTokens,
|
|
83
|
+
totalUsdBalance: calculateTotalUsdBalanceUSD(fetchedTokens),
|
|
63
84
|
};
|
|
64
|
-
},
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
...tokensWithZeroBalance[ChainType.COSMOS],
|
|
70
|
-
...tokensWithZeroBalance[ChainType.BTC],
|
|
71
|
-
];
|
|
72
|
-
}
|
|
73
|
-
const selectedChainTokens = tokensWithBalanceQuery.data ?? tokensWithZeroBalance[chainType];
|
|
74
|
-
const otherChainTypes = Object.values(ChainType).filter((type) => type !== chainType);
|
|
75
|
-
const otherChainTokens = otherChainTypes.flatMap((type) => tokensWithZeroBalance[type]);
|
|
76
|
-
return [...selectedChainTokens, ...otherChainTokens];
|
|
77
|
-
}, [tokensWithBalanceQuery.data, tokensWithZeroBalance, chainType]);
|
|
78
|
-
const totalUsdBalance = useMemo(() => calculateTotalUsdBalanceUSD(tokens), [tokens]);
|
|
85
|
+
}, {
|
|
86
|
+
...queryOptions,
|
|
87
|
+
enabled: isQueryEnabled,
|
|
88
|
+
});
|
|
89
|
+
// Return placeholder if not fetched yet, otherwise return query data
|
|
79
90
|
return {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
refetch: tokensWithBalanceQuery.refetch,
|
|
83
|
-
totalUsdBalance,
|
|
91
|
+
...query,
|
|
92
|
+
data: query.data ?? placeholderData,
|
|
84
93
|
};
|
|
85
94
|
};
|
|
86
95
|
//# sourceMappingURL=useAllTokensWithBalanceForChainType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAllTokensWithBalanceForChainType.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useAllTokensWithBalanceForChainType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAGL,QAAQ,GACT,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AAEvD,OAAO,EACL,2BAA2B,EAC3B,kCAAkC,GACnC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"useAllTokensWithBalanceForChainType.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useAllTokensWithBalanceForChainType.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,7 +46,7 @@ export const useEvmBalance = ({ chain, token, userAddress, enabled = true, refre
|
|
|
46
46
|
};
|
|
47
47
|
export const useCosmosBalance = ({ chainData, token, userAddress, enabled = true, refreshIntervalMs = DEFAULT_REFRESH_INTERVAL_MS, }) => {
|
|
48
48
|
const { isConnected } = useCosmosContext();
|
|
49
|
-
const {
|
|
49
|
+
const { data: cosmosBalancesData } = useAllTokensWithBalanceForChainType({
|
|
50
50
|
chainType: ChainType.COSMOS,
|
|
51
51
|
address: chainData?.chainType === ChainType.COSMOS ? userAddress : undefined,
|
|
52
52
|
});
|
|
@@ -57,7 +57,7 @@ export const useCosmosBalance = ({ chainData, token, userAddress, enabled = true
|
|
|
57
57
|
chainData &&
|
|
58
58
|
chainData.chainType === ChainType.COSMOS &&
|
|
59
59
|
isConnected) {
|
|
60
|
-
return (
|
|
60
|
+
return (cosmosBalancesData?.tokens?.find((b) => b.address === token?.address && b.chainId === chainData.chainId)?.balance ?? "0");
|
|
61
61
|
}
|
|
62
62
|
return "0";
|
|
63
63
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBalance.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useBalance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAC;AAE5F,MAAM,2BAA2B,GAAG,KAAK,CAAC;AAE1C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,KAAK,EACL,KAAK,EACL,WAAW,EACX,OAAO,GAAG,IAAI,EACd,iBAAiB,GAAG,2BAA2B,GAOhD,EAAE,EAAE;IACH,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CAAC;IAEpC,MAAM,aAAa,GACjB,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,KAAK,qBAAqB,CAAC,WAAW,EAAE,CAAC;IACvE,MAAM,iBAAiB,GAAG,WAA4B,CAAC;IAEvD,qDAAqD;IACrD,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,UAAU,CAAC;QACzC,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC;QAC/B,KAAK,EAAE;YACL,OAAO,EACL,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,WAAW,IAAI,aAAa;YACzE,eAAe,EAAE,iBAAiB;YAClC,KAAK,EAAE,CAAC;SACT;KACF,CAAC,CAAC;IAEH,8DAA8D;IAC9D,uFAAuF;IACvF,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC;QAC7C,OAAO,EAAE,KAAK,EAAE,OAAwB;QACxC,GAAG,EAAE,QAAQ;QACb,YAAY,EAAE,WAAW;QACzB,IAAI,EAAE,CAAC,iBAAiB,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC;QAC/B,KAAK,EAAE;YACL,OAAO,EACL,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC;gBAC1B,OAAO;gBACP,CAAC,CAAC,WAAW;gBACb,CAAC,aAAa;YAChB,eAAe,EAAE,iBAAiB;YAClC,KAAK,EAAE,CAAC;SACT;KACF,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;IAEpE,MAAM,gBAAgB,GAAG,kBAAkB,CACzC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,QAAQ,IAAI,EAAE,CACtB,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAC/B,SAAS,EACT,KAAK,EACL,WAAW,EACX,OAAO,GAAG,IAAI,EACd,iBAAiB,GAAG,2BAA2B,GAOhD,EAAE,EAAE;IACH,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAE3C,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"useBalance.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useBalance.ts"],"names":[],"mappings":"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"}
|