@@ -1,25 +1,17 @@
1import React, { useCallback, useState } from 'react';
1import React, { useCallback, useState } from 'react';
2import cn from 'classnames';
2import cn from 'classnames';
3−import Web3 from 'web3';
4import { Grid } from 'indigo-react';
3import { Grid } from 'indigo-react';
5import { Box, Button, Icon, LoadingSpinner, Text } from '@tlon/indigo-react';
4import { Box, Button, Icon, LoadingSpinner, Text } from '@tlon/indigo-react';
6import { useHistory } from 'store/history';
5import { useHistory } from 'store/history';
7−import { Just, Nothing } from 'folktale/maybe';
8−import { FORM_ERROR } from 'final-form';
10−import { useWallet } from 'store/wallet';
11−import { usePointCursor } from 'store/pointCursor';
13import { WALLET_TYPES } from 'lib/constants';
7import { WALLET_TYPES } from 'lib/constants';
14−import { MetamaskWallet } from 'lib/metamask';
15−import { getAuthToken } from 'lib/authToken';
16import { useWalletConnect } from 'lib/useWalletConnect';
8import { useWalletConnect } from 'lib/useWalletConnect';
17−import useLoginView from 'lib/useLoginView';
19import Modal from 'components/L2/Modal';
10import Modal from 'components/L2/Modal';
20import HeaderButton from 'components/L2/Headers/HeaderButton';
11import HeaderButton from 'components/L2/Headers/HeaderButton';
21import './LoginSelector.scss';
12import './LoginSelector.scss';
22import { NAMES } from './Other';
13import { NAMES } from './Other';
14+import useLoginView from 'lib/useLoginView';
24interface LoginSelectorProps {
16interface LoginSelectorProps {
25 className: string;
17 className: string;
@@ -51,77 +43,30 @@ export default function LoginSelector({
51 const [showModal, setShowModal] = useState(false);
43 const [showModal, setShowModal] = useState(false);
52 const [metamaskSelected, setMetamaskSelected] = useState(false);
44 const [metamaskSelected, setMetamaskSelected] = useState(false);
59− }: any = useWallet();
61 const { connect } = useWalletConnect();
46 const { connect } = useWalletConnect();
63− const { setPointCursor }: any = usePointCursor();
65 const goToActivate = useCallback(() => push(names.ACTIVATE), [
48 const goToActivate = useCallback(() => push(names.ACTIVATE), [
67 names.ACTIVATE,
50 names.ACTIVATE,
70− const connectMetamask = useCallback(async () => {
72− setMetamaskSelected(true);
74− setWalletType(WALLET_TYPES.METAMASK);
75− setPointCursor(Nothing());
77− const accounts = await (window as any).ethereum.send(
78− 'eth_requestAccounts'
80− const wallet = new MetamaskWallet(accounts.result[0]);
82− const web3 = new Web3((window as any).ethereum);
83− const authToken = await getAuthToken({
84− address: wallet.address,
85− walletType: WALLET_TYPES.METAMASK,
89− setAuthToken(Just(authToken));
90− setWallet(Just(wallet));
91− setWalletType(WALLET_TYPES.METAMASK);
94− setMetamaskSelected(false);
96− return { [FORM_ERROR]: (e as any).message };
104− setMetamaskSelected,
108− const selectOption = (value: string) => () => {
53+ const selectOption = (value: string) => async () => {
109− if (value === NAMES.METAMASK) {
112− if (value === NAMES.WALLET_CONNECT) {
54+ if (value === NAMES.WALLET_CONNECT) {
113− connect();
55+ connect();
115− setCurrentTab(value);
57+ setCurrentTab(value);
119 const loader = <LoadingSpinner background="#bce2ff" foreground="#219DFF" />;
60 const loader = <LoadingSpinner background="#bce2ff" foreground="#219DFF" />;
62+ const availableOptions = options.filter(
63+ ({ value }) => value !== NAMES.METAMASK || !!(window as any).ethereum
121 if (!currentTab) {
66 if (!currentTab) {
123 <Grid className={className}>
68 <Grid className={className}>
124− {options.map((option, i) => (
69+ {availableOptions.map((option, i) => (
125 <React.Fragment key={option.value}>
70 <React.Fragment key={option.value}>
126 <Grid.Item
71 <Grid.Item