From 89801d7762313b7124c9caabddc1d3ef5acc2b69 Mon Sep 17 00:00:00 2001 From: guanbinrui Date: Tue, 28 Dec 2021 16:11:53 +0800 Subject: [PATCH 1/3] refactor: move now out of hooks --- packages/mask/src/plugins/MaskBox/hooks/useContext.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/mask/src/plugins/MaskBox/hooks/useContext.ts b/packages/mask/src/plugins/MaskBox/hooks/useContext.ts index 393d52385ea5..075113939a7f 100644 --- a/packages/mask/src/plugins/MaskBox/hooks/useContext.ts +++ b/packages/mask/src/plugins/MaskBox/hooks/useContext.ts @@ -40,6 +40,7 @@ import { useIsWhitelisted } from './useIsWhitelisted' import { isGreaterThanOrEqualTo, isLessThanOrEqualTo, isZero, multipliedBy } from '@masknet/web3-shared-base' function useContext(initialState?: { boxId: string }) { + const now = new Date() const heartBit = useHeartBit() const account = useAccount() const chainId = useChainId() @@ -139,7 +140,6 @@ function useContext(initialState?: { boxId: string }) { if (maskBoxInfo && !boxInfo) return BoxState.UNKNOWN if (!maskBoxInfo || !maskBoxStatus || !boxInfo) return BoxState.NOT_FOUND if (maskBoxStatus.canceled) return BoxState.CANCELED - const now = new Date() if (isGreaterThanOrEqualTo(boxInfo.tokenIdsPurchased.length, boxInfo.personalLimit)) return BoxState.DRAWED_OUT if (isLessThanOrEqualTo(boxInfo.remaining, 0)) return BoxState.SOLD_OUT if (boxInfo.startAt > now) return BoxState.NOT_READY @@ -170,10 +170,10 @@ function useContext(initialState?: { boxId: string }) { case BoxState.EXPIRED: return 'Ended' case BoxState.NOT_READY: - const now = Date.now() + const nowAt = now.getTime() const startAt = boxInfo?.startAt.getTime() ?? 0 - if (startAt <= now) return 'Loading...' - const countdown = formatCountdown(startAt, now) + if (startAt <= nowAt) return 'Loading...' + const countdown = formatCountdown(startAt, nowAt) return countdown ? `Start sale in ${countdown}` : 'Loading...' case BoxState.SOLD_OUT: return 'Sold Out' From 4f103bac4aa51e4381748d03f9e60d9d9af2e6fa Mon Sep 17 00:00:00 2001 From: guanbinrui Date: Tue, 28 Dec 2021 16:16:48 +0800 Subject: [PATCH 2/3] refactor: remove gas --- packages/web3-shared/evm/hooks/useTransactionCallback.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/web3-shared/evm/hooks/useTransactionCallback.ts b/packages/web3-shared/evm/hooks/useTransactionCallback.ts index 327fb64f6694..7bb891671b27 100644 --- a/packages/web3-shared/evm/hooks/useTransactionCallback.ts +++ b/packages/web3-shared/evm/hooks/useTransactionCallback.ts @@ -1,4 +1,5 @@ import { useCallback } from 'react' +import { omit } from 'lodash-unified' import type { PayableTransactionObject, PayableTx } from '@masknet/web3-contracts/types/types' import { useTransactionState } from './useTransactionState' import { TransactionStateType, TransactionEventType } from '../types' @@ -24,7 +25,7 @@ export function useTransactionCallback( const gasExpectedConfig = { ...config } try { - const estimatedGas = await method.estimateGas(config) + const estimatedGas = await method.estimateGas(omit(config, 'gas')) if (!gasExpectedConfig.gas && estimatedGas) { gasExpectedConfig.gas = estimatedGas } From bf86d6693b8d7015a216d3239f2026af790eab9c Mon Sep 17 00:00:00 2001 From: guanbinrui Date: Tue, 28 Dec 2021 16:22:45 +0800 Subject: [PATCH 3/3] refactor: heartBit to heartBeat --- packages/mask/src/plugins/MaskBox/hooks/useContext.ts | 8 ++++---- .../MaskBox/hooks/{useHeartBit.ts => useHeartBeat.ts} | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) rename packages/mask/src/plugins/MaskBox/hooks/{useHeartBit.ts => useHeartBeat.ts} (85%) diff --git a/packages/mask/src/plugins/MaskBox/hooks/useContext.ts b/packages/mask/src/plugins/MaskBox/hooks/useContext.ts index 075113939a7f..ce8a8aba6ab7 100644 --- a/packages/mask/src/plugins/MaskBox/hooks/useContext.ts +++ b/packages/mask/src/plugins/MaskBox/hooks/useContext.ts @@ -35,13 +35,13 @@ import { useMaskBoxPurchasedTokens } from './useMaskBoxPurchasedTokens' import { formatCountdown } from '../helpers/formatCountdown' import { useOpenBoxTransaction } from './useOpenBoxTransaction' import { useMaskBoxMetadata } from './useMaskBoxMetadata' -import { useHeartBit } from './useHeartBit' +import { useHeartBeat } from './useHeartBeat' import { useIsWhitelisted } from './useIsWhitelisted' import { isGreaterThanOrEqualTo, isLessThanOrEqualTo, isZero, multipliedBy } from '@masknet/web3-shared-base' function useContext(initialState?: { boxId: string }) { const now = new Date() - const heartBit = useHeartBit() + const heartBeat = useHeartBeat() const account = useAccount() const chainId = useChainId() const { NATIVE_TOKEN_ADDRESS } = useTokenConstants(ChainId.Mainnet) @@ -145,7 +145,7 @@ function useContext(initialState?: { boxId: string }) { if (boxInfo.startAt > now) return BoxState.NOT_READY if (boxInfo.endAt < now || maskBoxStatus?.expired) return BoxState.EXPIRED return BoxState.READY - }, [boxInfo, loadingBoxInfo, errorBoxInfo, maskBoxInfo, loadingMaskBoxInfo, errorMaskBoxInfo, heartBit]) + }, [boxInfo, loadingBoxInfo, errorBoxInfo, maskBoxInfo, loadingMaskBoxInfo, errorMaskBoxInfo, heartBeat]) const isWhitelisted = useIsWhitelisted(boxInfo?.qualificationAddress, account) const isQualifiedByContract = @@ -186,7 +186,7 @@ function useContext(initialState?: { boxId: string }) { default: unreachable(boxState) } - }, [boxState, boxInfo?.startAt, heartBit]) + }, [boxState, boxInfo?.startAt, heartBeat]) //#endregion //#region the box metadata diff --git a/packages/mask/src/plugins/MaskBox/hooks/useHeartBit.ts b/packages/mask/src/plugins/MaskBox/hooks/useHeartBeat.ts similarity index 85% rename from packages/mask/src/plugins/MaskBox/hooks/useHeartBit.ts rename to packages/mask/src/plugins/MaskBox/hooks/useHeartBeat.ts index 13d5662e5b61..8d476c76cb68 100644 --- a/packages/mask/src/plugins/MaskBox/hooks/useHeartBit.ts +++ b/packages/mask/src/plugins/MaskBox/hooks/useHeartBeat.ts @@ -1,7 +1,7 @@ import { useState } from 'react' import { useTimeoutFn } from 'react-use' -export function useHeartBit(delay = 1000) { +export function useHeartBeat(delay = 1000) { const [bit, setBit] = useState(0) const [, , reset] = useTimeoutFn(() => { setBit((x) => (x + 1) % Number.MAX_SAFE_INTEGER)