import { web3AuthChainConfig, web3AuthCliedId } from "@root/constants";
import { AuthAdapter } from "@web3auth/auth-adapter";
import { ADAPTER_EVENTS, UX_MODE, WALLET_ADAPTERS, WEB3AUTH_NETWORK } from "@web3auth/base";
import { CommonPrivateKeyProvider } from "@web3auth/base-provider";
import { Web3AuthNoModal as Web3Auth } from "@web3auth/no-modal";
import { useCallback, useEffect, useState } from "react";
const useWeb3Auth = () => {
const [loggedIn, setLoggedIn] = useState(false);
const [provider, setProvider] = useState(null);
const [web3auth, setWeb3auth] = useState(null);
console.log("==>", loggedIn, web3auth, provider);
useEffect(() => {
const initiate = async () => {
try {
const privateKeyProvider = new CommonPrivateKeyProvider({
config: { chainConfig: web3AuthChainConfig },
});
const web3auth = new Web3Auth({
clientId: web3AuthCliedId,
privateKeyProvider,
web3AuthNetwork: WEB3AUTH_NETWORK.SAPPHIRE_DEVNET,
});
const authAdapter = new AuthAdapter({
adapterSettings: {
uxMode: UX_MODE.REDIRECT,
},
});
web3auth.configureAdapter(authAdapter);
setWeb3auth(web3auth);
await web3auth.init();
setProvider(web3auth.provider);
web3auth.on(ADAPTER_EVENTS.CONNECTED, () => {
console.log("### web3auth connected");
});
web3auth.on(ADAPTER_EVENTS.DISCONNECTED, () => {
console.log("### web3auth disconnected");
});
web3auth.on(ADAPTER_EVENTS.CONNECTING, () => {
console.log("### web3auth connecting");
});
web3auth.on(ADAPTER_EVENTS.ERRORED, (error) => {
console.error("### web3auth error", error);
});
if (web3auth.connected) {
setLoggedIn(true);
}
} catch (e) {
console.log("Error during Web3Auth initialization", e);
}
};
initiate();
}, []);
const login = useCallback(async () => {
if (!web3auth) {
return;
}
const web3authProvider = await web3auth.connectTo(WALLET_ADAPTERS.AUTH, {
loginProvider: "google",
});
console.log("web3authProvider", web3authProvider);
setProvider(web3authProvider);
}, [web3auth]);
return { loggedIn, login };
};
export default useWeb3Auth;
The SS is what showing in localStorage