import React from 'react'
import ReactDOM from 'react-dom'
import { Mainnet, DAppProvider, useEthers, Config, Goerli } from '@usedapp/core'
import { getDefaultProvider } from 'ethers'
import { SiweProvider, useSiwe } from '@usedapp/siwe'
// Regular import crashes the app with "Buffer is not defined" error.
import WalletConnectProvider from '@walletconnect/web3-provider/dist/umd/index.min.js'
import { AccountIcon } from './components/AccountIcon'
const config: Config = {
readOnlyChainId: Mainnet.chainId,
readOnlyUrls: {
[Mainnet.chainId]: getDefaultProvider('mainnet'),
[Goerli.chainId]: getDefaultProvider('goerli'),
},
}
ReactDOM.render(
,
document.getElementById('root')
)
export function App() {
const { account, activate, error, activateBrowserWallet } = useEthers()
const { signIn, signOut, isLoggedIn, isLoading, cancelLoading, message, error: siweError } = useSiwe()
async function onConnect() {
try {
const provider = new WalletConnectProvider({
infuraId: 'd8df2cb7844e4a54ab0a782f608749dd',
})
await provider.enable()
await activate(provider)
} catch (error) {
console.error(error)
}
}
const ConnectButton = () => (
)
const WalletConnectConnect = () => (
{account && (
)}
{!account &&
}
)
const SiweComponent = () => {
if (isLoading) {
return (
<>
Loading...
>
)
}
return (
{siweError &&
Error: {siweError.message}
}
{isLoggedIn && (
<>
Logged in with {message.address}
Nonce: {message.nonce}
ChainId: {message.chainId}
>
)}
{!siweError && !isLoggedIn &&
Not logged in
}
)
}
return (
{error &&
{error.message}
}
{!error &&
}
{!account &&
}
{!error && account &&
}
)
}