diff --git a/src/components/UnstakeRequirementBoundary/TimeRangeBoundary.tsx b/src/components/UnstakeRequirementBoundary/TimeRangeBoundary.tsx index 46b1a3f..1230c60 100644 --- a/src/components/UnstakeRequirementBoundary/TimeRangeBoundary.tsx +++ b/src/components/UnstakeRequirementBoundary/TimeRangeBoundary.tsx @@ -1,11 +1,9 @@ import { ButtonProps } from '@chakra-ui/react' import { t } from '@lingui/macro' -import { PropsWithChildren, memo, useEffect, useMemo, useState } from 'react' -import { useBlockNumber, useReadContract } from 'wagmi' -import { StakeManagerABI } from '../../abis/stakeManager' +import { PropsWithChildren, memo } from 'react' import { usePoolInfo } from '../../hooks/usePoolInfo' +import { usePoolState } from '../../hooks/usePoolState' import { stakeModal } from '../../modals/StakeModal' -import { usePoolStore } from '../../store/poolStore' import { MaskStakingButton } from '../MaskStakingButton' interface BoundaryProps extends PropsWithChildren { @@ -14,44 +12,17 @@ interface BoundaryProps extends PropsWithChildren { export const TimeRangeBoundary = memo(function TimeRangeBoundary({ children }) { const { data: poolInfo, isLoading: loadingPoolInfo } = usePoolInfo() - const { chainId, poolId, stakeManagerAddress } = usePoolStore() - const { data, isLoading: loadingPools } = useReadContract({ - chainId, - abi: StakeManagerABI, - address: stakeManagerAddress, - functionName: 'pools', - args: poolId ? [BigInt(poolId)] : undefined, - }) - const [watch, setWatch] = useState({ pollingInterval: 60_000 }) - const { data: blockNumber } = useBlockNumber({ watch }) + const { isStarted, isEnded, isLoadingPools } = usePoolState(poolInfo) - const hasStarted = useMemo(() => { - if (!data || !poolInfo || !blockNumber) return false - if (poolInfo.start_time * 1000 > Date.now()) return false - const [startBlock] = data - return startBlock < blockNumber - }, [data, poolInfo, blockNumber]) - - const hasEnded = useMemo(() => { - if (!data || !poolInfo || !blockNumber) return false - if (poolInfo.end_time * 1000 < Date.now()) return true - const [, endBlock] = data - return endBlock < blockNumber - }, [data, poolInfo, blockNumber]) - - useEffect(() => { - setWatch(!hasEnded) - }, [hasEnded]) - - if (loadingPoolInfo || loadingPools) { + if (loadingPoolInfo || isLoadingPools) { return } - if (!hasStarted) { + if (!isStarted) { return {t`Stake Mask`} } - if (!hasEnded) { + if (!isEnded) { return stakeModal.show()}>{t`Stake Mask`} } diff --git a/src/components/UserStatus/StakedMask.tsx b/src/components/UserStatus/StakedMask.tsx index 9b8e913..1bc1135 100644 --- a/src/components/UserStatus/StakedMask.tsx +++ b/src/components/UserStatus/StakedMask.tsx @@ -60,7 +60,7 @@ export function StakedMask(props: BoxProps) { const isZero = chainData?.[0] ? chainData[0] === ZERO : true const loading = isWithdrawing || waiting || isReadingUserInfos const disabled = isZero - const pendingStakingNumbers = (isReadingUserInfos && loadingUserInfo) || isLoadingPools || isEnded + const pendingStakingNumbers = isReadingUserInfos || loadingUserInfo || isLoadingPools return ( @@ -76,7 +76,7 @@ export function StakedMask(props: BoxProps) { my: '10px', }} > - {staked ? formatMarketCap(staked, 4) : '-'} + {staked ? formatMarketCap(staked, 4) : 0} @@ -85,7 +85,7 @@ export function StakedMask(props: BoxProps) { loading={pendingStakingNumbers} skeletonProps={{ h: '20px', w: '30px', rounded: '4px' }} > - {`+${userInfo?.score_per_hour}`} + {`+${isEnded ? 0 : userInfo?.score_per_hour}`} Points/h diff --git a/src/hooks/usePoolState.ts b/src/hooks/usePoolState.ts index 9b6d4e6..f162368 100644 --- a/src/hooks/usePoolState.ts +++ b/src/hooks/usePoolState.ts @@ -9,7 +9,7 @@ export function usePoolState(poolInfo: PoolInfo | undefined) { const { chainId, poolId, stakeManagerAddress } = usePoolStore() const [watch, setWatch] = useState({ pollingInterval: 60_000 }) - const { data: blockNumber } = useBlockNumber({ watch }) + const { data: blockNumber } = useBlockNumber({ chainId, watch }) const { data: pools, isLoading } = useReadContract({ chainId, abi: StakeManagerABI, diff --git a/src/modals/StakeModal.tsx b/src/modals/StakeModal.tsx index d217071..d6b95d3 100644 --- a/src/modals/StakeModal.tsx +++ b/src/modals/StakeModal.tsx @@ -58,7 +58,7 @@ export function StakeModal(props: ModalProps) { const [rawAmount, setRawAmount] = useState('') const balance = useBalance({ chainId, address: account.address, token: maskTokenAddress }) const allowance = useMaskAllowance() - const maskToken = useToken({ address: maskTokenAddress }) + const maskToken = useToken({ chainId, address: maskTokenAddress }) const [{ loading: linkingTwitter }, linkTwitter] = useLinkTwitter() const { data: userInfo, isLoading: isLoadingUserInfo } = useUserInfo() const linkedTwitter = !!userInfo?.twitter_id