"use client"; import { ETHToPrice } from "./EthToPrice"; import { Address } from "@scaffold-ui/components"; import { useWatchBalance } from "@scaffold-ui/hooks"; import humanizeDuration from "humanize-duration"; import { formatEther, parseEther } from "viem"; import { useAccount } from "wagmi"; import { useDeployedContractInfo, useScaffoldReadContract, useScaffoldWriteContract } from "~~/hooks/scaffold-eth"; import { useTargetNetwork } from "~~/hooks/scaffold-eth/useTargetNetwork"; export const ContributeContractInteraction = ({ address }: { address?: string }) => { const { address: connectedAddress } = useAccount(); const { data: crowdFundContract } = useDeployedContractInfo({ contractName: "CrowdFund" }); const { data: fundingRecipientContract } = useDeployedContractInfo({ contractName: "FundingRecipient" }); const { data: crowdFundContractBalance } = useWatchBalance({ address: crowdFundContract?.address }); const { data: fundingRecipientBalance } = useWatchBalance({ address: fundingRecipientContract?.address }); const { targetNetwork } = useTargetNetwork(); const { data: threshold } = useScaffoldReadContract({ contractName: "CrowdFund", functionName: "threshold", watch: true, }); const { data: timeLeft } = useScaffoldReadContract({ contractName: "CrowdFund", functionName: "timeLeft", watch: true, }); const { data: myContribution } = useScaffoldReadContract({ contractName: "CrowdFund", functionName: "balances", args: [connectedAddress], watch: true, }); const { data: isFundingCompleted } = useScaffoldReadContract({ contractName: "FundingRecipient", functionName: "completed", watch: true, }); const { writeContractAsync } = useScaffoldWriteContract({ contractName: "CrowdFund" }); return (
🎉 Crowdfunding contract triggered FundingRecipient 🎉
received
CrowdFund Contract
Time Left
{timeLeft ? `${humanizeDuration(Number(timeLeft) * 1000)}` : "DONE"}
You Contributed
{myContribution ? formatEther(myContribution) : 0} {targetNetwork.nativeCurrency.symbol}Total Contributed