import { useContracts } from "../../useContracts/useContracts"; import { useEffect, useState } from "react"; import { useWeb3Provider } from "../../useWeb3Provider/useWeb3Provider"; import { doTransaction } from "../../../utils/transactions/transactions"; import { useRecoilState } from "recoil"; import { assetContextState } from "../../../state"; /** * logic relating to utilizing the depositHelper in other hooks (open/deposit/withdraw) */ export const useDepositHelper = () => { const [isDepositHelperUsed, setIsDepositHelperUsed] = useRecoilState(assetContextState); const [ depositHelperIsApprovedForRelics, setDepositHelperIsApprovedForRelics, ] = useState(false); const { account } = useWeb3Provider(); const { depositHelper, reliquary } = useContracts(); const approveDepositHelperForAllRelics = async () => { await doTransaction(() => reliquary.setApprovalForAll(depositHelper.address, true) ); setDepositHelperIsApprovedForRelics(true); }; const fetchDepositHelperIsApprovedForRelics = async () => { const isApproved = await reliquary.isApprovedForAll( account!, depositHelper.address ); setDepositHelperIsApprovedForRelics(isApproved); }; useEffect(() => { fetchDepositHelperIsApprovedForRelics(); }, []); return { approveDepositHelperForAllRelics, depositHelperIsApprovedForRelics, fetchDepositHelperIsApprovedForRelics, isDepositHelperUsed, setIsDepositHelperUsed, }; };