"use client"; // @refresh reset import { useReducer } from "react"; import { ContractReadMethods } from "./ContractReadMethods"; import { ContractVariables } from "./ContractVariables"; import { ContractWriteMethods } from "./ContractWriteMethods"; import { Address, Balance } from "~~/components/scaffold-eth"; import { useDeployedContractInfo, useNetworkColor } from "~~/hooks/scaffold-eth"; import { useTargetNetwork } from "~~/hooks/scaffold-eth/useTargetNetwork"; import { ContractName } from "~~/utils/scaffold-eth/contract"; type ContractUIProps = { contractName: ContractName; className?: string; }; /** * UI component to interface with deployed contracts. **/ export const ContractUI = ({ contractName, className = "" }: ContractUIProps) => { const [refreshDisplayVariables, triggerRefreshDisplayVariables] = useReducer(value => !value, false); const { targetNetwork } = useTargetNetwork(); const { data: deployedContractData, isLoading: deployedContractLoading } = useDeployedContractInfo({ contractName }); const networkColor = useNetworkColor(); if (deployedContractLoading) { return (
); } if (!deployedContractData) { return (

{`No contract found by the name of "${contractName}" on chain "${targetNetwork.name}"!`}

); } return (
{contractName}
Balance:
{targetNetwork && (

Network:{" "} {targetNetwork.name}

)}

Read

Write

); };