Skip to content

Commit

Permalink
fix(lucky drop): availability
Browse files Browse the repository at this point in the history
  • Loading branch information
zhouhanseng committed May 23, 2022
1 parent 8847ab1 commit 9e3cf60
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -1,20 +1,26 @@
import { useAsyncRetry } from 'react-use'
import type { EVM_Connection } from '@masknet/plugin-evm'
import type { HappyRedPacketV4 } from '@masknet/web3-contracts/types/HappyRedPacketV4'
import { useRedPacketContract } from './useRedPacketContract'
import { useAccount, useChainId, Web3Helper, useWeb3Connection } from '@masknet/plugin-infra/web3'
import { NetworkPluginID } from '@masknet/web3-shared-base'
import { checkAvailability } from '../utils/checkAvailability'

export function useAvailability(
id: string,
contract_address: string,
version: number,
options?: Web3Helper.Web3ConnectionOptions<NetworkPluginID.PLUGIN_EVM>,
) {
const account = useAccount(NetworkPluginID.PLUGIN_EVM, options?.account)
const chainId = useChainId(NetworkPluginID.PLUGIN_EVM, options?.chainId)
const redPacketContract = useRedPacketContract(chainId, version) as HappyRedPacketV4
const connection = useWeb3Connection(NetworkPluginID.PLUGIN_EVM, { chainId }) as EVM_Connection | null

return useAsyncRetry(async () => {
if (!id || !connection || !contract_address) return null
return checkAvailability(id, account, contract_address, chainId, connection)
}, [id, account, chainId, connection, contract_address])
if (!id || !connection || !contract_address || !redPacketContract) return null
return redPacketContract.methods.check_availability(id).call({
// check availability is ok w/o account
from: account,
})
}, [id, account, chainId, connection, contract_address, version])
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export function useAvailabilityComputed(account: string, payload: RedPacketJSONP
networkResolver.networkChainId((payload.network ?? '') as NetworkType) ??
ChainId.Mainnet

const asyncResult = useAvailability(payload.rpid, payload.contract_address, {
const asyncResult = useAvailability(payload.rpid, payload.contract_address, payload.contract_version, {
account,
chainId: parsedChainId,
})
Expand Down

0 comments on commit 9e3cf60

Please sign in to comment.