import React, {useState} from 'react'; import logo from './logo.svg'; import './App.css'; import Web3 from 'web3'; const web3 = new Web3(Web3.givenProvider); import Airdrop from "./Airdrop.json"; const airdropAddress = "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512"; const airdropContract = new web3.eth.Contract(Airdrop.abi as any, airdropAddress); interface AddressesProps { addressList: string[]; setAddressListFn: any; } function Addresses(props: AddressesProps) { const [inputState, setInputState] = useState(""); const [errorText, setErrorText] = useState(""); const [numTokens, setNumTokens] = useState(0); const { setAddressListFn, addressList } = props; const save = () => { if (!web3.utils.isAddress(inputState)) { setErrorText("Invalid ETH address"); return; } setErrorText(""); const checksumAddr = web3.utils.toChecksumAddress(inputState); if (addressList.includes(checksumAddr)) { //Do nothing } else { setAddressListFn([...addressList, checksumAddr]); } setInputState(""); } var num; if (isNaN(numTokens) || numTokens < 0) { num = 0; } else { num = numTokens; } return (
setInputState(evt.target.value) } >
{errorText}
Number of tokens: setNumTokens(parseInt(evt.target.value)) }>
); } interface AddressListProps { addressList: string[]; }; function AddressList({addressList}: AddressListProps) { const addresses = addressList.length == 0 ?

No addresses specified yet

: addressList.map((addr: string) =>
{addr}
); return (

Addresses to airdrop to:

{ addresses }
) } function App() { const [addressList, setAddressList] = useState([]); async function performAirdrop() { console.log("Performing airdrop"); } return (

Airdrop App

Add an address to airdrop to:

); } export default App;