// Pages const pages = { home: "first-page", about: "about-us", contact: "contact", addCompany: "add-company", verifyCompany: "verify-company", addPerson: "add-person", }; console.log("state", state); //Settings for contract and chain const desiredChainId = 80001; const contractAddress = "0xa3ebef8f2030f5F4eaee004f205b5072a1ddC65c"; //"0xdabd5E6060C1f951c7218D81B76e372d0aA8204f"; const explorerApiKey = "mLvMXKxgNYvVC1gMdStkcBn3xm3fCLZ7"; const contractABI = ""; const blockchainInfo = { desiredChainId, contractAddress, explorerApiKey, contractABI, }; State.init({ blockchainInfo, currentPage: pages["home"], }); const ContentWrapper = styled.div` padding: 0px; text-align: center; `; const BodyContent = styled.div` padding: 32px; text-align: center; `; function updatePage(currentPage) { State.update({ currentPage: pages[currentPage], }); } function checkNetwork() { // Connect to the the desired chain provider if ( state.chainId === undefined && ethers !== undefined && Ethers.send("eth_requestAccounts", [])[0] ) { Ethers.provider() .getNetwork() .then((chainIdData) => { if (chainIdData?.chainId) { State.update({ chainId: chainIdData.chainId }); } }); } if (state.chainId !== undefined && state.chainId !== desiredChainId) { return ( <Widget src="s-farshad-k.near/widget/WarningBoxComponent" props={{ children: ( <span> <b>Warning:</b> Switch to the proper Mainnet </span> ), }} /> ); } return true; } async function getInterface() { let iface; if (!contractABI.length) { const loadedABI = fetch( `https://raw.githubusercontent.com/inspiring71/ETHWinners/main/Reputation/artifacts/Reputation.json` ); if (!loadedABI.ok) { return "Loading"; } const info = JSON.parse(loadedABI.body); console.log(info["abi"]); State.update({ blockchainInfo: { ...state.blockchainInfo, contractABI: JSON.stringify(info["abi"]), }, }); iface = new ethers.utils.Interface(JSON.stringify(info["abi"])); } else { iface = new ethers.utils.Interface(JSON.parse(contractABI)); } return iface; } const haveProperNetwork = checkNetwork(); const addCompany = (domain, interface) => { if (!interface) { console.log("Error: You do not have contract interfaces!"); return false; } const encodedData = iface.encodeFunctionData("domain", [domain]); if (!domain) { <Widget src="s-farshad-k.near/widget/WarningBoxComponent" props={{ children: "Amount is missing" }} />; } const contract = new ethers.Contract( contractAddress, contractABI, Ethers.provider() // think about Ethers.provider().getSigner() ); const result = contract.addCompany(encodedData); console.log(result); return result; }; if (haveProperNetwork === true) { const interface = getInterface(); return ( <ContentWrapper> <Widget src="s-farshad-k.near/widget/header" props={{ updatePage, blockchainInfo: state.blockchainInfo, }} /> <BodyContent> <Widget src={`s-farshad-k.near/widget/${state.currentPage}`} props={{ updatePage, blockchainInfo: state.blockchainInfo, interface: interface, }} /> </BodyContent> </ContentWrapper> ); } else { return haveProperNetwork; }