From 04981efd00cc535b8c08a69fa9ea316ab27288a9 Mon Sep 17 00:00:00 2001 From: guanbinrui Date: Mon, 21 Feb 2022 15:32:58 +0800 Subject: [PATCH] fix: failed to open box --- .../mask/src/plugins/MaskBox/hooks/useContext.ts | 15 +++++++++------ .../MaskBox/hooks/useOpenBoxTransaction.ts | 12 +++++++++++- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/packages/mask/src/plugins/MaskBox/hooks/useContext.ts b/packages/mask/src/plugins/MaskBox/hooks/useContext.ts index d6bfa467027d..95e8607d03b9 100644 --- a/packages/mask/src/plugins/MaskBox/hooks/useContext.ts +++ b/packages/mask/src/plugins/MaskBox/hooks/useContext.ts @@ -58,7 +58,7 @@ function useContext(initialState?: { boxId: string; hashRoot: string }) { const coder = ABICoder as unknown as ABICoder.AbiCoder const [boxId, setBoxId] = useState(initialState?.boxId ?? '') - const [hashRoot, setHashRoot] = useState(initialState?.hashRoot || '') + const [rootHash, setRootHash] = useState(initialState?.hashRoot || '') const [paymentTokenAddress, setPaymentTokenAddress] = useState('') // #region the box info @@ -149,14 +149,14 @@ function useContext(initialState?: { boxId: string; hashRoot: string }) { // #endregion // #region qualification - const { value, error: errorProof, loading: loadingProof } = useMerkelProof(hashRoot) + const { value, error: errorProof, loading: loadingProof } = useMerkelProof(rootHash) const proofBytes = value?.proof ? coder.encodeParameters(['bytes32[]'], [value?.proof?.map((p) => `0x${p}`) ?? []]) : undefined const qualification = useQualification( boxInfo?.qualificationAddress, account, - value?.proof ? coder.encodeParameters(['bytes', 'bytes32'], [proofBytes, hashRoot]) : undefined, + value?.proof ? coder.encodeParameters(['bytes', 'bytes32'], [proofBytes, rootHash]) : undefined, ) // not in whitelist @@ -176,8 +176,9 @@ function useContext(initialState?: { boxId: string; hashRoot: string }) { if (notInWhiteList) return BoxState.NOT_IN_WHITELIST if (insufficientHolderToken) return BoxState.INSUFFICIENT_HOLDER_TOKEN if (qualification?.error_msg) return BoxState.NOT_QUALIFIED - if (errorMaskBoxInfo || errorMaskBoxStatus || errorBoxInfo) return BoxState.ERROR - if (loadingMaskBoxInfo || loadingMaskBoxStatus || loadingBoxInfo || loadingProof) { + if (errorMaskBoxInfo || errorMaskBoxStatus || errorBoxInfo || (rootHash ? errorProof : false)) + return BoxState.ERROR + if (loadingMaskBoxInfo || loadingMaskBoxStatus || loadingBoxInfo || (rootHash ? loadingProof : false)) { if (!maskBoxInfo && !boxInfo) return BoxState.UNKNOWN } if (maskBoxInfo && !boxInfo) return BoxState.UNKNOWN @@ -194,9 +195,11 @@ function useContext(initialState?: { boxId: string; hashRoot: string }) { errorBoxInfo, maskBoxInfo, loadingMaskBoxInfo, - loadingProof, errorMaskBoxInfo, qualification, + loadingProof, + errorProof, + rootHash, notInWhiteList, insufficientHolderToken, beat, diff --git a/packages/mask/src/plugins/MaskBox/hooks/useOpenBoxTransaction.ts b/packages/mask/src/plugins/MaskBox/hooks/useOpenBoxTransaction.ts index d6bb0d4482ce..2a59d7016ae9 100644 --- a/packages/mask/src/plugins/MaskBox/hooks/useOpenBoxTransaction.ts +++ b/packages/mask/src/plugins/MaskBox/hooks/useOpenBoxTransaction.ts @@ -28,5 +28,15 @@ export function useOpenBoxTransaction( }, method: maskBoxContract.methods.openBox(boxId, amount, paymentTokenIndex, proof ?? '0x00'), } - }, [account, amount, boxId, maskBoxContract, paymentTokenIndex, paymentTokenPrice, paymentTokenDetailed, overrides]) + }, [ + account, + amount, + boxId, + maskBoxContract, + paymentTokenIndex, + paymentTokenPrice, + paymentTokenDetailed, + proof, + overrides, + ]) }