Skip to content

Commit

Permalink
fix: bugfix for send transaction and estimate gas (#10415)
Browse files Browse the repository at this point in the history
* fix: bugfix for send transaction and estimate gas

* fix: bugfix for swap
  • Loading branch information
nuanyang233 committed Aug 15, 2023
1 parent 95a2f59 commit 8c9724d
Show file tree
Hide file tree
Showing 18 changed files with 76 additions and 65 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ export function useSetupGuideStepInfo(destinedPersona: PersonaIdentifier) {
),
),
)

if (!personaConnectedProfile) return composeInfo(SetupGuideStep.FindUsername, 'doing')

// NextID is available on this site.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,8 @@ export const ConnectProviderModal = memo<ActionModalBaseProps>(function ConnectP
})
}

const result = await timeout(connect(), 30 * 1000)
// Fortmatic takes extra time because it requires the user to enter an account and password, a verification code
const result = await timeout(connect(), providerType === ProviderType.Fortmatic ? 5 * 60 * 1000 : 30 * 1000)
if (!result) return
navigate(PopupRoutes.ConnectWallet, {
replace: true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,7 @@ export const ConnectSocialAccountModal = memo<ActionModalBaseProps>(function Con
const handleConnect = useCallback(
async (networkIdentifier: EnhanceableSite) => {
if (currentPersona) {
await Services.SiteAdaptor.connectSite(
currentPersona.identifier,
networkIdentifier,
'local',
undefined,
false,
)
await Services.SiteAdaptor.connectSite(currentPersona.identifier, networkIdentifier, 'local', undefined)
}
},
[currentPersona],
Expand Down
16 changes: 12 additions & 4 deletions packages/mask/src/extension/popups/pages/Personas/Logout/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ const useStyles = makeStyles()((theme) => ({
borderRadius: 8,
padding: theme.spacing(1.5),
display: 'flex',
alignItems: 'center',
columnGap: theme.spacing(1),
marginBottom: theme.spacing(1.5),
},
Expand Down Expand Up @@ -98,7 +99,7 @@ const Logout = memo(() => {
showSnackbar(t('popups_log_out_successfully'))
navigate(PopupRoutes.Personas, { replace: true })
} catch {
showSnackbar(t('popups_log_out_failed'))
showSnackbar(t('popups_log_out_failed'), { variant: 'error' })
}
}, [currentPersona, Provider, wallet, wallets, smartPayChainId, manageWallets.length])

Expand Down Expand Up @@ -153,7 +154,7 @@ export const LogoutUI = memo<LogoutUIProps>(
useTitle(t('popups_log_out'))

const onConfirm = useCallback(async () => {
if (!backupPassword) {
if (!backupPassword && !!manageWallets.length) {
modalNavigate(PopupModalRoutes.SetBackupPassword)
return
}
Expand All @@ -171,7 +172,10 @@ export const LogoutUI = memo<LogoutUIProps>(
const disabled = useMemo(() => {
if (loading || error || paymentPasswordError) return true
if (backupPassword) return !password.length
if (manageWallets.length && hasPassword) return !paymentPassword.length
if (manageWallets.length) {
if (!backupPassword) return false
if (hasPassword) return !paymentPassword.length
}
return false
}, [
loading,
Expand Down Expand Up @@ -204,8 +208,11 @@ export const LogoutUI = memo<LogoutUIProps>(
<Box>
<Typography fontWeight={700}>{x.name}</Typography>
<Typography
marginTop={0.5}
color={theme.palette.maskColor.second}
fontWeight={700}
fontSize={10}
lineHeight="10px"
display="flex"
alignItems="center">
{formatEthereumAddress(x.address, 4)}
Expand All @@ -216,6 +223,7 @@ export const LogoutUI = memo<LogoutUIProps>(
height: 12,
color: theme.palette.maskColor.main,
display: 'flex',
marginLeft: 4,
}}
href={ExplorerResolver.addressLink(chainId, x.address)}
target="_blank"
Expand Down Expand Up @@ -290,7 +298,7 @@ export const LogoutUI = memo<LogoutUIProps>(
fullWidth
onClick={onConfirm}
disabled={disabled}>
{backupPassword ? t('popups_log_out') : t('backup')}
{backupPassword && manageWallets.length ? t('popups_log_out') : t('backup')}
</ActionButton>
</BottomController>
</Box>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import {
type GasConfig,
PayloadEditor,
formatEthereumAddress,
addGasMargin,
ChainId,
} from '@masknet/web3-shared-evm'
import { toHex, toUtf8 } from 'web3-utils'
Expand All @@ -28,7 +27,6 @@ import { useUpdateEffect } from '@react-hookz/web'
import { UnlockERC20Token } from '../../../components/UnlockERC20Token/index.js'
import urlcat from 'urlcat'
import { compact, mapKeys, omit } from 'lodash-es'
import { BigNumber } from 'bignumber.js'

const useStyles = makeStyles()((theme) => ({
left: {
Expand Down Expand Up @@ -192,13 +190,6 @@ const Interaction = memo(function Interaction() {
return x
}

const gas = toHex(
BigNumber.max(
toHex(addGasMargin(gasConfig?.gas ?? x.gas).toFixed()),
chainId === ChainId.Optimism ? 25000 : 21000,
).toFixed(),
)

return {
...x,
...(gasConfig
Expand All @@ -207,7 +198,6 @@ const Interaction = memo(function Interaction() {
return toHex(value)
})
: {}),
gas,
chainId: toHex(x.chainId),
nonce: toHex(x.nonce),
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import { TokenPicker } from '../../../components/index.js'
import { useTokenParams } from '../../../hook/index.js'
import { ChooseTokenModal } from '../../../modals/modals.js'
import { useDefaultGasConfig } from './useDefaultGasConfig.js'
import { omit } from 'lodash-es'

const useStyles = makeStyles()((theme) => ({
asset: {
Expand Down Expand Up @@ -145,7 +146,7 @@ export const FungibleTokenSection = memo(function FungibleTokenSection() {
if (!recipient || isZero(totalAmount) || !token?.decimals) return
try {
await Web3.transferFungibleToken(address, recipient, totalAmount, '', {
overrides: gasConfig,
overrides: omit(gasConfig, 'gas'),
paymentToken: paymentAddress,
chainId,
gasOptionType: gasConfig?.gasOptionType,
Expand Down
10 changes: 6 additions & 4 deletions packages/plugins/Trader/src/trader/useBalancer.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { useMemo } from 'react'
import { TradeProvider } from '@masknet/public-api'
import type { Web3Helper } from '@masknet/web3-helpers'
import { useChainContext, useCustomBlockBeatRetry } from '@masknet/web3-hooks-base'
import { useChainContext, useCustomBlockBeatRetry, useNetwork } from '@masknet/web3-hooks-base'
import { NetworkPluginID } from '@masknet/shared-base'
import { Balancer } from '@masknet/web3-providers'
import type { ChainId, NetworkType } from '@masknet/web3-shared-evm'
Expand All @@ -17,18 +17,20 @@ export function useBalancer(
temporarySlippage?: number,
isNativeTokenWrapper?: boolean,
) {
const { chainId, account, networkType } = useChainContext()
const { chainId, account } = useChainContext()
const network = useNetwork()
const slippageSetting = useSlippageTolerance()

const slippage = useMemo(() => {
return temporarySlippage ? temporarySlippage : slippageSetting
}, [temporarySlippage, slippageSetting])

const provider = useMemo(() => {
const providers = getEVMAvailableTraderProviders(networkType as NetworkType)
if (!network) return
const providers = getEVMAvailableTraderProviders(network.type as NetworkType)
if (!providers.includes(TradeProvider.BALANCER)) return
return new Balancer()
}, [networkType])
}, [network])
return useCustomBlockBeatRetry<NetworkPluginID.PLUGIN_EVM, TraderAPI.TradeInfo | undefined | null>(
NetworkPluginID.PLUGIN_EVM,
async () => {
Expand Down
10 changes: 6 additions & 4 deletions packages/plugins/Trader/src/trader/useBancor.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { useMemo } from 'react'
import { TradeProvider } from '@masknet/public-api'
import type { Web3Helper } from '@masknet/web3-helpers'
import { useChainContext, useCustomBlockBeatRetry } from '@masknet/web3-hooks-base'
import { useChainContext, useCustomBlockBeatRetry, useNetwork } from '@masknet/web3-hooks-base'
import { NetworkPluginID } from '@masknet/shared-base'
import { Bancor } from '@masknet/web3-providers'
import type { TraderAPI } from '@masknet/web3-providers/types'
Expand All @@ -17,18 +17,20 @@ export function useBancor(
temporarySlippage?: number,
isNativeTokenWrapper?: boolean,
) {
const { chainId, account, networkType } = useChainContext()
const { chainId, account } = useChainContext()
const network = useNetwork()
const slippageSetting = useSlippageTolerance()

const slippage = useMemo(() => {
return temporarySlippage ? temporarySlippage : slippageSetting
}, [temporarySlippage, slippageSetting])

const provider = useMemo(() => {
const providers = getEVMAvailableTraderProviders(networkType as NetworkType)
if (!network) return
const providers = getEVMAvailableTraderProviders(network.type as NetworkType)
if (!providers.includes(TradeProvider.BANCOR)) return
return new Bancor()
}, [networkType])
}, [network])
return useCustomBlockBeatRetry<NetworkPluginID.PLUGIN_EVM, TraderAPI.TradeInfo | undefined | null>(
NetworkPluginID.PLUGIN_EVM,
async () => {
Expand Down
11 changes: 7 additions & 4 deletions packages/plugins/Trader/src/trader/useOpenOcean.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { useMemo } from 'react'
import { TradeProvider } from '@masknet/public-api'
import type { Web3Helper } from '@masknet/web3-helpers'
import { useChainContext, useCustomBlockBeatRetry } from '@masknet/web3-hooks-base'
import { useChainContext, useCustomBlockBeatRetry, useNetwork } from '@masknet/web3-hooks-base'
import { NetworkPluginID } from '@masknet/shared-base'
import { OpenOcean } from '@masknet/web3-providers'
import type { ChainId, NetworkType } from '@masknet/web3-shared-evm'
Expand All @@ -17,18 +17,21 @@ export function useOpenOcean(
temporarySlippage?: number,
isNativeTokenWrapper?: boolean,
) {
const { chainId, account, networkType } = useChainContext()
const { chainId, account } = useChainContext()
const network = useNetwork()
const slippageSetting = useSlippageTolerance()

const slippage = useMemo(() => {
return temporarySlippage ? temporarySlippage : slippageSetting
}, [temporarySlippage, slippageSetting])

const provider = useMemo(() => {
const providers = getEVMAvailableTraderProviders(networkType as NetworkType)
if (!network) return
const providers = getEVMAvailableTraderProviders(network.type as NetworkType)

if (!providers.includes(TradeProvider.OPENOCEAN)) return
return new OpenOcean()
}, [networkType])
}, [network])
return useCustomBlockBeatRetry<NetworkPluginID.PLUGIN_EVM, TraderAPI.TradeInfo | undefined | null>(
NetworkPluginID.PLUGIN_EVM,
async () => {
Expand Down
10 changes: 6 additions & 4 deletions packages/plugins/Trader/src/trader/useUniSwapV3Like.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { useMemo } from 'react'
import { TradeProvider } from '@masknet/public-api'
import type { Web3Helper } from '@masknet/web3-helpers'
import { useChainContext, useCustomBlockBeatRetry } from '@masknet/web3-hooks-base'
import { useChainContext, useCustomBlockBeatRetry, useNetwork } from '@masknet/web3-hooks-base'
import { NetworkPluginID } from '@masknet/shared-base'
import { UniSwapV3Like } from '@masknet/web3-providers'
import type { ChainId, NetworkType } from '@masknet/web3-shared-evm'
Expand All @@ -17,18 +17,20 @@ export function useUniswapV3Like(
temporarySlippage?: number,
isNativeTokenWrapper?: boolean,
) {
const { chainId, account, networkType } = useChainContext<NetworkPluginID.PLUGIN_EVM>()
const { chainId, account } = useChainContext<NetworkPluginID.PLUGIN_EVM>()
const network = useNetwork()
const slippageSetting = useSlippageTolerance()

const slippage = useMemo(() => {
return temporarySlippage ? temporarySlippage : slippageSetting
}, [temporarySlippage, slippageSetting])

const provider = useMemo(() => {
const providers = getEVMAvailableTraderProviders(networkType as NetworkType)
if (!network) return
const providers = getEVMAvailableTraderProviders(network.type as NetworkType)
if (!providers.includes(TradeProvider.UNISWAP_V3)) return
return new UniSwapV3Like()
}, [networkType])
}, [network])
return useCustomBlockBeatRetry<NetworkPluginID.PLUGIN_EVM, TraderAPI.TradeInfo | undefined | null>(
NetworkPluginID.PLUGIN_EVM,
async () => {
Expand Down
13 changes: 7 additions & 6 deletions packages/plugins/Trader/src/trader/useUniswapV2Like.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
import { useMemo } from 'react'
import { type TradeProvider } from '@masknet/public-api'
import type { Web3Helper } from '@masknet/web3-helpers'
import { useChainContext, useCustomBlockBeatRetry } from '@masknet/web3-hooks-base'
import { useChainContext, useCustomBlockBeatRetry, useNetwork } from '@masknet/web3-hooks-base'
import { NetworkPluginID } from '@masknet/shared-base'
import { UniSwapV2Like } from '@masknet/web3-providers'
import type { ChainId, NetworkType } from '@masknet/web3-shared-evm'
import type { TraderAPI } from '@masknet/web3-providers/types'
import { useSlippageTolerance } from './useSlippageTolerance.js'
import { getEVMAvailableTraderProviders } from '../utils.js'
import { BLOCK_TIME_SCALE } from '../constants/trader.js'

export function useUniswapV2Like(
traderProvider: TradeProvider,
Expand All @@ -19,18 +18,20 @@ export function useUniswapV2Like(
temporarySlippage?: number,
isNativeTokenWrapper?: boolean,
) {
const { chainId, account, networkType } = useChainContext<NetworkPluginID.PLUGIN_EVM>()
const { chainId, account } = useChainContext<NetworkPluginID.PLUGIN_EVM>()
const network = useNetwork()
const slippageSetting = useSlippageTolerance()

const slippage = useMemo(() => {
return temporarySlippage ? temporarySlippage : slippageSetting
}, [temporarySlippage, slippageSetting])

const provider = useMemo(() => {
const providers = getEVMAvailableTraderProviders(networkType as NetworkType)
if (!network) return
const providers = getEVMAvailableTraderProviders(network.type as NetworkType)
if (!providers.includes(traderProvider)) return
return new UniSwapV2Like(traderProvider)
}, [traderProvider, networkType])
}, [traderProvider, network])
return useCustomBlockBeatRetry<NetworkPluginID.PLUGIN_EVM, TraderAPI.TradeInfo | undefined | null>(
NetworkPluginID.PLUGIN_EVM,
async () => {
Expand All @@ -40,6 +41,6 @@ export function useUniswapV2Like(
: provider.getTradeInfo(chainId as ChainId, account, inputAmount_, slippage, inputToken, outputToken)
},
[inputAmount_, isNativeTokenWrapper, chainId, account, provider, inputToken, outputToken],
BLOCK_TIME_SCALE[chainId],
scale,
)
}
10 changes: 6 additions & 4 deletions packages/plugins/Trader/src/trader/useZrx.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { useMemo } from 'react'
import { TradeProvider } from '@masknet/public-api'
import type { Web3Helper } from '@masknet/web3-helpers'
import { useChainContext, useCustomBlockBeatRetry } from '@masknet/web3-hooks-base'
import { useChainContext, useCustomBlockBeatRetry, useNetwork } from '@masknet/web3-hooks-base'
import { NetworkPluginID } from '@masknet/shared-base'
import { Zrx } from '@masknet/web3-providers'
import type { ChainId, NetworkType } from '@masknet/web3-shared-evm'
Expand All @@ -17,18 +17,20 @@ export function useZrx(
temporarySlippage?: number,
isNativeTokenWrapper?: boolean,
) {
const { chainId, account, networkType } = useChainContext<NetworkPluginID.PLUGIN_EVM>()
const { chainId, account } = useChainContext<NetworkPluginID.PLUGIN_EVM>()
const network = useNetwork()
const slippageSetting = useSlippageTolerance()

const slippage = useMemo(() => {
return temporarySlippage ? temporarySlippage : slippageSetting
}, [temporarySlippage, slippageSetting])

const provider = useMemo(() => {
const providers = getEVMAvailableTraderProviders(networkType as NetworkType)
if (!network) return
const providers = getEVMAvailableTraderProviders(network.type as NetworkType)
if (!providers.includes(TradeProvider.ZRX)) return
return new Zrx()
}, [networkType])
}, [network])
return useCustomBlockBeatRetry<NetworkPluginID.PLUGIN_EVM, TraderAPI.TradeInfo | undefined | null>(
NetworkPluginID.PLUGIN_EVM,
async () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { first } from 'lodash-es'
import { first, omit } from 'lodash-es'
import type Web3 from 'web3'
import { numberToHex, toHex, toNumber } from 'web3-utils'
import type { Account, ECKeyIdentifier, Proof, UpdatableWallet, Wallet } from '@masknet/shared-base'
Expand Down Expand Up @@ -678,7 +678,7 @@ export class ConnectionReadonlyAPI
from: options.account,
chainId: options.chainId,
...transaction,
}).fill(options.overrides),
}).fill(omit(options.overrides, ['gas', 'gasPrice', 'maxPriorityFeePerGas', 'maxFeePerGas'])),
],
})
} catch {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ export class MaskWalletProvider
await super.removeWallets(wallets)
for (const wallet of wallets) {
if (isSameAddress(this.hostedAccount, wallet.address)) await this.walletStorage?.account.setValue('')
await this.context?.removeWallet(wallet.address)
if (!wallet.owner) await this.context?.removeWallet(wallet.address)
}
}

Expand Down

0 comments on commit 8c9724d

Please sign in to comment.