Skip to content

Commit 8568c46

Browse files
committed
split hooks
1 parent fe41556 commit 8568c46

File tree

17 files changed

+477
-38
lines changed

17 files changed

+477
-38
lines changed

demo/wagmi-react-app/package-lock.json

Lines changed: 10 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
import { Web3AuthProvider as Web3AuthProviderNoModal } from "@web3auth/no-modal/react";
21
import { createElement, PropsWithChildren } from "react";
32

43
import { Web3AuthInnerProvider } from "./context/Web3AuthInnerContext";
54
import { Web3AuthProviderProps } from "./interfaces";
65

76
export function Web3AuthProvider({ config, children }: PropsWithChildren<Web3AuthProviderProps>) {
8-
return createElement(Web3AuthInnerProvider, { config }, createElement(Web3AuthProviderNoModal, { config }, children));
7+
return createElement(Web3AuthInnerProvider, { config }, children);
98
}
Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
1-
export { useWeb3Auth } from "./useWeb3Auth";
2-
export { useWeb3AuthConnect } from "./useWeb3AuthConnect";
3-
export {
4-
useCheckout,
5-
useEnableMFA,
6-
useManageMFA,
7-
useSwap,
8-
useSwitchChain,
9-
useUserToken,
10-
useWalletConnectScanner,
11-
useWalletServicesPlugin,
12-
useWalletUI,
13-
useWeb3AuthAccount,
14-
useWeb3AuthDisconnect,
15-
} from "@web3auth/no-modal/react";
1+
export * from "./useCheckout";
2+
export * from "./useEnableMFA";
3+
export * from "./useManageMFA";
4+
export * from "./useSwap";
5+
export * from "./useSwitchChain";
6+
export * from "./useUserToken";
7+
export * from "./useWalletConnectScanner";
8+
export * from "./useWalletServicesPlugin";
9+
export * from "./useWalletUI";
10+
export * from "./useWeb3Auth";
11+
export * from "./useWeb3AuthAccount";
12+
export * from "./useWeb3AuthConnect";
13+
export * from "./useWeb3AuthDisconnect";
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { BaseEmbedControllerState } from "@toruslabs/base-controllers";
2+
import { WalletServicesPluginError, Web3AuthError } from "@web3auth/no-modal";
3+
import { useCallback, useState } from "react";
4+
5+
import { useWalletServicesPlugin } from "./useWalletServicesPlugin";
6+
7+
export interface IUseCheckout {
8+
loading: boolean;
9+
error: Web3AuthError | null;
10+
showCheckout: (showCheckoutParams?: BaseEmbedControllerState["showCheckout"]) => Promise<void>;
11+
}
12+
13+
export const useCheckout = (): IUseCheckout => {
14+
const { plugin, isConnected } = useWalletServicesPlugin();
15+
const [loading, setLoading] = useState(false);
16+
const [error, setError] = useState<Web3AuthError | null>(null);
17+
18+
const showCheckout = useCallback(
19+
async (showCheckoutParams?: BaseEmbedControllerState["showCheckout"]) => {
20+
if (!plugin) throw WalletServicesPluginError.notInitialized();
21+
if (!isConnected) throw WalletServicesPluginError.walletPluginNotConnected();
22+
23+
setLoading(true);
24+
setError(null);
25+
try {
26+
await plugin.showCheckout(showCheckoutParams);
27+
} catch (error) {
28+
setError(error as Web3AuthError);
29+
} finally {
30+
setLoading(false);
31+
}
32+
},
33+
[plugin, isConnected]
34+
);
35+
36+
return { loading, error, showCheckout };
37+
};
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { Web3AuthError } from "@web3auth/no-modal";
2+
import { useCallback, useState } from "react";
3+
4+
import { useWeb3AuthInner } from "./useWeb3AuthInner";
5+
6+
export interface IUseEnableMFA {
7+
loading: boolean;
8+
error: Web3AuthError | null;
9+
enableMFA<T>(params?: T): Promise<void>;
10+
}
11+
12+
export const useEnableMFA = (): IUseEnableMFA => {
13+
const { web3Auth } = useWeb3AuthInner();
14+
15+
const [loading, setLoading] = useState(false);
16+
const [error, setError] = useState<Web3AuthError | null>(null);
17+
18+
const enableMFA = useCallback(
19+
async <T>(params: T) => {
20+
setLoading(true);
21+
setError(null);
22+
try {
23+
await web3Auth.enableMFA(params);
24+
} catch (error) {
25+
setError(error as Web3AuthError);
26+
} finally {
27+
setLoading(false);
28+
}
29+
},
30+
[web3Auth]
31+
);
32+
33+
return { loading, error, enableMFA };
34+
};
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { Web3AuthError } from "@web3auth/no-modal";
2+
import { useCallback, useState } from "react";
3+
4+
import { useWeb3AuthInner } from "./useWeb3AuthInner";
5+
6+
export interface IUseManageMFA {
7+
loading: boolean;
8+
error: Web3AuthError | null;
9+
manageMFA<T>(params?: T): Promise<void>;
10+
}
11+
12+
export const useManageMFA = (): IUseManageMFA => {
13+
const { web3Auth } = useWeb3AuthInner();
14+
15+
const [loading, setLoading] = useState(false);
16+
const [error, setError] = useState<Web3AuthError | null>(null);
17+
18+
const manageMFA = useCallback(
19+
async <T>(params: T) => {
20+
setLoading(true);
21+
setError(null);
22+
try {
23+
await web3Auth.manageMFA(params);
24+
} catch (error) {
25+
setError(error as Web3AuthError);
26+
} finally {
27+
setLoading(false);
28+
}
29+
},
30+
[web3Auth]
31+
);
32+
33+
return { loading, error, manageMFA };
34+
};
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { BaseEmbedControllerState } from "@toruslabs/base-controllers";
2+
import { WalletServicesPluginError, Web3AuthError } from "@web3auth/no-modal";
3+
import { useCallback, useState } from "react";
4+
5+
import { useWalletServicesPlugin } from "./useWalletServicesPlugin";
6+
7+
export interface IUseSwap {
8+
loading: boolean;
9+
error: Web3AuthError | null;
10+
showSwap: (showSwapParams?: BaseEmbedControllerState["showSwap"]) => Promise<void>;
11+
}
12+
13+
export const useSwap = (): IUseSwap => {
14+
const { plugin, isConnected } = useWalletServicesPlugin();
15+
const [loading, setLoading] = useState(false);
16+
const [error, setError] = useState<Web3AuthError | null>(null);
17+
18+
const showSwap = useCallback(
19+
async (showSwapParams?: BaseEmbedControllerState["showSwap"]) => {
20+
if (!plugin) throw WalletServicesPluginError.notInitialized();
21+
if (!isConnected) throw WalletServicesPluginError.walletPluginNotConnected();
22+
23+
setLoading(true);
24+
setError(null);
25+
try {
26+
await plugin.showSwap(showSwapParams);
27+
} catch (error) {
28+
setError(error as Web3AuthError);
29+
} finally {
30+
setLoading(false);
31+
}
32+
},
33+
[plugin, isConnected]
34+
);
35+
36+
return { loading, error, showSwap };
37+
};
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { Web3AuthError } from "@web3auth/no-modal";
2+
import { useCallback, useState } from "react";
3+
4+
import { useWeb3AuthInner } from "../hooks/useWeb3AuthInner";
5+
6+
export interface IUseSwitchChain {
7+
switchingChain: boolean;
8+
switchingChainError: Web3AuthError | null;
9+
switchChain: (chainId: string) => Promise<void>;
10+
}
11+
12+
export const useSwitchChain = (): IUseSwitchChain => {
13+
const { web3Auth } = useWeb3AuthInner();
14+
15+
const [switchingChain, setSwitchingChain] = useState(false);
16+
const [switchingChainError, setSwitchingChainError] = useState<Web3AuthError | null>(null);
17+
18+
const switchChain = useCallback(
19+
async (chainId: string) => {
20+
setSwitchingChain(true);
21+
setSwitchingChainError(null);
22+
try {
23+
await web3Auth.switchChain({ chainId });
24+
} catch (error) {
25+
setSwitchingChainError(error as Web3AuthError);
26+
} finally {
27+
setSwitchingChain(false);
28+
}
29+
},
30+
[web3Auth]
31+
);
32+
33+
return { switchingChain, switchingChainError, switchChain };
34+
};
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { Web3AuthError } from "@web3auth/no-modal";
2+
import { useCallback, useState } from "react";
3+
4+
import { useWeb3AuthInner } from "./useWeb3AuthInner";
5+
6+
export interface IUseUserToken {
7+
loading: boolean;
8+
error: Web3AuthError | null;
9+
token: string | null;
10+
authenticateUser: () => Promise<string | null>;
11+
}
12+
13+
export const useUserToken = () => {
14+
const { web3Auth } = useWeb3AuthInner();
15+
16+
const [loading, setLoading] = useState(false);
17+
const [error, setError] = useState<Web3AuthError | null>(null);
18+
const [token, setToken] = useState<string | null>(null);
19+
20+
const authenticateUser = useCallback(async () => {
21+
setLoading(true);
22+
setError(null);
23+
try {
24+
const userAuthInfo = await web3Auth.authenticateUser();
25+
if (userAuthInfo?.idToken) {
26+
setToken(userAuthInfo.idToken);
27+
}
28+
return userAuthInfo?.idToken;
29+
} catch (error) {
30+
setError(error as Web3AuthError);
31+
} finally {
32+
setLoading(false);
33+
}
34+
}, [web3Auth]);
35+
36+
return { loading, error, token, authenticateUser };
37+
};
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { BaseEmbedControllerState } from "@toruslabs/base-controllers";
2+
import { WalletServicesPluginError, Web3AuthError } from "@web3auth/no-modal";
3+
import { useCallback, useState } from "react";
4+
5+
import { useWalletServicesPlugin } from "./useWalletServicesPlugin";
6+
7+
export interface IUseWalletConnectScanner {
8+
loading: boolean;
9+
error: Web3AuthError | null;
10+
showWalletConnectScanner: (showWalletConnectScannerParams?: BaseEmbedControllerState["showWalletConnect"]) => Promise<void>;
11+
}
12+
13+
export const useWalletConnectScanner = (): IUseWalletConnectScanner => {
14+
const { plugin, isConnected } = useWalletServicesPlugin();
15+
const [loading, setLoading] = useState(false);
16+
const [error, setError] = useState<Web3AuthError | null>(null);
17+
18+
const showWalletConnectScanner = useCallback(
19+
async (showWalletConnectScannerParams?: BaseEmbedControllerState["showWalletConnect"]) => {
20+
if (!plugin) throw WalletServicesPluginError.notInitialized();
21+
if (!isConnected) throw WalletServicesPluginError.walletPluginNotConnected();
22+
23+
setLoading(true);
24+
setError(null);
25+
try {
26+
await plugin.showWalletConnectScanner(showWalletConnectScannerParams);
27+
} catch (error) {
28+
setError(error as Web3AuthError);
29+
} finally {
30+
setLoading(false);
31+
}
32+
},
33+
[plugin, isConnected]
34+
);
35+
36+
return { loading, error, showWalletConnectScanner };
37+
};

0 commit comments

Comments
 (0)