2022-06-17 10:48:15 +10:00
|
|
|
import { Button } from "@material-ui/core";
|
|
|
|
|
import React from "react";
|
|
|
|
|
import { ethers } from "ethers";
|
|
|
|
|
import { Web3Provider } from "@ethersproject/providers/src.ts/web3-provider";
|
|
|
|
|
|
|
|
|
|
declare let window: any;
|
|
|
|
|
|
|
|
|
|
interface Props {
|
|
|
|
|
setAddress: (address: string) => void;
|
|
|
|
|
setProvider: (provider: Web3Provider) => void;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default function ConnectWallet({ setAddress, setProvider }: Props) {
|
2022-08-20 18:49:25 +10:00
|
|
|
const connectWallet = async () => {
|
2022-06-17 10:48:15 +10:00
|
|
|
try {
|
2022-08-20 18:49:25 +10:00
|
|
|
const provider = new ethers.providers.Web3Provider(window.ethereum);
|
|
|
|
|
const accounts = await provider.send("eth_requestAccounts", []);
|
|
|
|
|
setAddress(accounts[0]);
|
|
|
|
|
setProvider(provider);
|
2022-06-17 10:48:15 +10:00
|
|
|
} catch (e) {
|
2022-08-20 18:49:25 +10:00
|
|
|
console.error("No web3 provider available", e);
|
2022-06-17 10:48:15 +10:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<Button variant="contained" color="primary" onClick={connectWallet}>
|
|
|
|
|
Connect Wallet
|
|
|
|
|
</Button>
|
|
|
|
|
);
|
|
|
|
|
}
|