@vjgee Here is my code :
import React, { useEffect, useState } from "react";
import Button from "./Button";
import ModalWrapper from "../modal/Modal.style";
import { CgClose } from "react-icons/cg";
import { FcGoogle } from "react-icons/fc";
import {
Web3AuthMPCCoreKit,
WEB3AUTH_NETWORK,
COREKIT_STATUS,
SubVerifierDetailsParams,
} from "@web3auth/mpc-core-kit";
import { useWeb3AuthSigner } from "../contex/web3-auth-signer";
import { SafeEventEmitterProvider } from "@web3auth/base";
import Web3 from "web3";
const selectedNetwork = WEB3AUTH_NETWORK.MAINNET;
const clientidweb3 = process.env.REACT_APP_WEB3AUTH_CLIENTID;
const coreKitInstance = new Web3AuthMPCCoreKit({
web3AuthClientId: clientidweb3 as string,
web3AuthNetwork: selectedNetwork,
uxMode: "redirect",
chainConfig: {
chainNamespace: "eip155",
chainId: "0xA4B1", // hex of 42161
//rpcTarget: "https://rpc.ankr.com/arbitrum",
rpcTarget:
"https://arbitrum-mainnet.infura.io/v3/d54b5cf96b554b939c26255f6220a872",
// Avoid using public rpcTarget in production.
// Use services like Infura, Quicknode etc
displayName: "Arbitrum Mainnet",
blockExplorer: "https://arbiscan.io",
ticker: "AETH",
tickerName: "AETH",
},
});
const ConnectWalletButton: React.FC = () => {
const [isLoading, setIsLoading] = useState<boolean>(false);
const [isLoading1, setIsLoading1] = useState<boolean>(true);
const [rewardtoken, setRewardtoken] = useState<boolean>(false);
const code1 = localStorage.getItem("code");
const {
setWeb3AuthSigner,
web3AuthSigner,
accountAddress,
setAccountAddress,
setSessionKeyProvider,
setUserinfo,
userinfo,
setEcdsaProvider,
code,
setCode,
setIsConnected,
openModule,
setOpenModule,
setAccesscodeopen,
accesscodeopen,
accesscode,
setSessionethProvider,
} = useWeb3AuthSigner();
const [providercorkit, setProvidercorkit] =
useState<SafeEventEmitterProvider | null>(null);
const [openprofile, setOpenprofile] = useState<boolean>(false);
const [web3, setWeb3] = useState<any>(undefined);
//const [sucessfullogin, setsucessfullogin] = useState<boolean>(false);
const [copy, setcopy] = useState<boolean>(false);
//const [resetaccount, setResetaccount] = useState<boolean>(false);
useEffect(() => {
if (coreKitInstance) {
const init = async () => {
await coreKitInstance.init();
if (coreKitInstance.provider) {
setWeb3AuthSigner(coreKitInstance.provider);
}
setCoreKitStatus(coreKitInstance.status);
console.log("coreKitInstance.status-->", coreKitInstance.status);
};
init();
}
}, [setWeb3AuthSigner]);
useEffect(() => {
if (web3AuthSigner) {
const userdata: UserData =
coreKitInstance?.getUserInfo() as unknown as UserData;
setUserinfo(userdata);
//console.log("userdata-->", userdata);
}
}, [setUserinfo, web3AuthSigner]);
useEffect(() => {
if (web3AuthSigner) {
const web3 = new Web3(web3AuthSigner as any);
setWeb3(web3);
}
}, [web3AuthSigner]);
const login = async () => {
try {
setIsLoading(true);
if (!coreKitInstance) {
throw new Error("initiated to login");
}
// console.log("1");
const verifierConfig = {
subVerifierDetails: {
typeOfLogin: "google",
verifier: "blok-capital",
clientId: process.env.REACT_APP_GOOGLE_ID,
},
} as SubVerifierDetailsParams;
await coreKitInstance.loginWithOauth(verifierConfig);
if (coreKitInstance.status === COREKIT_STATUS.REQUIRED_SHARE) {
console.log(
"required more shares, please enter your backup/ device factor key, or reset account unrecoverable once reset, please use it with caution]"
);
//setResetaccount(true);
}
if (coreKitInstance.provider) {
setProvidercorkit(coreKitInstance.provider);
setWeb3AuthSigner(coreKitInstance.provider);
}
setOpenprofile(true);
//router.push(Routes.wallet.root);
} catch (error) {
console.log(error);
//setResetaccount(true);
console.error(error);
} finally {
setIsLoading(false);
}
};
useEffect(() => {
if (web3) {
const getChainID = async () => {
if (!web3) {
console.log("web3 not initialized yet");
return;
}
const chainId = await web3.eth.getChainId();
//console.l og("chainid--->", chainId);
return chainId;
};
getChainID();
}
}, [web3]);
const logout = async () => {
// console.log("---------------");
if (!coreKitInstance) {
throw new Error("coreKitInstance not found");
}
await coreKitInstance.logout();
localStorage.clear();
setWeb3AuthSigner(undefined);
setOpenModule(false);
setAccountAddress(undefined);
setCode(undefined);
};
const popupopen = () => {
if (code === undefined) {
setAccesscodeopen(true);
} else {
setOpenModule(true);
}
};
return (
<>
<Button
className="connect-wallet-btn"
variant={"connect"}
>
{isLoading && (
<div className="">
<div
className="spinner-border h-5 w-5"
role="status"
>
<span className="sr-only"></span>
</div>
</div>
)}
<div
className={` flex gap-2 justify-center items-center text-center ${
isLoading ? "disabled" : " "
}`}
>
<FcGoogle size={28} />
Login with Google
</div>
</Button>
</>
);
};
export default ConnectWalletButton;