import React, { useMemo, useState } from "react"; import { useParams, useLocation, useNavigate } from "react-router-dom"; import { SnackbarProvider, enqueueSnackbar } from "notistack"; import { Box, Typography } from "@mui/material"; import LoadingButton from "@mui/lab/LoadingButton/LoadingButton"; import { MsgOnboardParticipantEncodeObject, typeUrlMsgOnboardParticipant, } from "@cerc-io/registry-sdk"; import { useWalletConnectContext } from "../context/WalletConnectContext"; const SignWithCosmos = () => { const { session, signClient } = useWalletConnectContext(); const { cosmosAddress, ethSignature } = useParams(); const [isLoading, setIsLoading] = useState(false); const navigate = useNavigate(); const location = useLocation(); const innerMessage = location.state; const ethAddress = innerMessage.address; const onboardParticipantMsg: MsgOnboardParticipantEncodeObject = useMemo(() => { return { typeUrl: typeUrlMsgOnboardParticipant, value: { participant: cosmosAddress, ethPayload: innerMessage, ethSignature, }, }; }, [cosmosAddress, innerMessage, ethSignature]); const sendTransaction = async ( transactionMessage: MsgOnboardParticipantEncodeObject ) => { if (!ethAddress) { enqueueSnackbar("Set nitro address"); return; } try { setIsLoading(true); const params = { transactionMessage, signer: cosmosAddress }; const responseFromWallet = await signClient!.request<{ code: number; }>({ topic: session!.topic, chainId: `cosmos:${process.env.REACT_APP_LACONICD_CHAIN_ID}`, request: { method: "cosmos_sendTransaction", params, }, }); if (responseFromWallet.code !== 0) { enqueueSnackbar("Transaction not sent", { variant: "error" }); } else { navigate(`/onboarding-success/${cosmosAddress}`); } } catch (error) { console.error(error); enqueueSnackbar("Error in sending transaction", { variant: "error" }); } finally { setIsLoading(false); } }; return ( Send transaction to chain Cosmos account: {cosmosAddress} Onboarding message:
          {JSON.stringify(onboardParticipantMsg, null, 2)}{" "}
        
{ await sendTransaction(onboardParticipantMsg); }} loading={isLoading} > Send transaction
); }; export default SignWithCosmos;