@0xsquid/react-hooks 3.0.30-beta.9 → 4.0.0
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/core/constants.d.ts +1 -0
- package/dist/core/constants.js +1 -0
- package/dist/core/constants.js.map +1 -1
- package/dist/core/wagmiConfig.d.ts +2 -3
- package/dist/core/wagmiConfig.js +17 -17
- package/dist/core/wagmiConfig.js.map +1 -1
- package/dist/core/wallets.d.ts +2 -1
- package/dist/core/wallets.js +1 -1
- package/dist/core/wallets.js.map +1 -1
- package/dist/hooks/cosmos/useCosmos.js +2 -2
- package/dist/hooks/cosmos/useCosmos.js.map +1 -1
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/store/useWalletStore.d.ts +1 -1
- package/dist/hooks/store/useWalletStore.js +20 -12
- package/dist/hooks/store/useWalletStore.js.map +1 -1
- package/dist/hooks/tokens/useAllConnectedWalletBalances.d.ts +17 -85
- package/dist/hooks/tokens/useAllConnectedWalletBalances.js +50 -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 +10 -6
- package/dist/hooks/tokens/useBalance.js.map +1 -1
- package/dist/hooks/tokens/useMultipleTokenPrices.js +1 -1
- package/dist/hooks/tokens/useMultipleTokenPrices.js.map +1 -1
- package/dist/hooks/tokens/useNativeBalance.js +7 -7
- package/dist/hooks/tokens/useNativeBalance.js.map +1 -1
- package/dist/hooks/transaction/useApproval.js +8 -3
- package/dist/hooks/transaction/useApproval.js.map +1 -1
- package/dist/hooks/wallet/useAutoConnect.d.ts +3 -1
- package/dist/hooks/wallet/useAutoConnect.js +31 -21
- package/dist/hooks/wallet/useAutoConnect.js.map +1 -1
- package/dist/hooks/wallet/useGnosisContext.d.ts +7 -3
- package/dist/hooks/wallet/useGnosisContext.js +31 -22
- package/dist/hooks/wallet/useGnosisContext.js.map +1 -1
- package/dist/hooks/wallet/useMultiChainWallet.js +6 -1
- package/dist/hooks/wallet/useMultiChainWallet.js.map +1 -1
- package/dist/hooks/wallet/useWallet.d.ts +2 -1
- package/dist/hooks/wallet/useWallet.js +55 -25
- package/dist/hooks/wallet/useWallet.js.map +1 -1
- package/dist/provider/index.d.ts +2 -1
- package/dist/provider/index.js +15 -59
- package/dist/provider/index.js.map +1 -1
- package/dist/services/external/tokenDataService.js +3 -4
- package/dist/services/external/tokenDataService.js.map +1 -1
- package/dist/services/internal/walletService.d.ts +8 -1
- package/dist/services/internal/walletService.js +13 -0
- package/dist/services/internal/walletService.js.map +1 -1
- package/package.json +1 -1
|
@@ -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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"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { ChainType } from "@0xsquid/squid-types";
|
|
2
2
|
import { useQuery } from "@tanstack/react-query";
|
|
3
|
-
import {
|
|
3
|
+
import { useBalance, useReadContract } from "wagmi";
|
|
4
4
|
import { erc20Abi } from "viem";
|
|
5
5
|
import { useCosmosContext } from "../../core";
|
|
6
6
|
import { nativeEvmTokenAddress } from "../../core/constants";
|
|
7
7
|
import { keys } from "../../core/queries/queries-keys";
|
|
8
8
|
import { formatBNToReadable } from "../../services";
|
|
9
|
+
import { useWallet } from "../wallet/useWallet";
|
|
9
10
|
import { useAllTokensWithBalanceForChainType } from "./useAllTokensWithBalanceForChainType";
|
|
10
11
|
const DEFAULT_REFRESH_INTERVAL_MS = 15000;
|
|
11
12
|
export const useEvmBalance = ({ chain, token, userAddress, enabled = true, refreshIntervalMs = DEFAULT_REFRESH_INTERVAL_MS, }) => {
|
|
12
|
-
const { isConnected } =
|
|
13
|
+
const { isConnected } = useWallet();
|
|
13
14
|
const isNativeToken = token?.address.toLowerCase() === nativeEvmTokenAddress.toLowerCase();
|
|
14
15
|
const userAddressParsed = userAddress;
|
|
15
16
|
// Only fetch using useBalance if it's a native token
|
|
@@ -17,7 +18,7 @@ export const useEvmBalance = ({ chain, token, userAddress, enabled = true, refre
|
|
|
17
18
|
address: userAddressParsed,
|
|
18
19
|
chainId: Number(chain?.chainId),
|
|
19
20
|
query: {
|
|
20
|
-
enabled: isConnected && enabled && !!userAddress && isNativeToken,
|
|
21
|
+
enabled: isConnected(ChainType.EVM) && enabled && !!userAddress && isNativeToken,
|
|
21
22
|
refetchInterval: refreshIntervalMs,
|
|
22
23
|
retry: 2,
|
|
23
24
|
},
|
|
@@ -31,7 +32,10 @@ export const useEvmBalance = ({ chain, token, userAddress, enabled = true, refre
|
|
|
31
32
|
args: [userAddressParsed],
|
|
32
33
|
chainId: Number(chain?.chainId),
|
|
33
34
|
query: {
|
|
34
|
-
enabled: isConnected &&
|
|
35
|
+
enabled: isConnected(ChainType.EVM) &&
|
|
36
|
+
enabled &&
|
|
37
|
+
!!userAddress &&
|
|
38
|
+
!isNativeToken,
|
|
35
39
|
refetchInterval: refreshIntervalMs,
|
|
36
40
|
retry: 2,
|
|
37
41
|
},
|
|
@@ -42,7 +46,7 @@ export const useEvmBalance = ({ chain, token, userAddress, enabled = true, refre
|
|
|
42
46
|
};
|
|
43
47
|
export const useCosmosBalance = ({ chainData, token, userAddress, enabled = true, refreshIntervalMs = DEFAULT_REFRESH_INTERVAL_MS, }) => {
|
|
44
48
|
const { isConnected } = useCosmosContext();
|
|
45
|
-
const {
|
|
49
|
+
const { data: cosmosBalancesData } = useAllTokensWithBalanceForChainType({
|
|
46
50
|
chainType: ChainType.COSMOS,
|
|
47
51
|
address: chainData?.chainType === ChainType.COSMOS ? userAddress : undefined,
|
|
48
52
|
});
|
|
@@ -53,7 +57,7 @@ export const useCosmosBalance = ({ chainData, token, userAddress, enabled = true
|
|
|
53
57
|
chainData &&
|
|
54
58
|
chainData.chainType === ChainType.COSMOS &&
|
|
55
59
|
isConnected) {
|
|
56
|
-
return (
|
|
60
|
+
return (cosmosBalancesData?.tokens?.find((b) => b.address === token?.address && b.chainId === chainData.chainId)?.balance ?? "0");
|
|
57
61
|
}
|
|
58
62
|
return "0";
|
|
59
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,
|
|
1
|
+
{"version":3,"file":"useBalance.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useBalance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useQuery } from "@tanstack/react-query";
|
|
2
|
+
import { TOKEN_PRICE_API_URL } from "../../core/constants";
|
|
2
3
|
import { keys } from "../../core/queries/queries-keys";
|
|
3
|
-
const TOKEN_PRICE_API_URL = `https://squid-app-v2-git-chore-wallet-squid-hooks-wiring-0xsquid.vercel.app/api/coingecko`;
|
|
4
4
|
export const useMultipleTokenPrices = (tokens) => {
|
|
5
5
|
const coingeckoIds = Array.from(new Set(tokens.map((token) => token.coingeckoId).filter(Boolean)));
|
|
6
6
|
const coinGeckoQuery = useQuery({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMultipleTokenPrices.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useMultipleTokenPrices.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useMultipleTokenPrices.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useMultipleTokenPrices.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AAcvD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,MAAoC,EACpC,EAAE;IACF,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAC7B,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CACtD,CAAC;IAEd,MAAM,cAAc,GAAG,QAAQ,CAA2B;QACxD,QAAQ,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC;QAC9C,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;gBACjC,MAAM,EAAE,gBAAgB;gBACxB,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC3B,aAAa,EAAE,KAAK;gBACpB,mBAAmB,EAAE,MAAM;aAC5B,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,mBAAmB,IAAI,MAAM,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;aACjD;YACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;QACD,OAAO,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC;KACjC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CACrC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE;QACV,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,IAAI,EAAE;YACR,GAAG,CAAC,EAAE,CAAC,GAAG;gBACR,KAAK,EAAE,IAAI,CAAC,GAAG;gBACf,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,IAAI,EAAE,IAAI,CAAC,cAAc,GAAG,CAAC;aAC9B,CAAC;SACH;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,WAAmB,EAA8B,EAAE,CACxE,WAAW,CAAC,WAAW,CAAC,CAAC;IAE3B,OAAO;QACL,WAAW;QACX,aAAa;QACb,SAAS,EAAE,cAAc,CAAC,SAAS;QACnC,OAAO,EAAE,cAAc,CAAC,OAAO;QAC/B,KAAK,EAAE,cAAc,CAAC,KAAK;QAC3B,OAAO,EAAE,cAAc,CAAC,OAAO;KAChC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { ChainType, } from "@0xsquid/squid-types";
|
|
2
2
|
import { useMemo } from "react";
|
|
3
|
-
import {
|
|
3
|
+
import { useBalance as useWagmiBalance } from "wagmi";
|
|
4
4
|
import { useCosmosContext } from "../../core";
|
|
5
5
|
import { findNativeToken, formatBNToReadable, parseToBigInt, } from "../../services";
|
|
6
|
+
import { useWallet } from "../wallet/useWallet";
|
|
6
7
|
import { useCosmosBalance } from "./useBalance";
|
|
7
8
|
import { useSquidTokens } from "./useSquidTokens";
|
|
8
9
|
const useEvmNativeBalance = (chain, evmAddress) => {
|
|
9
|
-
const { isConnected: isEvmConnected } =
|
|
10
|
+
const { isConnected: isEvmConnected } = useWallet();
|
|
10
11
|
return useWagmiBalance({
|
|
11
12
|
address: evmAddress,
|
|
12
13
|
chainId: Number(chain?.chainId),
|
|
13
14
|
query: {
|
|
14
|
-
enabled: isEvmConnected &&
|
|
15
|
+
enabled: isEvmConnected(ChainType.EVM) && !!evmAddress,
|
|
15
16
|
refetchInterval: 10000,
|
|
16
17
|
staleTime: 5000,
|
|
17
18
|
refetchOnWindowFocus: true,
|
|
@@ -37,10 +38,9 @@ const useCosmosNativeBalance = (chain, cosmosAddress) => {
|
|
|
37
38
|
return { nativeCosmosBalance, nativeCosmosToken, isLoading };
|
|
38
39
|
};
|
|
39
40
|
export const useNativeBalance = (chain) => {
|
|
40
|
-
const {
|
|
41
|
-
const {
|
|
42
|
-
const {
|
|
43
|
-
const { nativeCosmosBalance, nativeCosmosToken, isLoading: isCosmosLoading, } = useCosmosNativeBalance(chain, cosmosAddress);
|
|
41
|
+
const { connectedAddresses } = useWallet();
|
|
42
|
+
const { data: nativeEvmBalance, isLoading: isEvmLoading } = useEvmNativeBalance(chain, connectedAddresses[ChainType.EVM]);
|
|
43
|
+
const { nativeCosmosBalance, nativeCosmosToken, isLoading: isCosmosLoading, } = useCosmosNativeBalance(chain, connectedAddresses[ChainType.COSMOS]);
|
|
44
44
|
const nativeBalance = useMemo(() => {
|
|
45
45
|
switch (chain?.chainType) {
|
|
46
46
|
case ChainType.EVM:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNativeBalance.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useNativeBalance.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,GAGV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"useNativeBalance.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useNativeBalance.ts"],"names":[],"mappings":"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"}
|
|
@@ -115,9 +115,14 @@ export const useApproval = ({ squidRoute, }) => {
|
|
|
115
115
|
}
|
|
116
116
|
if (!!squidRoute && walletClient && fromToken && evmSigner) {
|
|
117
117
|
await approveSpecificTokenToZero(fromToken);
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
118
|
+
try {
|
|
119
|
+
// If needed, we can switch the chain here
|
|
120
|
+
// If already on the correct chain, this will do nothing
|
|
121
|
+
await switchChainAsync({ chainId: Number(fromChain?.chainId) });
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
console.error("Error switching network:", error);
|
|
125
|
+
}
|
|
121
126
|
const approved = await squid?.approveRoute({
|
|
122
127
|
route: squidRoute,
|
|
123
128
|
signer: evmSigner,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useApproval.js","sourceRoot":"","sources":["../../../src/hooks/transaction/useApproval.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useApproval.js","sourceRoot":"","sources":["../../../src/hooks/transaction/useApproval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEhF,OAAO,EAAE,SAAS,EAAwB,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,UAAU,GAGX,EAAE,EAAE;IACH,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,eAAe,EAAE,CAAC;IACjD,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAAC;IAClC,MAAM,EAAE,YAAY,EAAE,GAAG,cAAc,EAAE,CAAC;IAE1C,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC;IAC3C,MAAM,EAAE,gBAAgB,EAAE,GAAG,cAAc,EAAE,CAAC;IAE9C,MAAM,EACJ,gBAAgB,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,GACjD,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAEnC,MAAM,EACJ,YAAY,EACZ,KAAK,EAAE,cAAc,EACrB,cAAc,GACf,GAAG,iBAAiB,CAAC;QACpB,YAAY,EAAE,SAAS,EAAE,OAAO;QAChC,YAAY,EAAE,iBAAiB;QAC/B,cAAc,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM;QACtD,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC;QACpD,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC;KACpC,CAAC,CAAC;IAEH;;;;;OAKG;IACH,MAAM,aAAa,GAAG,QAAQ,CAC5B,IAAI,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,cAAc,CAAC,EAChD,KAAK,IAAI,EAAE;QACT,+CAA+C;QAC/C,uCAAuC;QACvC,IAAI,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC,MAAM,EAAE;YACnE,OAAO,IAAI,CAAC;SACb;QACD,OAAO,YAAY,CAAC;IACtB,CAAC,EACD;QACE,OAAO,EAAE,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,iBAAiB,IAAI,cAAc,EAAE,SAAS;KAC1E,CACF,CAAC;IAEF,qDAAqD;IACrD,MAAM;IACN,wEAAwE;IACxE,oEAAoE;IACpE,4DAA4D;IAC5D,qEAAqE;IACrE,MAAM;IACN,mEAAmE;IACnE,iCAAiC;IACjC,EAAE;IACF,gHAAgH;IAChH,MAAM,0BAA0B,GAAG,KAAK,EAAE,KAAY,EAAE,EAAE;QACxD,IACE,YAAY;YACZ,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM;YACrC,KAAK,CAAC,OAAO,KAAK,GAAG;YACrB,SAAS,EACT;YACA,MAAM,sBAAsB,GAAG,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC;YAErE,MAAM,SAAS,GAAG,MAAM,YAAY,EAAE,YAAY,CAAC;gBACjD,OAAO,EAAE,KAAK,CAAC,OAAwB;gBACvC,GAAG,EAAE;oBACH;wBACE,QAAQ,EAAE,IAAI;wBACd,MAAM,EAAE;4BACN,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;4BACnC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;yBACtC;wBACD,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;wBACjD,IAAI,EAAE,UAAU;qBACjB;iBACF;gBACD,YAAY,EAAE,WAAW;gBACzB,IAAI,EAAE;oBACJ,iBAAkC;oBAClC,sBAAuC;iBACxC;aACF,CAAC,CAAC;YAEH,IACE,SAAS;gBACT,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;gBACxC,YAAY,EACZ;gBACA,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAAC;oBACtD,OAAO,EAAE,KAAK,CAAC,OAAwB;oBACvC,GAAG,EAAE;wBACH;4BACE,QAAQ,EAAE,KAAK;4BACf,MAAM,EAAE;gCACN,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;gCACrC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;6BACpC;4BACD,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,EAAE;4BACX,IAAI,EAAE,UAAU;yBACjB;qBACF;oBACD,YAAY,EAAE,SAAS;oBACvB,IAAI,EAAE,CAAC,sBAAuC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC1D,OAAO,EAAE,iBAAkC;iBAC5C,CAAC,CAAC;gBACH,MAAM,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;aAC3C;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF;;OAEG;IACH,MAAM,YAAY,GAAG,WAAW,CAC9B,KAAK,IAAI,EAAE;QACT,IAAI;YACF,IAAI,SAAS,EAAE,OAAO,KAAK,qBAAqB,EAAE;gBAChD,OAAO,IAAI,CAAC;aACb;YACD,IAAI,CAAC,CAAC,UAAU,IAAI,YAAY,IAAI,SAAS,IAAI,SAAS,EAAE;gBAC1D,MAAM,0BAA0B,CAAC,SAAS,CAAC,CAAC;gBAE5C,IAAI;oBACF,0CAA0C;oBAC1C,wDAAwD;oBACxD,MAAM,gBAAgB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;iBACjE;gBAAC,OAAO,KAAK,EAAE;oBACd,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;iBAClD;gBAED,MAAM,QAAQ,GAAG,MAAM,KAAK,EAAE,YAAY,CAAC;oBACzC,KAAK,EAAE,UAAU;oBACjB,MAAM,EAAE,SAAS;oBACjB,mFAAmF;oBACnF,iBAAiB,EAAE;wBACjB,gBAAgB,EAAE,KAAK;qBACxB;iBACF,CAAC,CAAC;gBAEH,OAAO,QAAQ,CAAC;aACjB;YACD,OAAO,KAAK,CAAC;SACd;QAAC,OAAO,KAAK,EAAE;YACd,uDAAuD;YACvD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO,KAAK,CAAC;SACd;IACH,CAAC,EACD;QACE,SAAS,EAAE,KAAK,IAAI,EAAE;YACpB,MAAM,cAAc,EAAE,OAAO,EAAE,CAAC;YAChC,WAAW,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;QACvE,CAAC;KACF,CACF,CAAC;IAEF,OAAO;QACL,aAAa;QACb,YAAY;QACZ,cAAc;KACf,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { useCallback, useEffect } from "react";
|
|
2
|
-
import { useConnect } from "wagmi";
|
|
1
|
+
import { useCallback, useEffect, useRef } from "react";
|
|
2
|
+
import { useAccount, useConnect, useReconnect, } from "wagmi";
|
|
3
3
|
import { PriorityConnectors } from "../../core/constants";
|
|
4
|
-
import {
|
|
4
|
+
import { useSquidChains } from "../chains/useSquidChains";
|
|
5
|
+
import { useConfigStore } from "../store/useSquidStore";
|
|
6
|
+
import { useEvmWalletListener } from "./useWallet";
|
|
5
7
|
const PRIORITY_CONNECTOR_ID = [PriorityConnectors.Safe];
|
|
6
|
-
const WAGMI_RECENT_CONNECTOR_ID_LOCAL_STORAGE_KEY = "wagmi.recentConnectorId";
|
|
7
8
|
/**
|
|
8
9
|
* Auto connect to Safe provider if it's present
|
|
9
10
|
* Safe will always be the priority connector
|
|
@@ -11,7 +12,12 @@ const WAGMI_RECENT_CONNECTOR_ID_LOCAL_STORAGE_KEY = "wagmi.recentConnectorId";
|
|
|
11
12
|
*/
|
|
12
13
|
export const useAutoConnect = () => {
|
|
13
14
|
const { connect, connectors } = useConnect();
|
|
14
|
-
const {
|
|
15
|
+
const { isConnecting } = useAccount();
|
|
16
|
+
const { chains } = useSquidChains();
|
|
17
|
+
const { isInitialized } = useConfigStore();
|
|
18
|
+
const hasAttemptedReconnect = useRef(false);
|
|
19
|
+
const { reconnect } = useReconnect();
|
|
20
|
+
useEvmWalletListener();
|
|
15
21
|
const autoConnect = useCallback(async () => {
|
|
16
22
|
const queryParameters = new URLSearchParams(window.location.search);
|
|
17
23
|
// TODO: At the moment gnosis was published without the embed parameter in the manifest,
|
|
@@ -33,32 +39,36 @@ export const useAutoConnect = () => {
|
|
|
33
39
|
}
|
|
34
40
|
}
|
|
35
41
|
// Connect priority provider if it's present
|
|
36
|
-
// Otherwise, connect to the last wallet used if authorized
|
|
37
42
|
if (priorityConnector) {
|
|
38
43
|
connect({ connector: priorityConnector });
|
|
39
44
|
}
|
|
40
45
|
else {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
+
if (chains.length > 0 &&
|
|
47
|
+
isInitialized &&
|
|
48
|
+
!isConnecting &&
|
|
49
|
+
!hasAttemptedReconnect.current) {
|
|
50
|
+
try {
|
|
51
|
+
reconnect();
|
|
46
52
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
connectWallet({ wallet: wagmiRecentConnector });
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.error("Error auto connecting wallet:", error);
|
|
55
|
+
}
|
|
56
|
+
finally {
|
|
57
|
+
hasAttemptedReconnect.current = true;
|
|
53
58
|
}
|
|
54
|
-
}
|
|
55
|
-
catch (error) {
|
|
56
|
-
console.error("Error auto connecting wallet:", error);
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
|
-
}, [
|
|
61
|
+
}, [
|
|
62
|
+
connectors,
|
|
63
|
+
connect,
|
|
64
|
+
chains.length,
|
|
65
|
+
isInitialized,
|
|
66
|
+
isConnecting,
|
|
67
|
+
reconnect,
|
|
68
|
+
]);
|
|
60
69
|
useEffect(() => {
|
|
61
70
|
autoConnect();
|
|
62
71
|
}, [autoConnect]);
|
|
72
|
+
return { autoConnect };
|
|
63
73
|
};
|
|
64
74
|
//# sourceMappingURL=useAutoConnect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAutoConnect.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useAutoConnect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useAutoConnect.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useAutoConnect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAGL,UAAU,EACV,UAAU,EACV,YAAY,GACb,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,qBAAqB,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAExD;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC;IAC7C,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,CAAC;IACtC,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,CAAC;IAEpC,MAAM,EAAE,aAAa,EAAE,GAAG,cAAc,EAAE,CAAC;IAC3C,MAAM,qBAAqB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,EAAE,CAAC;IACrC,oBAAoB,EAAE,CAAC;IAEvB,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACzC,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpE,wFAAwF;QACxF,8FAA8F;QAC9F,mFAAmF;QACnF,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAuB,CAAC;QACrE,IAAI,iBAA4D,CAAC;QAEjE,IAAI,SAAS,EAAE;YACb,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;SAChE;aAAM;YACL,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,UAAU,EAAE;gBAChC,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAwB,CAAC,EAAE;oBAC9D,IAAI,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE;wBAC1B,iBAAiB,GAAG,CAAC,CAAC;wBACtB,MAAM;qBACP;iBACF;aACF;SACF;QAED,4CAA4C;QAC5C,IAAI,iBAAiB,EAAE;YACrB,OAAO,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;SAC3C;aAAM;YACL,IACE,MAAM,CAAC,MAAM,GAAG,CAAC;gBACjB,aAAa;gBACb,CAAC,YAAY;gBACb,CAAC,qBAAqB,CAAC,OAAO,EAC9B;gBACA,IAAI;oBACF,SAAS,EAAE,CAAC;iBACb;gBAAC,OAAO,KAAK,EAAE;oBACd,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;iBACvD;wBAAS;oBACR,qBAAqB,CAAC,OAAO,GAAG,IAAI,CAAC;iBACtC;aACF;SACF;IACH,CAAC,EAAE;QACD,UAAU;QACV,OAAO;QACP,MAAM,CAAC,MAAM;QACb,aAAa;QACb,YAAY;QACZ,SAAS;KACV,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,EAAE,CAAC;IAChB,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,OAAO,EAAE,WAAW,EAAE,CAAC;AACzB,CAAC,CAAC"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { SafeInfo } from "@safe-global/safe-apps-sdk";
|
|
2
2
|
export declare const useGnosisContext: () => {
|
|
3
|
-
|
|
4
|
-
isSameAddressAndGnosisContext: boolean;
|
|
3
|
+
gnosisSafeInfo: SafeInfo | undefined;
|
|
5
4
|
isGnosisContext: boolean;
|
|
6
5
|
getGnosisTransactionHash: (initialHash: string) => Promise<string>;
|
|
6
|
+
isGnosisConnected: boolean;
|
|
7
|
+
gnosisAddress: `0x${string}` | undefined;
|
|
8
|
+
};
|
|
9
|
+
export declare const useIsSameAddressAndGnosisContext: () => {
|
|
10
|
+
isSameAddressAndGnosisContext: boolean;
|
|
7
11
|
};
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import SafeAppsSDK, { TransactionStatus as GnosisTransactionStatus, } from "@safe-global/safe-apps-sdk";
|
|
2
2
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
3
3
|
import { useAccount } from "wagmi";
|
|
4
|
-
import { useSwapRoutePersistStore } from "
|
|
5
|
-
import { useSwap } from "
|
|
6
|
-
import { useMultiChainWallet } from "
|
|
4
|
+
import { useSwapRoutePersistStore } from "../store/useSquidStore";
|
|
5
|
+
import { useSwap } from "../swap/useSwap";
|
|
6
|
+
import { useMultiChainWallet } from "./useMultiChainWallet";
|
|
7
7
|
export const useGnosisContext = () => {
|
|
8
|
-
const { connector } = useAccount();
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const { connectedAddress } = useMultiChainWallet(fromChain);
|
|
12
|
-
const [isGnosisContext, setisGnosisContext] = useState(false);
|
|
8
|
+
const { connector, isConnected, address } = useAccount();
|
|
9
|
+
const [isGnosisContext, setIsGnosisContext] = useState(false);
|
|
10
|
+
const [gnosisSafeInfo, setGnosisSafeInfo] = useState();
|
|
13
11
|
/**
|
|
14
12
|
* Method that will be used to send transaction
|
|
15
13
|
* TODO: could have loaded the sdk when app load and stored globally
|
|
@@ -20,24 +18,15 @@ export const useGnosisContext = () => {
|
|
|
20
18
|
const isSafeContext = safe.chainId !== undefined &&
|
|
21
19
|
safe.safeAddress !== undefined &&
|
|
22
20
|
connector?.id === "safe";
|
|
23
|
-
|
|
21
|
+
setGnosisSafeInfo(safe);
|
|
22
|
+
setIsGnosisContext(isSafeContext);
|
|
24
23
|
if (isSafeContext)
|
|
25
24
|
return appsSdk;
|
|
26
25
|
return undefined;
|
|
27
26
|
}, [connector]);
|
|
28
27
|
useEffect(() => {
|
|
29
28
|
getGnosisSafeContext();
|
|
30
|
-
}, [
|
|
31
|
-
/**
|
|
32
|
-
* Check if we are in a Gnosis Safe Context
|
|
33
|
-
* And if source wallet address = destination address
|
|
34
|
-
* If swapRoute.destinationAddress is not defined, it means that it's the same from the source
|
|
35
|
-
*/
|
|
36
|
-
const isSameAddressAndGnosisContext = useMemo(() => {
|
|
37
|
-
const destAddressSameAsSource = connectedAddress === swapRoute?.destinationAddress ||
|
|
38
|
-
swapRoute?.destinationAddress === undefined;
|
|
39
|
-
return isGnosisContext && destAddressSameAsSource;
|
|
40
|
-
}, [connectedAddress, swapRoute, isGnosisContext]);
|
|
29
|
+
}, [getGnosisSafeContext]);
|
|
41
30
|
/**
|
|
42
31
|
* There's a specific way to get the transaction hash for the safe connector
|
|
43
32
|
* Using then initial hash received by the transaction, we can get the real hash
|
|
@@ -59,11 +48,31 @@ export const useGnosisContext = () => {
|
|
|
59
48
|
}
|
|
60
49
|
return tx?.txHash ?? initialHash;
|
|
61
50
|
};
|
|
51
|
+
const isGnosisConnected = connector?.id === "safe" && isConnected;
|
|
62
52
|
return {
|
|
63
|
-
|
|
64
|
-
isSameAddressAndGnosisContext,
|
|
53
|
+
gnosisSafeInfo,
|
|
65
54
|
isGnosisContext,
|
|
66
55
|
getGnosisTransactionHash,
|
|
56
|
+
isGnosisConnected,
|
|
57
|
+
gnosisAddress: isGnosisConnected ? address : undefined,
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
export const useIsSameAddressAndGnosisContext = () => {
|
|
61
|
+
const { isGnosisContext } = useGnosisContext();
|
|
62
|
+
const { fromChain } = useSwap();
|
|
63
|
+
const { connectedAddress: sourceAddress } = useMultiChainWallet(fromChain);
|
|
64
|
+
const destinationAddress = useSwapRoutePersistStore((store) => store.swapRoute?.destinationAddress?.address);
|
|
65
|
+
/**
|
|
66
|
+
* Check if we are in a Gnosis Safe Context
|
|
67
|
+
* And if source wallet address = destination address
|
|
68
|
+
* If destinationAddress is not defined, it means that it's the same from the source
|
|
69
|
+
*/
|
|
70
|
+
const isSameAddressAndGnosisContext = useMemo(() => {
|
|
71
|
+
const destAddressSameAsSource = sourceAddress === destinationAddress || destinationAddress === undefined;
|
|
72
|
+
return isGnosisContext && destAddressSameAsSource;
|
|
73
|
+
}, [sourceAddress, destinationAddress, isGnosisContext]);
|
|
74
|
+
return {
|
|
75
|
+
isSameAddressAndGnosisContext,
|
|
67
76
|
};
|
|
68
77
|
};
|
|
69
78
|
//# sourceMappingURL=useGnosisContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGnosisContext.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useGnosisContext.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,EAAE,EAClB,iBAAiB,IAAI,uBAAuB,
|
|
1
|
+
{"version":3,"file":"useGnosisContext.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useGnosisContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,12 +7,14 @@ import { useCosmosContext } from "../../core/providers/CosmosProvider";
|
|
|
7
7
|
import { addEthereumChain, formatHash, isEvmChainNotSupportedError, } from "../../services/internal/walletService";
|
|
8
8
|
import { useSquidChains } from "../chains/useSquidChains";
|
|
9
9
|
import { useEnsDataForAddress } from "./useEns";
|
|
10
|
+
import { useGnosisContext } from "./useGnosisContext";
|
|
10
11
|
import { useWallet } from "./useWallet";
|
|
11
12
|
export const useMultiChainWallet = (chain) => {
|
|
12
13
|
const { connectedAddresses, connectedWalletsByChainType } = useWallet();
|
|
13
14
|
const { chain: currentEvmChain, connector: evmConnector } = useAccount();
|
|
14
15
|
const { chains } = useSquidChains();
|
|
15
16
|
const { getCosmosAddressForChain } = useCosmosContext();
|
|
17
|
+
const { isGnosisConnected } = useGnosisContext();
|
|
16
18
|
const { switchChainAsync } = useSwitchChain();
|
|
17
19
|
const evmAddress = useMemo(() => connectedAddresses[ChainType.EVM], [connectedAddresses]);
|
|
18
20
|
const evmEnsData = useEnsDataForAddress({
|
|
@@ -85,9 +87,12 @@ export const useMultiChainWallet = (chain) => {
|
|
|
85
87
|
},
|
|
86
88
|
});
|
|
87
89
|
const isChainTypeConnected = useCallback((chainType) => {
|
|
90
|
+
if (isGnosisConnected && chainType === ChainType.EVM) {
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
88
93
|
const connectedWallet = connectedWalletsByChainType[chainType];
|
|
89
94
|
return !!connectedWallet?.wallet && !!connectedWallet?.address;
|
|
90
|
-
}, [connectedWalletsByChainType]);
|
|
95
|
+
}, [connectedWalletsByChainType, isGnosisConnected]);
|
|
91
96
|
/**
|
|
92
97
|
* Handle multiple chains
|
|
93
98
|
*/
|