From 949a1bfd6c9fcb63b19a110da112e09f9170f855 Mon Sep 17 00:00:00 2001 From: Aleka Cheung Date: Thu, 8 Feb 2024 15:00:04 -0500 Subject: [PATCH] avoid logging expected switch chain error --- src/constants/wallets.ts | 1 + src/lib/wallet/index.ts | 12 +++++++++- .../dialogs/OnboardingDialog/GenerateKeys.tsx | 22 ++++++++++++++----- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/constants/wallets.ts b/src/constants/wallets.ts index 43e80c9..5a4a909 100644 --- a/src/constants/wallets.ts +++ b/src/constants/wallets.ts @@ -40,6 +40,7 @@ export enum WalletErrorType { // General ChainMismatch, UserCanceled, + SwitchChainFailed, // Non-Deterministic NonDeterministicWallet, diff --git a/src/lib/wallet/index.ts b/src/lib/wallet/index.ts index ba11110..20f9e7d 100644 --- a/src/lib/wallet/index.ts +++ b/src/lib/wallet/index.ts @@ -92,6 +92,10 @@ export const getWalletErrorType = ({ error }: { error: Error }) => { return WalletErrorType.ChainMismatch; } + if (messageLower.includes('switch chain')) { + return WalletErrorType.SwitchChainFailed; + } + // ImToken - User canceled if (messageLower.includes('用户取消了操作')) { return WalletErrorType.UserCanceled; @@ -113,13 +117,18 @@ export const parseWalletError = ({ }) => { const walletErrorType = getWalletErrorType({ error }); let message; + let isErrorExpected; switch (walletErrorType) { case WalletErrorType.ChainMismatch: - case WalletErrorType.UserCanceled: { + case WalletErrorType.UserCanceled: + case WalletErrorType.SwitchChainFailed: { + isErrorExpected = true; + message = error.message; break; } default: { + isErrorExpected = false; message = stringGetter({ key: STRING_KEYS.SOMETHING_WENT_WRONG_WITH_MESSAGE, params: { @@ -132,5 +141,6 @@ export const parseWalletError = ({ return { walletErrorType, message, + isErrorExpected, }; }; diff --git a/src/views/dialogs/OnboardingDialog/GenerateKeys.tsx b/src/views/dialogs/OnboardingDialog/GenerateKeys.tsx index 4bc6a86..f830e43 100644 --- a/src/views/dialogs/OnboardingDialog/GenerateKeys.tsx +++ b/src/views/dialogs/OnboardingDialog/GenerateKeys.tsx @@ -44,7 +44,6 @@ export const GenerateKeys = ({ onKeysDerived = () => {}, }: ElementProps) => { const stringGetter = useStringGetter(); - const { isMobile } = useBreakpoints(); const [shouldRememberMe, setShouldRememberMe] = useState(false); @@ -66,17 +65,30 @@ export const GenerateKeys = ({ try { await matchNetwork?.(); + return true; } catch (error) { - const { message, walletErrorType } = parseWalletError({ error, stringGetter }); + const { message, walletErrorType, isErrorExpected } = parseWalletError({ + error, + stringGetter, + }); + + if (!isErrorExpected) { + log('GenerateKeys/switchNetwork', error, { walletErrorType }); + } if (message) { - log('GenerateKeys/switchNetwork', error, { walletErrorType }); setError(message); - throw error; } + + return false; } }; + const switchNetworkAndDeriveKeys = async () => { + const networkSwitched = await switchNetwork(); + if (networkSwitched) await deriveKeys(); + }; + // 2. Derive keys from EVM account const { getWalletFromEvmSignature } = useDydxClient(); const { getSubaccounts } = useAccounts(); @@ -231,7 +243,7 @@ export const GenerateKeys = ({ {!isMatchingNetwork ? (