@@ -1,5 +1,4 @@
1import React, { useCallback } from 'react';
1import React, { useCallback } from 'react';
2−import cn from 'classnames';
3import { Grid, Text, LinkButton, H5 } from 'indigo-react';
2import { Grid, Text, LinkButton, H5 } from 'indigo-react';
4import { Just } from 'folktale/maybe';
3import { Just } from 'folktale/maybe';
@@ -7,11 +6,13 @@ import { useWallet } from 'store/wallet';
8import { WALLET_TYPES } from 'lib/wallet';
7import { WALLET_TYPES } from 'lib/wallet';
9import { MetamaskWallet } from 'lib/metamask';
8import { MetamaskWallet } from 'lib/metamask';
9+import useLoginView from 'lib/useLoginView';
11import SubmitButton from 'form/SubmitButton';
11import SubmitButton from 'form/SubmitButton';
12import BridgeForm from 'form/BridgeForm';
12import BridgeForm from 'form/BridgeForm';
14export default function Metamask({ className, goHome }) {
14export default function Metamask({ className, goHome }) {
15+ useLoginView(WALLET_TYPES.METAMASK);
15 const { setWallet, setWalletType } = useWallet();
16 const { setWallet, setWalletType } = useWallet();
17 const onSubmit = useCallback(async () => {
18 const onSubmit = useCallback(async () => {
@@ -19,9 +20,32 @@ export default function Metamask({ className, goHome }) {
19 const wallet = new MetamaskWallet(accounts[0]);
20 const wallet = new MetamaskWallet(accounts[0]);
20 setWallet(Just(wallet));
21 setWallet(Just(wallet));
21 setWalletType(WALLET_TYPES.METAMASK);
22 setWalletType(WALLET_TYPES.METAMASK);
22− }, [setWallet]);
23+ }, [setWallet, setWalletType]);
24− const login = () => (
25+ return (
26+ <Grid className={className}>
27+ {(window.ethereum && Login({ onSubmit, goHome })) || Unsupported()}
32+function Unsupported() {
35+ <Grid.Item full as={H5}>
38+ <Grid.Item full as={Text} className="f6 mb3">
39+ Metamask is not installed on this browser. <br />
40+ <LinkButton href="https://metamask.io" as={LinkButton}>
47+function Login({ onSubmit, goHome }) {
26 <Grid.Item full as={H5}>
50 <Grid.Item full as={H5}>
27 Authenticate with Metamask
51 Authenticate with Metamask
@@ -41,25 +65,4 @@ export default function Metamask({ className, goHome }) {
41 </BridgeForm>
65 </BridgeForm>
45− <Grid className={cn('mt4', className)}>
46− {(window.ethereum && login()) || MetamaskUnsupported()}
51−function MetamaskUnsupported() {
54− <Grid.Item full as={H5}>
57− <Grid.Item full as={Text} className="f6 mb3">
58− Metamask is not installed on this browser.
59− <LinkButton href="https://metamask.io" as={LinkButton}>