@0xsquid/react-hooks 3.0.30-beta.24 → 3.0.30-beta.25
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/wallet/useGnosisContext.d.ts +1 -0
- package/dist/hooks/wallet/useGnosisContext.js +24 -1
- package/dist/hooks/wallet/useGnosisContext.js.map +1 -1
- package/dist/hooks/wallet/useMultiChainWallet.d.ts +13 -3
- package/dist/hooks/wallet/useMultiChainWallet.js +7 -22
- package/dist/hooks/wallet/useMultiChainWallet.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,10 +1,23 @@
|
|
|
1
1
|
import SafeAppsSDK, { TransactionStatus as GnosisTransactionStatus, } from "@safe-global/safe-apps-sdk";
|
|
2
|
-
import { useCallback, useEffect, useState } from "react";
|
|
2
|
+
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
3
3
|
import { useAccount } from "wagmi";
|
|
4
|
+
import { useSquidChains } from "../chains/useSquidChains";
|
|
5
|
+
import { useSwapRoutePersistStore } from "../store/useSquidStore";
|
|
6
|
+
import { useWalletStore } from "../store/useWalletStore";
|
|
4
7
|
export const useGnosisContext = () => {
|
|
5
8
|
const { connector, isConnected, address } = useAccount();
|
|
6
9
|
const [isGnosisContext, setIsGnosisContext] = useState(false);
|
|
7
10
|
const [gnosisSafeInfo, setGnosisSafeInfo] = useState();
|
|
11
|
+
const connectedWalletsByChainType = useWalletStore((state) => state.connectedWalletsByChainType);
|
|
12
|
+
const { destinationAddress, fromChainId } = useSwapRoutePersistStore((store) => ({
|
|
13
|
+
destinationAddress: store.swapRoute?.destinationAddress?.address,
|
|
14
|
+
fromChainId: store.swapRoute?.fromChainId,
|
|
15
|
+
}));
|
|
16
|
+
const { findChain } = useSquidChains();
|
|
17
|
+
const fromChain = findChain(fromChainId)?.chainType;
|
|
18
|
+
const sourceAddress = fromChain
|
|
19
|
+
? connectedWalletsByChainType[fromChain]?.address
|
|
20
|
+
: undefined;
|
|
8
21
|
/**
|
|
9
22
|
* Method that will be used to send transaction
|
|
10
23
|
* TODO: could have loaded the sdk when app load and stored globally
|
|
@@ -24,6 +37,15 @@ export const useGnosisContext = () => {
|
|
|
24
37
|
useEffect(() => {
|
|
25
38
|
getGnosisSafeContext();
|
|
26
39
|
}, [getGnosisSafeContext]);
|
|
40
|
+
/**
|
|
41
|
+
* Check if we are in a Gnosis Safe Context
|
|
42
|
+
* And if source wallet address = destination address
|
|
43
|
+
* If destinationAddress is not defined, it means that it's the same from the source
|
|
44
|
+
*/
|
|
45
|
+
const isSameAddressAndGnosisContext = useMemo(() => {
|
|
46
|
+
const destAddressSameAsSource = sourceAddress === destinationAddress || destinationAddress === undefined;
|
|
47
|
+
return isGnosisContext && destAddressSameAsSource;
|
|
48
|
+
}, [sourceAddress, destinationAddress, isGnosisContext]);
|
|
27
49
|
/**
|
|
28
50
|
* There's a specific way to get the transaction hash for the safe connector
|
|
29
51
|
* Using then initial hash received by the transaction, we can get the real hash
|
|
@@ -52,6 +74,7 @@ export const useGnosisContext = () => {
|
|
|
52
74
|
getGnosisTransactionHash,
|
|
53
75
|
isGnosisConnected,
|
|
54
76
|
gnosisAddress: isGnosisConnected ? address : undefined,
|
|
77
|
+
isSameAddressAndGnosisContext,
|
|
55
78
|
};
|
|
56
79
|
};
|
|
57
80
|
//# 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,GAE7C,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useGnosisContext.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useGnosisContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,23 @@
|
|
|
1
1
|
import type { ChainData } from "@0xsquid/squid-types";
|
|
2
2
|
import { ChainType } from "@0xsquid/squid-types";
|
|
3
|
-
import { FullAddressData } from "../../core";
|
|
4
3
|
export declare const useMultiChainWallet: (chain: ChainData | undefined) => {
|
|
5
4
|
changeNetworkIfNeeded: import("@tanstack/react-query").UseMutationResult<boolean, any, void, unknown>;
|
|
6
5
|
networkConnected: boolean;
|
|
7
6
|
networkConnectedOnRightChain: boolean;
|
|
8
|
-
connectedAddress:
|
|
7
|
+
connectedAddress: {
|
|
8
|
+
address?: undefined;
|
|
9
|
+
formatted?: undefined;
|
|
10
|
+
ens?: undefined;
|
|
11
|
+
} | {
|
|
12
|
+
address: string | undefined;
|
|
13
|
+
formatted: string;
|
|
14
|
+
ens: import("../..").EnsData | undefined;
|
|
15
|
+
} | {
|
|
16
|
+
address: string | undefined;
|
|
17
|
+
formatted: string;
|
|
18
|
+
ens?: undefined;
|
|
19
|
+
};
|
|
9
20
|
connectedEvmChain: ChainData | undefined;
|
|
10
21
|
evmAddress: string | undefined;
|
|
11
22
|
isChainTypeConnected: (chainType: ChainType) => boolean;
|
|
12
|
-
isSameAddressAndGnosisContext: boolean;
|
|
13
23
|
};
|
|
@@ -6,7 +6,6 @@ import { useAccount, useSwitchChain } from "wagmi";
|
|
|
6
6
|
import { useCosmosContext } from "../../core/providers/CosmosProvider";
|
|
7
7
|
import { addEthereumChain, formatHash, isEvmChainNotSupportedError, } from "../../services/internal/walletService";
|
|
8
8
|
import { useSquidChains } from "../chains/useSquidChains";
|
|
9
|
-
import { useSwapRoutePersistStore } from "../store/useSquidStore";
|
|
10
9
|
import { useEnsDataForAddress } from "./useEns";
|
|
11
10
|
import { useGnosisContext } from "./useGnosisContext";
|
|
12
11
|
import { useWallet } from "./useWallet";
|
|
@@ -15,12 +14,9 @@ export const useMultiChainWallet = (chain) => {
|
|
|
15
14
|
const { chain: currentEvmChain, connector: evmConnector } = useAccount();
|
|
16
15
|
const { chains } = useSquidChains();
|
|
17
16
|
const { getCosmosAddressForChain } = useCosmosContext();
|
|
18
|
-
const {
|
|
19
|
-
const { swapRoute } = useSwapRoutePersistStore();
|
|
17
|
+
const { isGnosisConnected } = useGnosisContext();
|
|
20
18
|
const { switchChainAsync } = useSwitchChain();
|
|
21
|
-
const evmAddress = useMemo(() =>
|
|
22
|
-
return connectedAddresses[ChainType.EVM];
|
|
23
|
-
}, [connectedAddresses]);
|
|
19
|
+
const evmAddress = useMemo(() => connectedAddresses[ChainType.EVM], [connectedAddresses]);
|
|
24
20
|
const evmEnsData = useEnsDataForAddress({
|
|
25
21
|
address: evmAddress,
|
|
26
22
|
options: {
|
|
@@ -32,7 +28,7 @@ export const useMultiChainWallet = (chain) => {
|
|
|
32
28
|
* Get connected address, depends on chainType
|
|
33
29
|
*/
|
|
34
30
|
const connectedAddress = useMemo(() => {
|
|
35
|
-
if (!chain
|
|
31
|
+
if (!chain)
|
|
36
32
|
return {};
|
|
37
33
|
switch (chain.chainType) {
|
|
38
34
|
case ChainType.EVM:
|
|
@@ -57,7 +53,7 @@ export const useMultiChainWallet = (chain) => {
|
|
|
57
53
|
default:
|
|
58
54
|
return {};
|
|
59
55
|
}
|
|
60
|
-
}, [chain
|
|
56
|
+
}, [chain, evmAddress, evmEnsData.data, cosmosAddress]);
|
|
61
57
|
/**
|
|
62
58
|
* Change current network for desired chain
|
|
63
59
|
*/
|
|
@@ -91,7 +87,7 @@ export const useMultiChainWallet = (chain) => {
|
|
|
91
87
|
},
|
|
92
88
|
});
|
|
93
89
|
const isChainTypeConnected = useCallback((chainType) => {
|
|
94
|
-
if (isGnosisConnected) {
|
|
90
|
+
if (isGnosisConnected && chainType === ChainType.EVM) {
|
|
95
91
|
return true;
|
|
96
92
|
}
|
|
97
93
|
const connectedWallet = connectedWalletsByChainType[chainType];
|
|
@@ -101,7 +97,7 @@ export const useMultiChainWallet = (chain) => {
|
|
|
101
97
|
* Handle multiple chains
|
|
102
98
|
*/
|
|
103
99
|
const networkConnected = useMemo(() => {
|
|
104
|
-
if (!chain
|
|
100
|
+
if (!chain)
|
|
105
101
|
return false;
|
|
106
102
|
switch (chain.chainType) {
|
|
107
103
|
case ChainType.EVM:
|
|
@@ -111,7 +107,7 @@ export const useMultiChainWallet = (chain) => {
|
|
|
111
107
|
default:
|
|
112
108
|
return false;
|
|
113
109
|
}
|
|
114
|
-
}, [chain
|
|
110
|
+
}, [chain, isChainTypeConnected]);
|
|
115
111
|
useEffect(() => {
|
|
116
112
|
if (chain?.chainType === ChainType.COSMOS && networkConnected) {
|
|
117
113
|
getCosmosAddressForChain(chain.chainId).then(setCosmosAddress);
|
|
@@ -140,16 +136,6 @@ export const useMultiChainWallet = (chain) => {
|
|
|
140
136
|
}
|
|
141
137
|
return true;
|
|
142
138
|
}, [isChainTypeConnected, currentEvmChain, chain]);
|
|
143
|
-
/**
|
|
144
|
-
* Check if we are in a Gnosis Safe Context
|
|
145
|
-
* And if source wallet address = destination address
|
|
146
|
-
* If swapRoute.destinationAddress is not defined, it means that it's the same from the source
|
|
147
|
-
*/
|
|
148
|
-
const isSameAddressAndGnosisContext = useMemo(() => {
|
|
149
|
-
const destAddressSameAsSource = connectedAddress === swapRoute?.destinationAddress ||
|
|
150
|
-
swapRoute?.destinationAddress === undefined;
|
|
151
|
-
return isGnosisContext && destAddressSameAsSource;
|
|
152
|
-
}, [connectedAddress, swapRoute, isGnosisContext]);
|
|
153
139
|
return {
|
|
154
140
|
changeNetworkIfNeeded,
|
|
155
141
|
networkConnected,
|
|
@@ -158,7 +144,6 @@ export const useMultiChainWallet = (chain) => {
|
|
|
158
144
|
connectedEvmChain,
|
|
159
145
|
evmAddress,
|
|
160
146
|
isChainTypeConnected,
|
|
161
|
-
isSameAddressAndGnosisContext,
|
|
162
147
|
};
|
|
163
148
|
};
|
|
164
149
|
//# sourceMappingURL=useMultiChainWallet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMultiChainWallet.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useMultiChainWallet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAElE,OAAO,EAAE,wBAAwB,EAAE,MAAM,MAAM,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useMultiChainWallet.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useMultiChainWallet.ts"],"names":[],"mappings":"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"}
|