From a44750befb348b326a411287cb34c879d9c185db Mon Sep 17 00:00:00 2001 From: adrien-vieilleribiere Date: Fri, 5 Apr 2024 10:17:51 +0200 Subject: [PATCH] Add front - wagmi (#10) * frontend * wagmi viem for addSuperAdmin --------- Co-authored-by: root --- frontend/app/admin/page.js | 117 +++++++-- frontend/app/contracts/Admins.json | 393 +++++++++++++++++++++++++++++ frontend/app/globals.css | 6 +- frontend/components/Footer.js | 3 +- frontend/components/Header.js | 2 +- frontend/constants/index.js | 235 +++++++++++++++++ frontend/note.txt | 1 - 7 files changed, 733 insertions(+), 24 deletions(-) create mode 100644 frontend/app/contracts/Admins.json create mode 100644 frontend/constants/index.js delete mode 100644 frontend/note.txt diff --git a/frontend/app/admin/page.js b/frontend/app/admin/page.js index 5ce8a58..783d1c1 100644 --- a/frontend/app/admin/page.js +++ b/frontend/app/admin/page.js @@ -14,26 +14,109 @@ import { parseAbiItem } from "viem"; import { usePublicClient } from "wagmi"; import { hardhat } from "viem/chains"; +// Contract's information +import { AdminsABI, contractAddressAdmins } from "@/constants/index"; + const admin = () => { + // Admin Information + + const [superAdmin, setSuperAdmin] = useState(""); + + // Wagmi function / client creation for event listenning + const client = usePublicClient(); + + // Event information + const [grantedEvents, setGrantedEvents] = useState([]); + + // Event handling function + const getGrantedEvents = async () => { + try { + // get.Logs from viem + const logs = await client.getLogs({ + address: contractAddressAdmins, + event: parseAbiItem( + "event Granted (address from, address to, Role role,address contractt);" + ), + fromBlock: 0n, + toBlock: "latest", + }); + + setGrantedEvents(logs.map((log) => log.args.from)); + toast.success("Admin Created"); + } catch (err) { + toast.error(err.message); + } + }; + + const createSuperAdmin = async () => { + try { + const { request } = await prepareWriteContract({ + address: contractAddressAdmins, + abi: AdminsABI, + functionName: "addSuperAdmin", + args: [_addr], + }); + + const { hash } = await writeContract(request); + const data = await waitForTransaction({ + hash: hash, + }); + + getGrantedEvents(); + } catch (err) { + toast.error(err.message); + } + }; + return ( -
-
-