@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: (wallet: Wallet, direction?: "from" | "to", isRetry?: boolean) => Promise<boolean>;
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 { useMemo } from "react";
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
- * Connect a wallet
16
- *
17
- * Retry (only once) if the wallet is MetaMask and the connection failed
18
- * This is a workaround because sometimes wagmi this.getProvider() is undefined for metamask but the next try, it's defined
19
- * TODO: Remove this when wagmi is fixed or do another approach to connect wallets with EIP-6963
20
- * Line where the provider is sometimes undefined: https://github.com/wevm/wagmi/blob/main/packages/connectors/src/metaMask.ts#L67
21
- *
22
- * @param wallet
23
- * @param direction
24
- * @param isRetry
25
- * @returns
26
- */
27
- const connectWallet = async (wallet, direction, isRetry = false) => {
28
- redirectExtensionStoreIfNotInstalled(wallet);
29
- try {
30
- if (wallet &&
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
- else if (wallet.type === ChainType.COSMOS && chain) {
46
- const cosmosWallet = wallet;
47
- if (cosmosWallet.connectorId !== cosmosConnectedWallet?.connectorId) {
48
- await connectCosmos?.mutateAsync({
49
- chain,
50
- wallet: cosmosWallet,
51
- direction,
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
- return true;
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
- return false;
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
- if (walletClient) {
76
- await walletClient.request({
77
- method: "wallet_requestPermissions",
78
- params: [
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":"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"}
1
+ {"version":3,"file":"useWallet.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useWallet.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0xsquid/react-hooks",
3
- "version": "3.0.4",
3
+ "version": "3.0.5",
4
4
  "description": "Squid hooks monorepo",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",