@0xsquid/react-hooks 3.0.4 → 3.0.5
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.
|
@@ -4,6 +4,7 @@ export declare const useWallet: (chain: ChainData | undefined) => {
|
|
|
4
4
|
wallets: Wallet[];
|
|
5
5
|
disconnectEvm: import("wagmi/query").DisconnectMutateAsync<unknown>;
|
|
6
6
|
currentWallet: Wallet | undefined;
|
|
7
|
-
connectWallet: (
|
|
7
|
+
connectWallet: import("@tanstack/react-query").UseMutateAsyncFunction<boolean, unknown, Wallet, unknown>;
|
|
8
8
|
changeWallet: () => Promise<void>;
|
|
9
|
+
connectingWallet: Wallet | null;
|
|
9
10
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ChainType } from "@0xsquid/squid-types";
|
|
2
|
-
import {
|
|
2
|
+
import { useMutation } from "@tanstack/react-query";
|
|
3
|
+
import { useMemo, useState } from "react";
|
|
3
4
|
import { useAccount, useConnect, useDisconnect, useWalletClient } from "wagmi";
|
|
4
5
|
import { useCosmosContext } from "../../core/providers/CosmosProvider";
|
|
5
6
|
import { findWalletByWagmiConnector, redirectExtensionStoreIfNotInstalled, } from "../../services/internal/walletService";
|
|
@@ -11,87 +12,55 @@ export const useWallet = (chain) => {
|
|
|
11
12
|
const { disconnectAsync: disconnectEvm } = useDisconnect();
|
|
12
13
|
const { isConnected: cosmosIsConnected, connectCosmos, cosmosConnectedWallet, } = useCosmosContext();
|
|
13
14
|
const { connectAsync } = useConnect();
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
wallet.type === ChainType.EVM &&
|
|
32
|
-
wallet.connector) {
|
|
33
|
-
const evmWallet = wallet;
|
|
34
|
-
if (evmWallet.connectorId !== activeConnector?.id) {
|
|
35
|
-
if (evmWallet.connector) {
|
|
36
|
-
await connectAsync({
|
|
37
|
-
connector: evmWallet.connector(),
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
throw new Error("Wallet connector is undefined");
|
|
15
|
+
const [connectingWallet, setConnectingWallet] = useState(null);
|
|
16
|
+
const connectWalletMutation = useMutation({
|
|
17
|
+
mutationFn: async (wallet, direction) => {
|
|
18
|
+
setConnectingWallet(wallet);
|
|
19
|
+
redirectExtensionStoreIfNotInstalled(wallet);
|
|
20
|
+
try {
|
|
21
|
+
if (wallet &&
|
|
22
|
+
wallet.type === ChainType.EVM &&
|
|
23
|
+
wallet.connector) {
|
|
24
|
+
const evmWallet = wallet;
|
|
25
|
+
if (evmWallet.connectorId !== activeConnector?.id) {
|
|
26
|
+
if (evmWallet.connector) {
|
|
27
|
+
await connectAsync({ connector: evmWallet.connector() });
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
throw new Error("Wallet connector is undefined");
|
|
31
|
+
}
|
|
42
32
|
}
|
|
43
33
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
34
|
+
else if (wallet.type === ChainType.COSMOS && chain) {
|
|
35
|
+
const cosmosWallet = wallet;
|
|
36
|
+
if (cosmosWallet.connectorId !== cosmosConnectedWallet?.connectorId) {
|
|
37
|
+
await connectCosmos?.mutateAsync({
|
|
38
|
+
chain,
|
|
39
|
+
wallet: cosmosWallet,
|
|
40
|
+
direction,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
53
43
|
}
|
|
44
|
+
return true;
|
|
54
45
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
catch (error) {
|
|
58
|
-
if (!isRetry && !error.cause && wallet.connectorId === "metaMask") {
|
|
59
|
-
try {
|
|
60
|
-
return connectWallet(wallet, direction, true);
|
|
61
|
-
}
|
|
62
|
-
catch (retryError) {
|
|
63
|
-
console.error("Failed to connect wallet after retry");
|
|
64
|
-
}
|
|
46
|
+
finally {
|
|
47
|
+
setConnectingWallet(null);
|
|
65
48
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
};
|
|
69
|
-
/**
|
|
70
|
-
* Request permissions to change account with wagmi walletClient
|
|
71
|
-
*/
|
|
49
|
+
},
|
|
50
|
+
});
|
|
72
51
|
const changeWallet = async () => {
|
|
73
52
|
try {
|
|
74
|
-
if (activeConnector?.id && isEvmConnected) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
{
|
|
80
|
-
eth_accounts: {},
|
|
81
|
-
},
|
|
82
|
-
],
|
|
83
|
-
});
|
|
84
|
-
}
|
|
53
|
+
if (activeConnector?.id && isEvmConnected && walletClient) {
|
|
54
|
+
await walletClient.request({
|
|
55
|
+
method: "wallet_requestPermissions",
|
|
56
|
+
params: [{ eth_accounts: {} }],
|
|
57
|
+
});
|
|
85
58
|
}
|
|
86
59
|
}
|
|
87
60
|
catch (error) {
|
|
88
61
|
console.error("Failed to change wallet");
|
|
89
62
|
}
|
|
90
63
|
};
|
|
91
|
-
/**
|
|
92
|
-
* Get the connected wallet object
|
|
93
|
-
* @returns {Wallet | undefined}
|
|
94
|
-
*/
|
|
95
64
|
const currentWallet = useMemo(() => {
|
|
96
65
|
if (chain?.chainType === ChainType.EVM) {
|
|
97
66
|
if (activeConnector?.id && isEvmConnected) {
|
|
@@ -116,8 +85,9 @@ export const useWallet = (chain) => {
|
|
|
116
85
|
wallets,
|
|
117
86
|
disconnectEvm,
|
|
118
87
|
currentWallet,
|
|
119
|
-
connectWallet,
|
|
88
|
+
connectWallet: connectWalletMutation.mutateAsync,
|
|
120
89
|
changeWallet,
|
|
90
|
+
connectingWallet,
|
|
121
91
|
};
|
|
122
92
|
};
|
|
123
93
|
//# sourceMappingURL=useWallet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWallet.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useWallet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useWallet.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useWallet.ts"],"names":[],"mappings":"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"}
|