import { Button, Card } from 'antd'; import { AElfReactProvider } from '@aelf-react/core'; import DynamicForm from './DynamicForm'; import { useState, useCallback } from 'react'; import { getContractInstance } from 'utils/contractInstance'; import { useAElfReact } from '@aelf-react/core'; import { useEffectOnce } from 'react-use'; import './index.css'; export interface IMethod { name: string; input: string[]; fn: any; key: string | number; activeKey: string | number; } export const tokenContractAddress = 'JRmBduh4nXWi1aXgdUsj5gJrzeZb2LxmrAbf7W99faZSvoAaE'; function ContractDemo() { const { account, activate, deactivate } = useAElfReact(); const [methods, setMethods] = useState([]); const getInfo = async () => { const tokenContract = await getContractInstance( tokenContractAddress, ); const tokenMethods = adjustMethods(tokenContract); setMethods(tokenMethods); }; const changeWallet = useCallback(async () => { await deactivate(); activate(); }, [activate, deactivate]); const adjustMethods = (methodsObj: any) => { const res = []; const keysArr = Object.keys(methodsObj); for (let i = 0; i < keysArr.length; i++) { if (!methodsObj[keysArr[i]].inputTypeInfo) { continue; } const temp: any = {}; temp.name = keysArr[i]; temp.input = Object.keys(methodsObj[keysArr[i]].inputTypeInfo.fields); temp.fn = methodsObj[keysArr[i]]; res.push(temp); } return res; }; useEffectOnce(() => { activate(); getInfo(); }); return ( Contract Read & Write} className="ContractDemo container mx-auto px-4" > Wallet}>
ACCOUNT: {account}
Methods}>
); } const HomeProvider = () => { return ( ); }; export default HomeProvider;