From 05080b578729cc2f797916b0ef0c96483ef2c2a5 Mon Sep 17 00:00:00 2001 From: Simon Heys Date: Mon, 27 Mar 2023 12:25:04 +0100 Subject: [PATCH] fix: ensure sparse account object --- .../extension/src/ui/services/backgroundAccounts.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/extension/src/ui/services/backgroundAccounts.ts b/packages/extension/src/ui/services/backgroundAccounts.ts index 3e664e3f2..f57202a47 100644 --- a/packages/extension/src/ui/services/backgroundAccounts.ts +++ b/packages/extension/src/ui/services/backgroundAccounts.ts @@ -5,6 +5,7 @@ import { WalletAccount, } from "../../shared/wallet.model" import { walletStore } from "../../shared/wallet/walletStore" +import { Account } from "../features/accounts/Account" import { decryptFromBackground, generateEncryptedSecret } from "./crypto" export const createNewAccount = async (networkId: string) => { @@ -48,9 +49,19 @@ export const accountsOnNetwork = ( networkId: string, ) => accounts.filter((account) => account.networkId === networkId) +function isNotBaseWalletAccount( + account?: BaseWalletAccount, +): account is Account { + return Boolean(account && "toBaseWalletAccount" in account) +} + export const selectAccount = async ( account?: BaseWalletAccount, ): Promise => { + /** coerce to sparse BaseWalletAccount to prevent DataCloneError from full Account class instance on FireFox */ + if (isNotBaseWalletAccount(account)) { + account = account.toBaseWalletAccount() + } await walletStore.set("selected", account ?? null) return connectAccount(account)