diff --git a/src/app/hooks/useSendContractTx.ts b/src/app/hooks/useSendContractTx.ts index 8b4ebc8f4..b0731accd 100644 --- a/src/app/hooks/useSendContractTx.ts +++ b/src/app/hooks/useSendContractTx.ts @@ -57,7 +57,7 @@ export function useSendContractTx( const [tx, setTx] = useState(); const send = useCallback( - ( + async ( args: any[], config: TransactionConfig = {}, options: TransactionOptions = {}, @@ -72,7 +72,7 @@ export function useSendContractTx( config.gas = gasLimit[options.type]; } - contractWriter + await contractWriter .send(contractName, methodName, args, config) .then(e => { const transactionHash = e as string; diff --git a/src/app/pages/RewardPage/components/ClaimForms/RewardClaimForm/hooks/useClaimRewardSov.tsx b/src/app/pages/RewardPage/components/ClaimForms/RewardClaimForm/hooks/useClaimRewardSov.tsx index 40d91af3d..1f9eefec9 100644 --- a/src/app/pages/RewardPage/components/ClaimForms/RewardClaimForm/hooks/useClaimRewardSov.tsx +++ b/src/app/pages/RewardPage/components/ClaimForms/RewardClaimForm/hooks/useClaimRewardSov.tsx @@ -2,7 +2,8 @@ import { contractReader } from 'utils/sovryn/contract-reader'; import { useSendContractTx } from 'app/hooks/useSendContractTx'; import { useAccount } from 'app/hooks/useAccount'; import { ethGenesisAddress, gasLimit } from 'utils/classifiers'; -import { TxType } from 'store/global/transactions-store/types'; +import { TxStatus, TxType } from 'store/global/transactions-store/types'; +import { useMemo } from 'react'; export const useClaimRewardSov = ( hasLockedSov: boolean, @@ -10,16 +11,21 @@ export const useClaimRewardSov = ( ) => { const address = useAccount(); - const { send: sendLocked } = useSendContractTx( + const { send: sendLocked, ...tx1 } = useSendContractTx( 'lockedSov', 'createVestingAndStake', ); - const { send, ...tx } = useSendContractTx( + const { send, ...tx2 } = useSendContractTx( 'liquidityMiningProxy', 'claimRewardFromAllPools', ); + const tx = useMemo(() => (tx2 && tx2.status !== TxStatus.NONE ? tx2 : tx1), [ + tx1, + tx2, + ]); + return { send: async () => { let nonce = await contractReader.nonce(address);