init: 初始化 AssetX 项目仓库
包含 webapp(Next.js 用户端)、webapp-back(Go 后端)、 antdesign(管理后台)、landingpage(营销落地页)、 数据库 SQL 和配置文件。
This commit is contained in:
27
webapp/hooks/useContractRegistry.ts
Normal file
27
webapp/hooks/useContractRegistry.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
'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])
|
||||
}
|
||||
Reference in New Issue
Block a user