diff --git a/packages/mask/src/web3/context.ts b/packages/mask/src/web3/context.ts index 32ccac2b9982..3c3489b05712 100644 --- a/packages/mask/src/web3/context.ts +++ b/packages/mask/src/web3/context.ts @@ -30,7 +30,7 @@ import { } from '../plugins/Wallet/settings' import { WalletMessages, WalletRPC } from '../plugins/Wallet/messages' import type { InternalSettings } from '../settings/createSettings' -import { Flags } from '../../shared' +import { Flags, isAndroidApp } from '../../shared' import Services from '../extension/service' import { getProxyWebsocketInstance } from '@masknet/web3-shared-base' import { TokenList, Twitter } from '@masknet/web3-providers' @@ -225,16 +225,25 @@ function createSubscriptionFromAsync( trigger() } return { - getCurrentValue: () => { - if (isLoading) throw init - return state - }, + getCurrentValue: isAndroidApp + ? () => state + : () => { + if (isLoading) throw init + return state + }, subscribe: (sub) => { const a = subscribe(sub) - const b = onChange(() => { - beats += 1 - if (beats === 1) flush() - }) + const b = onChange( + isAndroidApp + ? async () => { + beats += 1 + if (beats === 1) await flush() + } + : () => { + beats += 1 + if (beats === 1) flush() + }, + ) return () => void [a(), b()] }, }