Files
hoelee be54471760
CI / Foundry project (push) Has been cancelled
Added front-end Javascript
2024-08-17 12:19:13 +08:00

149 lines
3.9 KiB
JavaScript

const { ethers } = require("ethers");
var contractAddress = "0x5F109D5Cea7BD7345EFcC1b7b7Bb7FB2693e5Fb2";
var abi = [
{
inputs: [
{
internalType: "string",
name: "_name",
type: "string",
},
{
internalType: "uint256",
name: "_favoriteNumber",
type: "uint256",
},
],
name: "addPerson",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
name: "nameToFavoriteNumber",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
name: "people",
outputs: [
{
internalType: "uint256",
name: "favoriteNumber",
type: "uint256",
},
{
internalType: "string",
name: "name",
type: "string",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "retrieve",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "uint256",
name: "_favoriteNumber",
type: "uint256",
},
],
name: "store",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
];
async function connect() {
if (typeof window.ethereum !== "undefined") {
try {
await ethereum.request({ method: "eth_requestAccounts" });
} catch (error) {
console.log(error);
}
document.getElementById("connectButton").innerHTML = "Connected";
const accounts = await ethereum.request({ method: "eth_accounts" });
console.log(accounts);
} else {
document.getElementById("connectButton").innerHTML = "Please install MetaMask";
}
}
async function storeNumber() {
if (typeof window.ethereum !== "undefined") {
const provider = new ethers.providers.Web3Provider(window.ethereum);
const signer = provider.getSigner();
const contract = new ethers.Contract(contractAddress, abi, signer);
let inputNumber = document.getElementById("inputNumber").value;
let divNumber = document.getElementById("divNumber");
try {
await contract.store(inputNumber);
} catch (error) {
console.log(error);
}
} else {
document.getElementById("executeButton").innerHTML = "Please install MetaMask";
}
}
async function retrieve() {
if (typeof window.ethereum !== "undefined") {
const provider = new ethers.providers.Web3Provider(window.ethereum);
const signer = provider.getSigner();
const contract = new ethers.Contract(contractAddress, abi, signer);
let divNumber = document.getElementById("divNumber");
try {
let previousNumber = await contract.retrieve();
divNumber.innerHTML = previousNumber;
alert(previousNumber);
} catch (error) {
console.log(error);
}
} else {
document.getElementById("executeButton").innerHTML = "Please install MetaMask";
}
}
module.exports = {
connect,
storeNumber,
retrieve,
};