diff --git a/src/background/controller/wallet.ts b/src/background/controller/wallet.ts index 1e4e7b8e..ac438220 100644 --- a/src/background/controller/wallet.ts +++ b/src/background/controller/wallet.ts @@ -1636,8 +1636,20 @@ export class WalletController extends BaseController { return this.getTotalBalanceCached.isExpired(address); }; - updateAddressBalanceCache = (address: string, balance: string) => { - preferenceService.updateAddressUSDValueCache(address, Number(balance)); + updateAddressBalanceCache = async (address: string, balance: string) => { + let totalBalance = this.getAddressCacheBalance(address); + + // if not in cache, fetch from openapi + if (!totalBalance) { + totalBalance = await openapiService.getTotalBalance(address); + } + // update balance + preferenceService.updateBalanceAboutCache(address, { + totalBalance: { + ...totalBalance, + total_usd_value: Number(balance), + }, + }); }; getAddressCacheBalance = (address: string | undefined, isTestnet = false) => { if (!address) return null; diff --git a/src/background/service/preference.ts b/src/background/service/preference.ts index a2f6a329..205bfa1e 100644 --- a/src/background/service/preference.ts +++ b/src/background/service/preference.ts @@ -467,18 +467,6 @@ class PreferenceService { getPopupOpen = () => this.popupOpen; - updateAddressUSDValueCache = (address: string, balance: number) => { - const balanceMap = this.store.balanceMap || {}; - const before = this.store.balanceMap[address.toLowerCase()]; - this.store.balanceMap = { - ...balanceMap, - [address.toLowerCase()]: { - total_usd_value: balance, - chain_list: before.chain_list || [], - }, - }; - }; - updateTestnetAddressBalance = ( address: string, data: TotalBalanceResponse