import React, { useEffect, useState} from 'react'
import { useMoralis } from 'react-moralis';
import "./RespModal.css"
import { useWeb3ExecuteFunction ,} from 'react-moralis';
import { Modal } from 'react-responsive-modal';
import ERC20TokenBalance from './ERC20TokenBalance';
import FeeAbi from "../../Contracts/StakingFee.json";
import SFV2 from "../../Contracts/SFV2.json";
import StakingContract from "../../Contracts/StakingContract.json";
const RespModal = () => {
const [open, setOpen] = useState(false);
const onOpenModal = () => setOpen(true);
const onCloseModal = () => setOpen(false);
const [disable, setDisable] = useState(true);
const [amount, setAmount] = useState(null)
const contractProcessor = useWeb3ExecuteFunction();
const {Moralis} = useMoralis();
async function enableStaking(val){
let options = {
contractAddress:"0xA8F7Fbd9602533CCc6D698db23485d026c40a3fF",
functionName:"newStaking",
abi:FeeAbi,
params:{
note: "Enabled Staking To Earn Passive Income"
},
msgValue: Moralis.Units.ETH(val)
}
await contractProcessor.fetch({
params: options,
onSuccess: () => {
alert("sucess");
setDisable(false); // HERE IS WHERE THE BUTTON GETS ENABLED
},
})
}
async function approve(){
const sendOptions = {
contractAddress: "0x9388c7484C95BF1FeF464684Ce291B0334Cc4a7c",
functionName: "approve",
abi: SFV2,
params: {
spender: "0xF0e6d6D8f55656b302969D192c5bD0eBC8A1b1E8",
amount: Moralis.Units.Token(amount)
},
};
const transaction = await Moralis.executeFunction(sendOptions)
const results = transaction.hash;
console.log(results)
}
async function deposit(){
const sendOptions = {
contractAddress: "0xF0e6d6D8f55656b302969D192c5bD0eBC8A1b1E8",
functionName: "deposit",
abi: StakingContract,
params: {
owner:"0xF0e6d6D8f55656b302969D192c5bD0eBC8A1b1E8",
amount: Moralis.Units.Token(amount)
},
};
const transaction = await Moralis.executeFunction(sendOptions)
console.log(transaction)
}
function handleAmount(val){
console.log(val.target.value)
setAmount(val.target.value)
}
return (
<div style={{ display: "flex" , width:"500px", alignItems:"center", justifyContent:"flex-start"}}>
<button className='btn3' onClick={() => enableStaking(0.01)}> EnableStaking </button>
<button className='btn3' disabled={disable} onClick={onOpenModal}> StakeSFV2 </button>
<Modal open={open} onClose={onCloseModal} center >
<div style={{display:"flex" , flexDirection:"column",alignItems:"center"}}>
<h2 style={{color:"white", marginLeft:"40px",marginRight:"40px",marginTop:"5px"}}>STAKE SHIBAFAMEV2</h2>
<input type="text" placeholder="0.00"
style={{width:"100%",marginTop:"15px"}}
onChange={handleAmount}
></input>
<ERC20TokenBalance/>
<button className='btn3' onClick={() => approve()}>Approve</button>
<button className='btn3' onClick={() => deposit()}>Supply</button>
</div>
</Modal>
</div>
)
}
export default RespModal
Button gets enabled after the onSuccess message pops up at aysnc function enableStaking.