Skip to content
This repository was archived by the owner on May 19, 2023. It is now read-only.

Commit 97c49d9

Browse files
committed
feat: adds popover on right network connected
1 parent 7496007 commit 97c49d9

File tree

3 files changed

+51
-11
lines changed

3 files changed

+51
-11
lines changed

src/components/molecules/WrongNetworkModal.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ const WrongNetworkModal: FC<WrongNetworkModalProps> = ({
5858
<Grid item sm={9}>
5959
<Typography gutterBottom color="secondary">Waiting for the right network...</Typography>
6060
<Typography color="primary" component="div">
61-
<Box fontWeight="fontWeightMedium">Switch networks on your provider</Box>
61+
<Box fontWeight="fontWeightMedium">Switch networks on your wallet</Box>
6262
</Typography>
6363
</Grid>
6464
</Grid>

src/components/organisms/Account.tsx

Lines changed: 50 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React, { FC, useState, useEffect } from 'react'
22
import Web3 from 'web3'
33
import { makeStyles, Theme } from '@material-ui/core/styles'
4+
import Popover from '@material-ui/core/Popover'
45
import ProviderInfo, { EProvider } from '../../models/ProviderInfo'
56
import { shortenString } from '../../utils'
67
import { Button, NetworkIndicator, Typography } from '../atoms'
@@ -37,6 +38,9 @@ const useStyles = makeStyles((theme: Theme) => ({
3738
networkIndicator: {
3839
marginRight: theme.spacing(1),
3940
},
41+
rightNetwork: {
42+
padding: theme.spacing(2),
43+
},
4044
}))
4145

4246
const Account: FC<AccountProps> = (props) => {
@@ -57,15 +61,28 @@ const Account: FC<AccountProps> = (props) => {
5761
const [accountModalOpen, setAccountModalOpen] = useState(false)
5862
const handleAccountModalClose = (): void => setAccountModalOpen(false)
5963
const handleAccountModalOpen = (): void => setAccountModalOpen(true)
60-
const [wrongNetworkModalOpen, setWrongNetworkModalOpen] = useState(false)
61-
const openWrongNetworkModal = (): void => setWrongNetworkModalOpen(true)
62-
const closeWrongNetworkModal = (): void => setWrongNetworkModalOpen(false)
64+
const [wrongNetModalOpen, setWrongNetModalOpen] = useState(false)
65+
const openWrongNetModal = (): void => setWrongNetModalOpen(true)
66+
const closeWrongNetModal = (): void => setWrongNetModalOpen(false)
6367
const connectionStatus: ConnectionStatus = getConnectionStatus(web3, requiredNetworkId, networkInfo?.networkId, account)
6468

69+
// TODO: extract popover functionallity into new component
70+
const [anchorEl, setAnchorEl] = React.useState<HTMLButtonElement | null>(null)
71+
72+
const popoverOpen = Boolean(anchorEl)
73+
const id = popoverOpen ? 'right-net-popover' : undefined
74+
75+
const handlePopoverClose = () => {
76+
setAnchorEl(null)
77+
}
78+
6579
useEffect(() => {
6680
if (connectionStatus === ConnectionStatus.WrongNetwork) {
67-
openWrongNetworkModal()
68-
} else if (connectionStatus === ConnectionStatus.LoggedIn) closeWrongNetworkModal()
81+
openWrongNetModal()
82+
} else {
83+
closeWrongNetModal()
84+
handlePopoverClose()
85+
}
6986
}, [connectionStatus])
7087

7188
const accountText = (): string => {
@@ -80,10 +97,13 @@ const Account: FC<AccountProps> = (props) => {
8097
return 'Unlock your wallet'
8198
}
8299

83-
const onAccountClicked = (): void => {
84-
if (connectionStatus === ConnectionStatus.WrongNetwork) return openWrongNetworkModal()
100+
const onAccountClicked = (event: React.MouseEvent<HTMLButtonElement>): void | null => {
101+
if (connectionStatus === ConnectionStatus.WrongNetwork) return openWrongNetModal()
85102

86103
if (connectionStatus === ConnectionStatus.LoggedOut) return handleAccountModalOpen()
104+
105+
if (connectionStatus === ConnectionStatus.LoggedIn) return setAnchorEl(event.currentTarget)
106+
return null
87107
}
88108

89109
return (
@@ -105,6 +125,27 @@ const Account: FC<AccountProps> = (props) => {
105125
{accountText()}
106126
</Typography>
107127
</Button>
128+
{/* TODO: extract molecule */}
129+
<Popover
130+
id={id}
131+
open={popoverOpen}
132+
anchorEl={anchorEl}
133+
onClose={handlePopoverClose}
134+
anchorOrigin={{
135+
vertical: 'bottom',
136+
horizontal: 'center',
137+
}}
138+
transformOrigin={{
139+
vertical: 'top',
140+
horizontal: 'center',
141+
}}
142+
>
143+
<Typography className={classes.rightNetwork}>
144+
You are successfully connected to
145+
{networkInfo?.name}
146+
.
147+
</Typography>
148+
</Popover>
108149
<AccountModal
109150
open={accountModalOpen}
110151
onClose={handleAccountModalClose}
@@ -114,8 +155,8 @@ const Account: FC<AccountProps> = (props) => {
114155
availableProviders={availableProviders}
115156
/>
116157
<WrongNetworkModal
117-
open={wrongNetworkModalOpen}
118-
onClose={closeWrongNetworkModal}
158+
open={wrongNetModalOpen}
159+
onClose={closeWrongNetModal}
119160
requiredNetworkName={requiredNetworkName}
120161
currentNetworkName={networkInfo?.name}
121162
/>

src/services/Web3Service.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,6 @@ export const getAvailableProviders = (): ProviderInfo[] | undefined => {
127127
return result
128128
}
129129

130-
// TODO: consider moving this to the web3provider state
131130
export const getConnectionStatus = (
132131
web3?: Web3,
133132
requiredNetworkId?: number,

0 commit comments

Comments
 (0)