From 1ea902c21e5e1bb454d61b1b5fa38a0bd3aa60ae Mon Sep 17 00:00:00 2001 From: unclebill Date: Thu, 24 Mar 2022 23:39:04 +0800 Subject: [PATCH 1/5] fix(dex): watch tx confirmation event --- .../Trader/trader/0x/useTradeCallback.ts | 43 ++++++---- .../Trader/trader/bancor/useTradeCallback.ts | 43 ++++++---- .../Trader/trader/dodo/useTradeCallback.ts | 43 ++++++---- .../trader/openocean/useTradeCallback.ts | 35 +++++--- .../Trader/trader/uniswap/useTradeCallback.ts | 83 +++++++++++-------- 5 files changed, 158 insertions(+), 89 deletions(-) diff --git a/packages/mask/src/plugins/Trader/trader/0x/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/0x/useTradeCallback.ts index 50dffd19ff2b..038082cf6b50 100644 --- a/packages/mask/src/plugins/Trader/trader/0x/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/0x/useTradeCallback.ts @@ -2,7 +2,14 @@ import { useCallback, useMemo, useState } from 'react' import stringify from 'json-stable-stringify' import { pick } from 'lodash-unified' import type { TransactionConfig } from 'web3-core' -import { GasOptionConfig, TransactionState, TransactionStateType, useAccount, useWeb3 } from '@masknet/web3-shared-evm' +import { + GasOptionConfig, + TransactionEventType, + TransactionState, + TransactionStateType, + useAccount, + useWeb3, +} from '@masknet/web3-shared-evm' import type { SwapQuoteResponse, TradeComputed } from '../../types' import { TargetChainIdContext } from '../useTargetChainIdContext' import { SUPPORTED_CHAIN_ID_LIST } from './constants' @@ -58,21 +65,29 @@ export function useTradeCallback(tradeComputed: TradeComputed // send transaction and wait for hash return new Promise((resolve, reject) => { - web3.eth.sendTransaction(config_, (error, hash) => { - if (error) { - setTradeState({ - type: TransactionStateType.FAILED, - error, - }) - reject(error) - } else { + web3.eth + .sendTransaction(config_, (error, hash) => { + if (error) { + setTradeState({ + type: TransactionStateType.FAILED, + error, + }) + reject(error) + } else { + setTradeState({ + type: TransactionStateType.HASH, + hash, + }) + resolve(hash) + } + }) + .on(TransactionEventType.CONFIRMATION, (no, receipt) => { setTradeState({ - type: TransactionStateType.HASH, - hash, + type: TransactionStateType.CONFIRMED, + no, + receipt, }) - resolve(hash) - } - }) + }) }) }, [web3, account, chainId, stringify(config), gasConfig]) diff --git a/packages/mask/src/plugins/Trader/trader/bancor/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/bancor/useTradeCallback.ts index fc65f7159721..02d4478256ca 100644 --- a/packages/mask/src/plugins/Trader/trader/bancor/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/bancor/useTradeCallback.ts @@ -1,6 +1,13 @@ import { useCallback, useMemo, useState } from 'react' import stringify from 'json-stable-stringify' -import { GasOptionConfig, TransactionState, TransactionStateType, useAccount, useWeb3 } from '@masknet/web3-shared-evm' +import { + GasOptionConfig, + TransactionEventType, + TransactionState, + TransactionStateType, + useAccount, + useWeb3, +} from '@masknet/web3-shared-evm' import type { SwapBancorRequest, TradeComputed } from '../../types' import { PluginTraderRPC } from '../../messages' import { pick } from 'lodash-unified' @@ -59,21 +66,29 @@ export function useTradeCallback(tradeComputed: TradeComputed // send transaction and wait for hash return new Promise((resolve, reject) => { - web3.eth.sendTransaction(config_, (error, hash) => { - if (error) { - setTradeState({ - type: TransactionStateType.FAILED, - error, - }) - reject(error) - } else { + web3.eth + .sendTransaction(config_, (error, hash) => { + if (error) { + setTradeState({ + type: TransactionStateType.FAILED, + error, + }) + reject(error) + } else { + setTradeState({ + type: TransactionStateType.HASH, + hash, + }) + resolve(hash) + } + }) + .on(TransactionEventType.CONFIRMATION, (no, receipt) => { setTradeState({ - type: TransactionStateType.HASH, - hash, + type: TransactionStateType.CONFIRMED, + no, + receipt, }) - resolve(hash) - } - }) + }) }) }, [web3, account, chainId, stringify(trade), gasConfig]) diff --git a/packages/mask/src/plugins/Trader/trader/dodo/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/dodo/useTradeCallback.ts index d6c655e0b439..5c601ff9b1db 100644 --- a/packages/mask/src/plugins/Trader/trader/dodo/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/dodo/useTradeCallback.ts @@ -2,7 +2,14 @@ import { useCallback, useMemo, useState } from 'react' import stringify from 'json-stable-stringify' import { pick } from 'lodash-unified' import type { TransactionConfig } from 'web3-core' -import { GasOptionConfig, TransactionState, TransactionStateType, useAccount, useWeb3 } from '@masknet/web3-shared-evm' +import { + GasOptionConfig, + TransactionEventType, + TransactionState, + TransactionStateType, + useAccount, + useWeb3, +} from '@masknet/web3-shared-evm' import type { SwapRouteSuccessResponse, TradeComputed } from '../../types' import { TargetChainIdContext } from '../useTargetChainIdContext' @@ -56,21 +63,29 @@ export function useTradeCallback( // send transaction and wait for hash return new Promise((resolve, reject) => { - web3.eth.sendTransaction(config_, (error, hash) => { - if (error) { - setTradeState({ - type: TransactionStateType.FAILED, - error, - }) - reject(error) - } else { + web3.eth + .sendTransaction(config_, (error, hash) => { + if (error) { + setTradeState({ + type: TransactionStateType.FAILED, + error, + }) + reject(error) + } else { + setTradeState({ + type: TransactionStateType.HASH, + hash, + }) + resolve(hash) + } + }) + .on(TransactionEventType.CONFIRMATION, (no, receipt) => { setTradeState({ - type: TransactionStateType.HASH, - hash, + type: TransactionStateType.CONFIRMED, + no, + receipt, }) - resolve(hash) - } - }) + }) }) }, [web3, account, chainId, stringify(config), gasConfig]) diff --git a/packages/mask/src/plugins/Trader/trader/openocean/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/openocean/useTradeCallback.ts index 38d729d0a6bd..a98e687aba03 100644 --- a/packages/mask/src/plugins/Trader/trader/openocean/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/openocean/useTradeCallback.ts @@ -9,6 +9,7 @@ import { useChainId, useWeb3, GasOptionConfig, + TransactionEventType, } from '@masknet/web3-shared-evm' import type { SwapOOSuccessResponse, TradeComputed } from '../../types' @@ -61,21 +62,29 @@ export function useTradeCallback( // send transaction and wait for hash return new Promise((resolve, reject) => { - web3.eth.sendTransaction(config_, (error, hash) => { - if (error) { - setTradeState({ - type: TransactionStateType.FAILED, - error, - }) - reject(error) - } else { + web3.eth + .sendTransaction(config_, (error, hash) => { + if (error) { + setTradeState({ + type: TransactionStateType.FAILED, + error, + }) + reject(error) + } else { + setTradeState({ + type: TransactionStateType.HASH, + hash, + }) + resolve(hash) + } + }) + .on(TransactionEventType.CONFIRMATION, (no, receipt) => { setTradeState({ - type: TransactionStateType.HASH, - hash, + type: TransactionStateType.CONFIRMED, + no, + receipt, }) - resolve(hash) - } - }) + }) }) }, [web3, account, chainId, stringify(config)]) diff --git a/packages/mask/src/plugins/Trader/trader/uniswap/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/uniswap/useTradeCallback.ts index 6a8a82e07e7d..3004725e7513 100644 --- a/packages/mask/src/plugins/Trader/trader/uniswap/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/uniswap/useTradeCallback.ts @@ -1,7 +1,14 @@ import { useCallback, useState } from 'react' import BigNumber from 'bignumber.js' import type { SwapParameters } from '@uniswap/v2-sdk' -import { GasOptionConfig, TransactionState, TransactionStateType, useAccount, useWeb3 } from '@masknet/web3-shared-evm' +import { + GasOptionConfig, + TransactionEventType, + TransactionState, + TransactionStateType, + useAccount, + useWeb3, +} from '@masknet/web3-shared-evm' import { useSwapParameters as useTradeParameters } from './useTradeParameters' import type { SwapCall, Trade, TradeComputed } from '../../types' import { swapErrorToUserReadableMessage } from '../../helpers' @@ -135,43 +142,51 @@ export function useTradeCallback( call: { address, calldata, value }, } = bestCallOption - web3.eth.sendTransaction( - { - from: account, - to: address, - data: calldata, - ...('gasEstimate' in bestCallOption ? { gas: bestCallOption.gasEstimate.toFixed() } : {}), - ...(!value || /^0x0*$/.test(value) ? {} : { value }), - ...gasConfig, - }, - async (error, hash) => { - if (error) { - if ((error as any)?.code) { - const error_ = new Error( - (error as any)?.message === 'Unable to add more requests.' - ? 'Unable to add more requests.' - : 'Transaction rejected.', - ) - setTradeState({ - type: TransactionStateType.FAILED, - error: error_, - }) - reject(error_) + web3.eth + .sendTransaction( + { + from: account, + to: address, + data: calldata, + ...('gasEstimate' in bestCallOption ? { gas: bestCallOption.gasEstimate.toFixed() } : {}), + ...(!value || /^0x0*$/.test(value) ? {} : { value }), + ...gasConfig, + }, + async (error, hash) => { + if (error) { + if ((error as any)?.code) { + const error_ = new Error( + (error as any)?.message === 'Unable to add more requests.' + ? 'Unable to add more requests.' + : 'Transaction rejected.', + ) + setTradeState({ + type: TransactionStateType.FAILED, + error: error_, + }) + reject(error_) + } else { + setTradeState({ + type: TransactionStateType.FAILED, + error: new Error(`Swap failed: ${swapErrorToUserReadableMessage(error)}`), + }) + } } else { setTradeState({ - type: TransactionStateType.FAILED, - error: new Error(`Swap failed: ${swapErrorToUserReadableMessage(error)}`), + type: TransactionStateType.HASH, + hash: hash, }) + resolve(hash) } - } else { - setTradeState({ - type: TransactionStateType.HASH, - hash: hash, - }) - resolve(hash) - } - }, - ) + }, + ) + .on(TransactionEventType.CONFIRMATION, (no, receipt) => { + setTradeState({ + type: TransactionStateType.CONFIRMED, + no, + receipt, + }) + }) }) }, [web3, account, tradeParameters, gasConfig]) From 710f60b01a9e9b26b7fce2d7e0af0243175bd589 Mon Sep 17 00:00:00 2001 From: unclebill Date: Fri, 25 Mar 2022 15:55:12 +0800 Subject: [PATCH 2/5] fixup! fix(dex): watch tx confirmation event --- .../Trader/trader/bancor/useTradeCallback.ts | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/packages/mask/src/plugins/Trader/trader/bancor/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/bancor/useTradeCallback.ts index 02d4478256ca..afd5e35d926d 100644 --- a/packages/mask/src/plugins/Trader/trader/bancor/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/bancor/useTradeCallback.ts @@ -68,19 +68,12 @@ export function useTradeCallback(tradeComputed: TradeComputed return new Promise((resolve, reject) => { web3.eth .sendTransaction(config_, (error, hash) => { - if (error) { - setTradeState({ - type: TransactionStateType.FAILED, - error, - }) - reject(error) - } else { - setTradeState({ - type: TransactionStateType.HASH, - hash, - }) - resolve(hash) - } + if (!error) return + setTradeState({ + type: TransactionStateType.FAILED, + error, + }) + reject(error) }) .on(TransactionEventType.CONFIRMATION, (no, receipt) => { setTradeState({ @@ -88,6 +81,7 @@ export function useTradeCallback(tradeComputed: TradeComputed no, receipt, }) + resolve(receipt.transactionHash) }) }) }, [web3, account, chainId, stringify(trade), gasConfig]) From 35bfdd62d31c0896a5363c25241a9a379e24783f Mon Sep 17 00:00:00 2001 From: unclebill Date: Mon, 28 Mar 2022 18:45:23 +0800 Subject: [PATCH 3/5] fixup! fix(dex): watch tx confirmation event --- .../Trader/trader/0x/useTradeCallback.ts | 22 ++++------- .../Trader/trader/dodo/useTradeCallback.ts | 22 ++++------- .../trader/openocean/useTradeCallback.ts | 22 ++++------- .../Trader/trader/uniswap/useTradeCallback.ts | 38 ++++++++----------- 4 files changed, 40 insertions(+), 64 deletions(-) diff --git a/packages/mask/src/plugins/Trader/trader/0x/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/0x/useTradeCallback.ts index 038082cf6b50..7a7f2e6e3bea 100644 --- a/packages/mask/src/plugins/Trader/trader/0x/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/0x/useTradeCallback.ts @@ -66,20 +66,13 @@ export function useTradeCallback(tradeComputed: TradeComputed // send transaction and wait for hash return new Promise((resolve, reject) => { web3.eth - .sendTransaction(config_, (error, hash) => { - if (error) { - setTradeState({ - type: TransactionStateType.FAILED, - error, - }) - reject(error) - } else { - setTradeState({ - type: TransactionStateType.HASH, - hash, - }) - resolve(hash) - } + .sendTransaction(config_, (error) => { + if (!error) return + setTradeState({ + type: TransactionStateType.FAILED, + error, + }) + reject(error) }) .on(TransactionEventType.CONFIRMATION, (no, receipt) => { setTradeState({ @@ -87,6 +80,7 @@ export function useTradeCallback(tradeComputed: TradeComputed no, receipt, }) + resolve(receipt.transactionHash) }) }) }, [web3, account, chainId, stringify(config), gasConfig]) diff --git a/packages/mask/src/plugins/Trader/trader/dodo/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/dodo/useTradeCallback.ts index 5c601ff9b1db..24b3ddabef05 100644 --- a/packages/mask/src/plugins/Trader/trader/dodo/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/dodo/useTradeCallback.ts @@ -64,20 +64,13 @@ export function useTradeCallback( // send transaction and wait for hash return new Promise((resolve, reject) => { web3.eth - .sendTransaction(config_, (error, hash) => { - if (error) { - setTradeState({ - type: TransactionStateType.FAILED, - error, - }) - reject(error) - } else { - setTradeState({ - type: TransactionStateType.HASH, - hash, - }) - resolve(hash) - } + .sendTransaction(config_, (error) => { + if (!error) return + setTradeState({ + type: TransactionStateType.FAILED, + error, + }) + reject(error) }) .on(TransactionEventType.CONFIRMATION, (no, receipt) => { setTradeState({ @@ -85,6 +78,7 @@ export function useTradeCallback( no, receipt, }) + resolve(receipt.transactionHash) }) }) }, [web3, account, chainId, stringify(config), gasConfig]) diff --git a/packages/mask/src/plugins/Trader/trader/openocean/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/openocean/useTradeCallback.ts index a98e687aba03..7084fdd1c0b4 100644 --- a/packages/mask/src/plugins/Trader/trader/openocean/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/openocean/useTradeCallback.ts @@ -63,20 +63,13 @@ export function useTradeCallback( // send transaction and wait for hash return new Promise((resolve, reject) => { web3.eth - .sendTransaction(config_, (error, hash) => { - if (error) { - setTradeState({ - type: TransactionStateType.FAILED, - error, - }) - reject(error) - } else { - setTradeState({ - type: TransactionStateType.HASH, - hash, - }) - resolve(hash) - } + .sendTransaction(config_, (error) => { + if (error) return + setTradeState({ + type: TransactionStateType.FAILED, + error, + }) + reject(error) }) .on(TransactionEventType.CONFIRMATION, (no, receipt) => { setTradeState({ @@ -84,6 +77,7 @@ export function useTradeCallback( no, receipt, }) + resolve(receipt.transactionHash) }) }) }, [web3, account, chainId, stringify(config)]) diff --git a/packages/mask/src/plugins/Trader/trader/uniswap/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/uniswap/useTradeCallback.ts index 3004725e7513..e9ed72553689 100644 --- a/packages/mask/src/plugins/Trader/trader/uniswap/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/uniswap/useTradeCallback.ts @@ -152,31 +152,24 @@ export function useTradeCallback( ...(!value || /^0x0*$/.test(value) ? {} : { value }), ...gasConfig, }, - async (error, hash) => { - if (error) { - if ((error as any)?.code) { - const error_ = new Error( - (error as any)?.message === 'Unable to add more requests.' - ? 'Unable to add more requests.' - : 'Transaction rejected.', - ) - setTradeState({ - type: TransactionStateType.FAILED, - error: error_, - }) - reject(error_) - } else { - setTradeState({ - type: TransactionStateType.FAILED, - error: new Error(`Swap failed: ${swapErrorToUserReadableMessage(error)}`), - }) - } + async (error) => { + if (!error) return + if ((error as any).code) { + const error_ = new Error( + (error as any)?.message === 'Unable to add more requests.' + ? 'Unable to add more requests.' + : 'Transaction rejected.', + ) + setTradeState({ + type: TransactionStateType.FAILED, + error: error_, + }) + reject(error_) } else { setTradeState({ - type: TransactionStateType.HASH, - hash: hash, + type: TransactionStateType.FAILED, + error: new Error(`Swap failed: ${swapErrorToUserReadableMessage(error)}`), }) - resolve(hash) } }, ) @@ -186,6 +179,7 @@ export function useTradeCallback( no, receipt, }) + resolve(receipt.transactionHash) }) }) }, [web3, account, tradeParameters, gasConfig]) From 10f378525cf913bed78833651b1420f4d83520e5 Mon Sep 17 00:00:00 2001 From: unclebill Date: Tue, 29 Mar 2022 11:00:09 +0800 Subject: [PATCH 4/5] fixup! fix(dex): watch tx confirmation event --- .../trader/openocean/useTradeCallback.ts | 2 +- .../src/plugins/dHEDGE/UI/InvestDialog.tsx | 4 +-- .../plugins/dHEDGE/hooks/useInvestCallback.ts | 15 +++++----- .../hooks/useNativeTokenWrapperCallback.ts | 30 ++++++++++--------- .../evm/hooks/useTransactionCallback.ts | 8 ----- 5 files changed, 27 insertions(+), 32 deletions(-) diff --git a/packages/mask/src/plugins/Trader/trader/openocean/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/openocean/useTradeCallback.ts index 7084fdd1c0b4..902e54eaa9ce 100644 --- a/packages/mask/src/plugins/Trader/trader/openocean/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/openocean/useTradeCallback.ts @@ -64,7 +64,7 @@ export function useTradeCallback( return new Promise((resolve, reject) => { web3.eth .sendTransaction(config_, (error) => { - if (error) return + if (!error) return setTradeState({ type: TransactionStateType.FAILED, error, diff --git a/packages/mask/src/plugins/dHEDGE/UI/InvestDialog.tsx b/packages/mask/src/plugins/dHEDGE/UI/InvestDialog.tsx index 96e30a9465bd..42c4e66728d5 100644 --- a/packages/mask/src/plugins/dHEDGE/UI/InvestDialog.tsx +++ b/packages/mask/src/plugins/dHEDGE/UI/InvestDialog.tsx @@ -164,9 +164,9 @@ export function InvestDialog() { (ev) => { if (!ev.open) { retryLoadTokenBalance() - if (investState.type === TransactionStateType.HASH) onClose() + if (investState.type === TransactionStateType.CONFIRMED) onClose() } - if (investState.type === TransactionStateType.HASH) setRawAmount('') + if (investState.type === TransactionStateType.CONFIRMED) setRawAmount('') resetInvestCallback() }, [id, investState, retryLoadTokenBalance, retryLoadTokenBalance, onClose], diff --git a/packages/mask/src/plugins/dHEDGE/hooks/useInvestCallback.ts b/packages/mask/src/plugins/dHEDGE/hooks/useInvestCallback.ts index ab5f0b2a58dd..a957baa3dba7 100644 --- a/packages/mask/src/plugins/dHEDGE/hooks/useInvestCallback.ts +++ b/packages/mask/src/plugins/dHEDGE/hooks/useInvestCallback.ts @@ -66,13 +66,6 @@ export function useInvestCallback(pool: Pool | undefined, amount: string, token? ...config, gas: estimatedGas, }) - .on(TransactionEventType.TRANSACTION_HASH, (hash) => { - setInvestState({ - type: TransactionStateType.HASH, - hash, - }) - resolve(hash) - }) .on(TransactionEventType.ERROR, (error) => { setInvestState({ type: TransactionStateType.FAILED, @@ -80,6 +73,14 @@ export function useInvestCallback(pool: Pool | undefined, amount: string, token? }) reject(error) }) + .on(TransactionEventType.CONFIRMATION, (no, receipt) => { + setInvestState({ + type: TransactionStateType.CONFIRMED, + no, + receipt, + }) + resolve(receipt.transactionHash) + }) }) }, [pool, account, amount, token]) diff --git a/packages/web3-shared/evm/hooks/useNativeTokenWrapperCallback.ts b/packages/web3-shared/evm/hooks/useNativeTokenWrapperCallback.ts index 522cc4319931..965409a698b2 100644 --- a/packages/web3-shared/evm/hooks/useNativeTokenWrapperCallback.ts +++ b/packages/web3-shared/evm/hooks/useNativeTokenWrapperCallback.ts @@ -59,13 +59,6 @@ export function useNativeTokenWrapperCallback(chainId?: ChainId) { wrapperContract.methods .deposit() .send(config as PayableTx) - .on(TransactionEventType.TRANSACTION_HASH, (hash) => { - setTransactionState({ - type: TransactionStateType.HASH, - hash, - }) - resolve(hash) - }) .on(TransactionEventType.ERROR, (error) => { setTransactionState({ type: TransactionStateType.FAILED, @@ -73,6 +66,14 @@ export function useNativeTokenWrapperCallback(chainId?: ChainId) { }) reject(error) }) + .on(TransactionEventType.CONFIRMATION, (no, receipt) => { + setTransactionState({ + type: TransactionStateType.CONFIRMED, + no, + receipt, + }) + resolve(receipt.transactionHash) + }) }) }, [account, wrapperContract], @@ -136,13 +137,6 @@ export function useNativeTokenWrapperCallback(chainId?: ChainId) { wrapperContract.methods .withdraw(withdrawAmount) .send(config as NonPayableTx) - .on(TransactionEventType.TRANSACTION_HASH, (hash) => { - setTransactionState({ - type: TransactionStateType.HASH, - hash, - }) - resolve(hash) - }) .on(TransactionEventType.ERROR, (error) => { setTransactionState({ type: TransactionStateType.FAILED, @@ -150,6 +144,14 @@ export function useNativeTokenWrapperCallback(chainId?: ChainId) { }) reject(error) }) + .on(TransactionEventType.CONFIRMATION, (no, receipt) => { + setTransactionState({ + type: TransactionStateType.CONFIRMED, + no, + receipt, + }) + resolve(receipt.transactionHash) + }) }) }, [account, wrapperContract], diff --git a/packages/web3-shared/evm/hooks/useTransactionCallback.ts b/packages/web3-shared/evm/hooks/useTransactionCallback.ts index 7bb891671b27..9e9d8f26efd4 100644 --- a/packages/web3-shared/evm/hooks/useTransactionCallback.ts +++ b/packages/web3-shared/evm/hooks/useTransactionCallback.ts @@ -44,14 +44,6 @@ export function useTransactionCallback( return new Promise(async (resolve, reject) => { method .send(gasExpectedConfig) - .once(TransactionEventType.TRANSACTION_HASH, (hash) => { - if (type !== TransactionStateType.HASH) return - setState({ - type: TransactionStateType.HASH, - hash, - }) - resolve() - }) .once(TransactionEventType.RECEIPT, (receipt) => { if (type !== TransactionStateType.RECEIPT) return setState({ From 92f4af85683556cf57bb1510f474e8288ca3cbf1 Mon Sep 17 00:00:00 2001 From: unclebill Date: Thu, 31 Mar 2022 12:31:25 +0800 Subject: [PATCH 5/5] watafak --- .../mask/src/plugins/Trader/SNSAdaptor/trader/Trader.tsx | 2 +- .../src/social-network-adaptor/twitter.com/shared.ts | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/mask/src/plugins/Trader/SNSAdaptor/trader/Trader.tsx b/packages/mask/src/plugins/Trader/SNSAdaptor/trader/Trader.tsx index c3accaad1d32..9eabca029fdf 100644 --- a/packages/mask/src/plugins/Trader/SNSAdaptor/trader/Trader.tsx +++ b/packages/mask/src/plugins/Trader/SNSAdaptor/trader/Trader.tsx @@ -333,7 +333,7 @@ export function Trader(props: TraderProps) { shareText, state: tradeState, }) - }, [tradeState /* update tx dialog only if state changed */]) + }, [tradeState?.type /* update tx dialog only if state changed */]) // #endregion // #region swap callback diff --git a/packages/mask/src/social-network-adaptor/twitter.com/shared.ts b/packages/mask/src/social-network-adaptor/twitter.com/shared.ts index 1b1ce5795335..f971f7549c1b 100644 --- a/packages/mask/src/social-network-adaptor/twitter.com/shared.ts +++ b/packages/mask/src/social-network-adaptor/twitter.com/shared.ts @@ -36,7 +36,14 @@ export const twitterShared: SocialNetwork.Shared & SocialNetwork.Base = { height, screenX: window.screenX + (window.innerWidth - width) / 2, screenY: window.screenY + (window.innerHeight - height) / 2, - behaviors: { toolbar: true, status: true, resizable: true, scrollbars: true }, + opener: true, + referrer: true, + behaviors: { + toolbar: true, + status: true, + resizable: true, + scrollbars: true, + }, }) if (openedWindow === null) { location.assign(url)