"use client" import { useEffect, useState } from "react" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { fetchContractConfig } from "@/lib/config" import { getFLBTokenContract, getHealthRegistryContract, getDonationRouterContract } from "@/lib/contract-utils" type ContractStatus = { name: string address: string connected: boolean error?: string } export function ContractStatus() { const [contracts, setContracts] = useState([ { name: "FLB Token", address: "", connected: false }, { name: "Health Registry", address: "", connected: false }, { name: "Donation Router", address: "", connected: false }, ]) const [isLoading, setIsLoading] = useState(true) const [chainId, setChainId] = useState("56") useEffect(() => { const checkContracts = async () => { try { // Fetch contract addresses from server const config = await fetchContractConfig() setChainId(config.chainId) // Check FLB Token const flbContract = await getFLBTokenContract() let flbConnected = false let flbError = "" try { if (flbContract) { const name = await flbContract.name() flbConnected = !!name } } catch (error: any) { flbError = error.message } // Check Health Registry const registryContract = await getHealthRegistryContract() let registryConnected = false let registryError = "" try { if (registryContract) { // Just try to call a view function to see if it's connected await registryContract.isVerifiedHealthActor("0x0000000000000000000000000000000000000000") registryConnected = true } } catch (error: any) { registryError = error.message } // Check Donation Router const routerContract = await getDonationRouterContract() let routerConnected = false let routerError = "" try { if (routerContract) { // Just try to access a public variable await routerContract.flbToken() routerConnected = true } } catch (error: any) { routerError = error.message } setContracts([ { name: "FLB Token", address: config.tokenContract, connected: flbConnected, error: flbError, }, { name: "Health Registry", address: config.healthRegistry, connected: registryConnected, error: registryError, }, { name: "Donation Router", address: config.donationRouter, connected: routerConnected, error: routerError, }, ]) } catch (error) { console.error("Error checking contracts:", error) } finally { setIsLoading(false) } } checkContracts() }, []) return ( Contract Status {isLoading ? (

Checking contract connectivity...

) : (
{contracts.map((contract) => (
{contract.name} {contract.connected ? "Connected" : "Not Connected"}

{contract.address}

{!contract.connected && contract.error && (

{contract.error.substring(0, 100)}...

)}
))}

Chain ID: {chainId} (BNB Smart Chain)

)}
) }