Hey after implementing your code I got the following error on my console-
Uncaught (in promise) Error: Missing web3 instance, make sure to call Moralis.enableWeb3() or Moralis.authenticate()
at Function.value (MoralisWeb3.js:1869:1)
at Function.<anonymous> (MoralisWeb3.js:1679:1)
at tryCatch (runtime.js:63:1)
at Generator.invoke [as _invoke] (runtime.js:294:1)
at Generator.next (runtime.js:119:1)
at asyncGeneratorStep (asyncToGenerator.js:5:1)
at _next (asyncToGenerator.js:27:1)
at asyncToGenerator.js:34:1
at new Promise (<anonymous>)
at new Wrapper (export.js:18:1
This is how I implemented your code-
async function minContribution(){
const web3 = await Moralis.enableWeb3({ provider: "metamask" });
const sendOptions = {
contractAddress: "0x8d61466b42308fc259E875Fe71Fe173555F8731A",
functionName: "getminContribution",
abi: ABI
}
const transaction = await Moralis.executeFunction(sendOptions);
setMin(Moralis.Units.FromWei(transaction._hex));
}
async function pickWinner(){
const sendOptions = {
contractAddress: "0x8d61466b42308fc259E875Fe71Fe173555F8731A",
functionName: "pickWinner",
abi: ABI
}
const transaction = await Moralis.executeFunction(sendOptions);
setStatus(false);
}
async function showInfo(){
const web3 = await Moralis.enableWeb3({ provider: "metamask" });
const sendOptions = {
contractAddress: "0x8d61466b42308fc259E875Fe71Fe173555F8731A",
functionName: "getParticipants",
abi: ABI
}
const lists = {
contractAddress: "0x8d61466b42308fc259E875Fe71Fe173555F8731A",
functionName: "getBalance",
abi: ABI
}
const participants = await Moralis.executeFunction(sendOptions);
const balances=await Moralis.executeFunction(lists);
swal({
title: `Participants: ${Moralis.Units.FromWei(participants._hex, 0)}`,
text: `Balance: ${Moralis.Units.FromWei(balances._hex)}`,
icon: "info",
});
}
async function startLottery(){
// const web3 = await Moralis.enableWeb3({ provider: "metamask" });
const sendOptions = {
contractAddress: "0x8d61466b42308fc259E875Fe71Fe173555F8731A",
functionName: "startLottery",
abi: ABI
}
const transaction = await Moralis.executeFunction(sendOptions);
setStatus(true);
}
async function lotteryStatus(){
const web3 = await Moralis.enableWeb3({ provider: "metamask" });
const sendOptions = {
contractAddress: "0x8d61466b42308fc259E875Fe71Fe173555F8731A",
functionName: "isOpen",
abi: ABI
}
const transaction = await Moralis.executeFunction(sendOptions);
setStatus(transaction);
}
React.useEffect(() => {
if (isAuthenticated && isAuthenticated !==null) {
minContribution();
lotteryStatus();
}
}, [isAuthenticated])
return (
<>
<div className="card text-center bg2" >
<div className="card-body bg2" >
{/* {isAuthenticated? <button type="button" className="btn btn-outline-warning" onClick={Update}>Balance: {balances}</button> : null} */}
{isAuthenticated? <p className="lottery">Lottery : {status? "Running": "Closed"}</p> : <p className="lottery">Lottery</p>}
{isAuthenticated? <p className=" text-gradient">Account : {user.get("ethAddress")}</p> : <p className=" text-gradient">Account : Not Connected</p>}
{isAuthenticated? <p className=" text-gradient">{null}</p> : null}
{isAuthenticated? <p className="min">Minimum Contribution : {min} ETH</p> : null}
{isAuthenticated? <button className="button-custom" onClick={showInfo}>INFO</button> : null}
{!isAuthenticated? <button type="button" className="btn btn-outline-light button-85" onClick={login}>
Connect to metamask
</button> : null}
{isAuthenticated? <button type="button" className="button-33" onClick={enterLottery} >Enter Lottery</button> : null}
{(isAuthenticated && user.get('ethAddress')==="0x846A519f8c6ceF4db5ABa30Fc3c36BE38DA48F06".toLowerCase())? <button type="button" className="btn btn-outline-success" onClick={startLottery}>Start Lottery</button> : null}
{(isAuthenticated && user.get('ethAddress')==="0x846A519f8c6ceF4db5ABa30Fc3c36BE38DA48F06".toLowerCase())? <button type="button" className="btn btn-outline-primary" onClick={pickWinner}>Pick Winner</button> : null}
{isAuthenticated?<button type="button" className="button-78" onClick={exit}>Logout</button> : null}
</div>
<div className="card-footer text-gradient">Copyright @Abir Dutta</div>
</div>
</>
);
}
export default App;
Can you elaborate why I am getting the error