From 2cb51255ee44ba49d1e2444f2d56433807dda81e Mon Sep 17 00:00:00 2001 From: Francisco Ramos Date: Fri, 9 Jun 2023 16:04:21 +0200 Subject: [PATCH] fix(bridge-ui): mobile issues (#13927) --- .../BridgeForm/AddTokenToWallet.svelte | 2 +- .../components/BridgeForm/BridgeForm.svelte | 12 ++- .../components/BridgeForm/SelectChain.svelte | 6 +- .../src/components/ChainDropdown.svelte | 4 +- .../src/components/Faucet/Faucet.svelte | 16 ++-- .../src/components/SwitchChainModal.svelte | 14 +-- .../Transactions/Transaction.svelte | 7 +- .../src/utils/injectedProvider.spec.ts | 88 +++++++++++++++++++ .../bridge-ui/src/utils/injectedProvider.ts | 52 +++++++++++ .../bridge-ui/src/utils/isMobileDevice.ts | 25 ++++++ .../bridge-ui/src/utils/mintERC20.spec.ts | 20 +---- packages/bridge-ui/src/utils/mintERC20.ts | 8 -- packages/bridge-ui/src/utils/rpcCall.spec.ts | 46 ---------- packages/bridge-ui/src/utils/rpcCall.ts | 48 ---------- .../bridge-ui/src/utils/selectChain.spec.ts | 83 ----------------- packages/bridge-ui/src/utils/selectChain.ts | 35 -------- .../bridge-ui/src/utils/switchNetwork.spec.ts | 60 +++++++++++++ packages/bridge-ui/src/utils/switchNetwork.ts | 43 +++++++++ packages/bridge-ui/src/wagmi/client.ts | 13 +-- packages/bridge-ui/src/wagmi/watcher.ts | 15 +++- 20 files changed, 321 insertions(+), 276 deletions(-) create mode 100644 packages/bridge-ui/src/utils/injectedProvider.spec.ts create mode 100644 packages/bridge-ui/src/utils/isMobileDevice.ts delete mode 100644 packages/bridge-ui/src/utils/rpcCall.spec.ts delete mode 100644 packages/bridge-ui/src/utils/rpcCall.ts delete mode 100644 packages/bridge-ui/src/utils/selectChain.spec.ts delete mode 100644 packages/bridge-ui/src/utils/selectChain.ts create mode 100644 packages/bridge-ui/src/utils/switchNetwork.spec.ts create mode 100644 packages/bridge-ui/src/utils/switchNetwork.ts diff --git a/packages/bridge-ui/src/components/BridgeForm/AddTokenToWallet.svelte b/packages/bridge-ui/src/components/BridgeForm/AddTokenToWallet.svelte index 66709224ee..96e7351104 100644 --- a/packages/bridge-ui/src/components/BridgeForm/AddTokenToWallet.svelte +++ b/packages/bridge-ui/src/components/BridgeForm/AddTokenToWallet.svelte @@ -2,7 +2,7 @@ import { L1_CHAIN_ID } from '../../constants/envVars'; import type { Token } from '../../domain/token'; import { token } from '../../store/token'; - import { errorCodes, rpcCall } from '../../utils/rpcCall'; + import { errorCodes, rpcCall } from '../../utils/injectedProvider'; import MetaMask from '../icons/MetaMask.svelte'; import { errorToast, warningToast } from '../NotificationToast.svelte'; diff --git a/packages/bridge-ui/src/components/BridgeForm/BridgeForm.svelte b/packages/bridge-ui/src/components/BridgeForm/BridgeForm.svelte index a1e329fe2d..63307fd804 100644 --- a/packages/bridge-ui/src/components/BridgeForm/BridgeForm.svelte +++ b/packages/bridge-ui/src/components/BridgeForm/BridgeForm.svelte @@ -21,9 +21,10 @@ pendingTransactions, transactions as transactionsStore, } from '../../store/transaction'; - import { isETH } from '../../token/tokens'; + import { isERC20, isETH } from '../../token/tokens'; import { checkIfTokenIsDeployedCrossChain } from '../../utils/checkIfTokenIsDeployedCrossChain'; import { getAddressForToken } from '../../utils/getAddressForToken'; + import { hasInjectedProvider } from '../../utils/injectedProvider'; import { isOnCorrectChain } from '../../utils/isOnCorrectChain'; import { getLogger } from '../../utils/logger'; import { truncateString } from '../../utils/truncateString'; @@ -138,7 +139,9 @@ const parsedAmount = ethers.utils.parseUnits(amount, token.decimals); log( - `Checking allowance for token ${token.symbol} and amount ${parsedAmount}`, + `Checking allowance for token ${ + token.symbol + } and amount ${parsedAmount.toString()}`, ); const isRequired = await $activeBridge.requiresAllowance({ @@ -277,7 +280,7 @@ const hasEnoughBalance = balanceAvailableForTx.gte(requiredGas); log( - `Is required gas ${requiredGas} less than available balance ${balanceAvailableForTx}? ${hasEnoughBalance}`, + `Is required gas ${requiredGas.toString()} less than available balance ${balanceAvailableForTx.toString()}? ${hasEnoughBalance}`, ); return hasEnoughBalance; @@ -514,7 +517,8 @@ } function toggleShowAddTokenToWallet(token: Token) { - showAddToWallet = token.symbol !== 'ETH'; + // If there is no injected provider we can't add the token to the wallet + showAddToWallet = isERC20(token) && hasInjectedProvider(); } $: updateTokenBalance($signer, $token).finally(() => { diff --git a/packages/bridge-ui/src/components/BridgeForm/SelectChain.svelte b/packages/bridge-ui/src/components/BridgeForm/SelectChain.svelte index 5d73272635..8615b04e7c 100644 --- a/packages/bridge-ui/src/components/BridgeForm/SelectChain.svelte +++ b/packages/bridge-ui/src/components/BridgeForm/SelectChain.svelte @@ -3,10 +3,10 @@ import { ArrowRight } from 'svelte-heros-v2'; import { mainnetChain, taikoChain } from '../../chain/chains'; - import { destChain,srcChain } from '../../store/chain'; + import { destChain, srcChain } from '../../store/chain'; import { signer } from '../../store/signer'; import { pendingTransactions } from '../../store/transaction'; - import { selectChain } from '../../utils/selectChain'; + import { switchNetwork } from '../../utils/switchNetwork'; import { errorToast, successToast, @@ -22,7 +22,7 @@ const chain = $srcChain === mainnetChain ? taikoChain : mainnetChain; try { - await selectChain(chain); + await switchNetwork(chain.id); successToast('Successfully changed chain.'); } catch (error) { console.error(error); diff --git a/packages/bridge-ui/src/components/ChainDropdown.svelte b/packages/bridge-ui/src/components/ChainDropdown.svelte index 4ec10756cc..4075470bcb 100644 --- a/packages/bridge-ui/src/components/ChainDropdown.svelte +++ b/packages/bridge-ui/src/components/ChainDropdown.svelte @@ -7,7 +7,7 @@ import { srcChain } from '../store/chain'; import { signer } from '../store/signer'; import { pendingTransactions } from '../store/transaction'; - import { selectChain } from '../utils/selectChain'; + import { switchNetwork } from '../utils/switchNetwork'; import { errorToast, successToast, @@ -26,7 +26,7 @@ } try { - await selectChain(chain); + await switchNetwork(chain.id); successToast('Successfully changed chain.'); } catch (error) { console.error(error); diff --git a/packages/bridge-ui/src/components/Faucet/Faucet.svelte b/packages/bridge-ui/src/components/Faucet/Faucet.svelte index 1292ef652c..282f9e0982 100644 --- a/packages/bridge-ui/src/components/Faucet/Faucet.svelte +++ b/packages/bridge-ui/src/components/Faucet/Faucet.svelte @@ -2,7 +2,6 @@ import { UserRejectedRequestError } from '@wagmi/core'; import { ethers, type Signer } from 'ethers'; - import { chains } from '../../chain/chains'; import { L1_CHAIN_ID, L1_CHAIN_NAME, @@ -19,7 +18,7 @@ import { getIsMintedWithEstimation } from '../../utils/getIsMintedWithEstimation'; import { getLogger } from '../../utils/logger'; import { mintERC20 } from '../../utils/mintERC20'; - import { selectChain } from '../../utils/selectChain'; + import { switchNetwork } from '../../utils/switchNetwork'; import Button from '../Button.svelte'; import Eth from '../icons/ETH.svelte'; import Tko from '../icons/TKO.svelte'; @@ -91,7 +90,12 @@ loading = true; try { - const tx = await mintERC20(srcChain.id, _token, signer); + // If we're not already, switch to L1 + if (srcChain.id !== L1_CHAIN_ID) { + await switchNetwork(L1_CHAIN_ID); + } + + const tx = await mintERC20(_token, signer); successToast(`Transaction sent to mint ${_token.symbol} tokens.`); @@ -124,11 +128,11 @@ } } - async function switchNetwork() { + async function switchNetworkToL1() { switchingNetwork = true; try { - await selectChain(chains[L1_CHAIN_ID]); + await switchNetwork(L1_CHAIN_ID); } catch (error) { console.error(error); @@ -171,7 +175,7 @@