fix: users can now upgrade to light node if they have enough funds (#458)
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { Box, createStyles, Grid, makeStyles, Typography } from '@material-ui/core'
|
||||
import { ReactElement } from 'react'
|
||||
import { ReactElement, useContext, useState } from 'react'
|
||||
import Check from 'remixicon-react/CheckLineIcon'
|
||||
import BankCard from 'remixicon-react/BankCard2LineIcon'
|
||||
import MoneyDollarCircle from 'remixicon-react/MoneyDollarCircleLineIcon'
|
||||
@@ -9,6 +9,13 @@ import ExpandableListItemActions from '../../components/ExpandableListItemAction
|
||||
import { HistoryHeader } from '../../components/HistoryHeader'
|
||||
import { SwarmButton } from '../../components/SwarmButton'
|
||||
import { ROUTES } from '../../routes'
|
||||
import { Context as BeeContext } from '../../providers/Bee'
|
||||
import { Context as TopUpContext } from '../../providers/TopUp'
|
||||
import { useIsBeeDesktop } from '../../hooks/apiHooks'
|
||||
import { BeeModes } from '@ethersphere/bee-js'
|
||||
import { restartBeeNode, upgradeToLightNode } from '../../utils/desktop'
|
||||
import { Loading } from '../../components/Loading'
|
||||
import { useSnackbar } from 'notistack'
|
||||
|
||||
const useStyles = makeStyles(() =>
|
||||
createStyles({
|
||||
@@ -24,10 +31,43 @@ const useStyles = makeStyles(() =>
|
||||
}),
|
||||
)
|
||||
|
||||
const MINIMUM_XDAI = '0.05'
|
||||
const MINIMUM_XBZZ = '0.1'
|
||||
|
||||
export default function Confirmation(): ReactElement {
|
||||
const navigate = useNavigate()
|
||||
|
||||
const styles = useStyles()
|
||||
const { isBeeDesktop } = useIsBeeDesktop()
|
||||
const { balance, nodeInfo } = useContext(BeeContext)
|
||||
const { providerUrl } = useContext(TopUpContext)
|
||||
const [loading, setLoading] = useState(false)
|
||||
const { enqueueSnackbar } = useSnackbar()
|
||||
|
||||
const canUpgradeToLightNode =
|
||||
isBeeDesktop &&
|
||||
nodeInfo?.beeMode === BeeModes.ULTRA_LIGHT &&
|
||||
balance?.dai.toDecimal.gte(MINIMUM_XDAI) &&
|
||||
balance?.bzz.toDecimal.gte(MINIMUM_XBZZ)
|
||||
|
||||
async function restart() {
|
||||
if (!providerUrl) {
|
||||
return
|
||||
}
|
||||
setLoading(true)
|
||||
try {
|
||||
await upgradeToLightNode(providerUrl)
|
||||
await restartBeeNode()
|
||||
enqueueSnackbar('Upgraded to light node', { variant: 'success' })
|
||||
navigate(ROUTES.RESTART_LIGHT)
|
||||
} catch (error) {
|
||||
enqueueSnackbar(`Failed to upgrade: ${error}`, { variant: 'error' })
|
||||
}
|
||||
setLoading(false)
|
||||
}
|
||||
|
||||
if (!balance) {
|
||||
return <Loading />
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
@@ -58,6 +98,22 @@ export default function Confirmation(): ReactElement {
|
||||
Get started with bank card
|
||||
</SwarmButton>
|
||||
</ExpandableListItemActions>
|
||||
{canUpgradeToLightNode && (
|
||||
<>
|
||||
<Box mt={8} mb={2}>
|
||||
<Typography align="center">
|
||||
It seems that you have enough balance to upgrade your bee node to light node. By upgrading you will gain
|
||||
access to file upload and faster downloads.
|
||||
</Typography>
|
||||
</Box>
|
||||
<ExpandableListItemActions>
|
||||
<SwarmButton iconType={Check} onClick={restart} disabled={loading} loading={loading}>
|
||||
Upgrade now
|
||||
</SwarmButton>
|
||||
<div />
|
||||
</ExpandableListItemActions>
|
||||
</>
|
||||
)}
|
||||
</Grid>
|
||||
</>
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user