28 lines
857 B
TypeScript
28 lines
857 B
TypeScript
|
|
'use client'
|
||
|
|
|
||
|
|
import { useEffect } from 'react'
|
||
|
|
import { useQuery } from '@tanstack/react-query'
|
||
|
|
import { fetchContracts } from '@/lib/api/contracts'
|
||
|
|
import { setContractAddressDynamic } from '@/lib/contracts/registry'
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Fetches contract addresses from the backend and populates the dynamic registry.
|
||
|
|
* Call once near the app root (e.g., inside Providers or AppContext).
|
||
|
|
* All existing getContractAddress() callers automatically see updated values.
|
||
|
|
*/
|
||
|
|
export function useContractRegistry() {
|
||
|
|
const { data } = useQuery({
|
||
|
|
queryKey: ['contract-registry'],
|
||
|
|
queryFn: fetchContracts,
|
||
|
|
staleTime: 5 * 60 * 1000,
|
||
|
|
gcTime: 30 * 60 * 1000,
|
||
|
|
})
|
||
|
|
|
||
|
|
useEffect(() => {
|
||
|
|
if (!data) return
|
||
|
|
for (const c of data) {
|
||
|
|
if (c.address) setContractAddressDynamic(c.name, c.chain_id, c.address)
|
||
|
|
}
|
||
|
|
}, [data])
|
||
|
|
}
|