diff --git a/packages/mask/src/plugins/ITO/SNSAdaptor/ITO.tsx b/packages/mask/src/plugins/ITO/SNSAdaptor/ITO.tsx index 06b1b59ebd78..a8f9106848a0 100644 --- a/packages/mask/src/plugins/ITO/SNSAdaptor/ITO.tsx +++ b/packages/mask/src/plugins/ITO/SNSAdaptor/ITO.tsx @@ -11,6 +11,7 @@ import { useChainId, useChainIdValid, useTokenConstants, + isNativeTokenAddress, } from '@masknet/web3-shared-evm' import { isZero, ZERO, isGreaterThan } from '@masknet/web3-shared-base' import { Box, Card, Grid, Link, Typography } from '@mui/material' @@ -315,10 +316,9 @@ export function ITO(props: ITO_Props) { .toString() const canWithdraw = useMemo( () => + !availability?.destructed && isAccountSeller && - !tradeInfo?.destructInfo && - !loadingTradeInfo && - !availability?.exchanged_tokens.every((t) => t === '0') && + !availability?.exchanged_tokens.every(isZero) && (listOfStatus.includes(ITO_Status.expired) || noRemain), [tradeInfo, listOfStatus, isAccountSeller, noRemain, loadingTradeInfo], ) @@ -726,7 +726,8 @@ export function ITO(props: ITO_Props) { className={classes.actionButton}> {t('plugin_ito_withdraw')} - ) : !ifQualified || !(ifQualified as Qual_V2).qualified ? ( + ) : (!ifQualified || !(ifQualified as Qual_V2).qualified) && + !isNativeTokenAddress(qualificationAddress) ? ( - ) : listOfStatus.includes(ITO_Status.expired) ? ( - undefined} - variant="contained" - size="large" - className={classes.actionButton}> - {t('plugin_ito_expired')} - - ) : listOfStatus.includes(ITO_Status.waited) ? ( + ) : listOfStatus.includes(ITO_Status.expired) ? null : listOfStatus.includes(ITO_Status.waited) ? ( { + const unlockTime = Number(raw.availability.unlock_time) * 1000 return { pids: [raw.pid], amount: Number(raw.availability.swapped), token: raw.token, - isClaimable: raw.availability.unlocked, - unlockTime: new Date(Number(raw.availability.unlock_time) * 1000), + isClaimable: isAfter(Date.now(), unlockTime), + unlockTime: new Date(unlockTime), } }) .reduce((acc: SwappedToken[], cur) => { diff --git a/packages/mask/src/plugins/ITO/Worker/apis/checkAvailability.ts b/packages/mask/src/plugins/ITO/Worker/apis/checkAvailability.ts index 3927e00a8ef4..b2d4491c5ae5 100644 --- a/packages/mask/src/plugins/ITO/Worker/apis/checkAvailability.ts +++ b/packages/mask/src/plugins/ITO/Worker/apis/checkAvailability.ts @@ -23,7 +23,7 @@ function decodeResult(data: string, isV1: boolean): Availability { remaining: +parseHexToInt(results[1]), started: results[2], expired: results[3], - unlocked: results[4], + destructed: results[4], unlock_time: parseHexToInt(results[5]), swapped: parseHexToInt(results[6]), exchanged_tokens: parse(results[7]).map(parseHexToInt), diff --git a/packages/mask/src/plugins/ITO/types.ts b/packages/mask/src/plugins/ITO/types.ts index 6b9f99dd6e48..4b12672df00f 100644 --- a/packages/mask/src/plugins/ITO/types.ts +++ b/packages/mask/src/plugins/ITO/types.ts @@ -81,7 +81,7 @@ export interface Availability { remaining: number started: boolean expired: boolean - unlocked: boolean + destructed: boolean unlock_time: string swapped: string exchanged_tokens: string[] diff --git a/packages/web3-contracts/abis/ITO2.json b/packages/web3-contracts/abis/ITO2.json index 4f1fe29ec979..823ddf58d724 100644 --- a/packages/web3-contracts/abis/ITO2.json +++ b/packages/web3-contracts/abis/ITO2.json @@ -271,7 +271,7 @@ }, { "internalType": "bool", - "name": "unlocked", + "name": "destructed", "type": "bool" }, { diff --git a/packages/web3-contracts/types/ITO2.d.ts b/packages/web3-contracts/types/ITO2.d.ts index f0cdf8c45370..1e6d72768ea5 100644 --- a/packages/web3-contracts/types/ITO2.d.ts +++ b/packages/web3-contracts/types/ITO2.d.ts @@ -107,7 +107,7 @@ export interface ITO2 extends BaseContract { remaining: string started: boolean expired: boolean - unlocked: boolean + destructed: boolean unlock_time: string swapped: string exchanged_tokens: string[]