From 824ef4c58482f25336787e2b4e0ad162c232b703 Mon Sep 17 00:00:00 2001 From: Jack Works Date: Fri, 25 Feb 2022 14:37:12 +0800 Subject: [PATCH 1/4] refactor: move the helper service --- .../services/helper/deprecated-storage.ts} | 0 .../mask/background/services/helper/fetch.ts | 3 ++- .../mask/background/services/helper/index.ts | 6 ++++++ .../services/helper/nextID.ts} | 0 .../services/helper/popup-opener.ts} | 21 ++++++++++++------- .../services/helper/request-permission.ts} | 5 ++--- .../services/helper/short-link-resolver.ts} | 0 packages/mask/background/services/setup.ts | 1 + packages/mask/background/services/types.ts | 2 ++ packages/mask/shared/definitions/routes.ts | 11 ++++++++++ packages/mask/shared/index.ts | 1 - .../EthereumServices/providers/MaskWallet.ts | 2 +- .../EthereumServices/request.ts | 2 +- .../IdentityServices/sign.ts | 2 +- .../background-script/WelcomeService.ts | 3 +-- .../popups/RequestPermission/utils.ts | 10 --------- .../ThirdPartyRequestPermission/utils.ts | 4 ++-- packages/mask/src/extension/popups/index.tsx | 8 +++---- .../mask/src/extension/popups/utils/index.ts | 4 ---- packages/mask/src/extension/service.ts | 4 ++-- packages/mask/src/plugins/Profile/services.ts | 3 +-- .../mask/src/plugins/Wallet/Worker/index.ts | 13 +++++++++++- .../mask/src/plugins/Wallet/services/cloud.ts | 5 +---- .../mask/src/plugins/Wallet/services/rpc.ts | 2 +- packages/mask/src/settings/settings.ts | 4 ---- packages/shared-base/src/Messages/Mask.ts | 2 ++ 26 files changed, 65 insertions(+), 53 deletions(-) rename packages/mask/{src/extension/background-script/HelperService/storage.ts => background/services/helper/deprecated-storage.ts} (100%) create mode 100644 packages/mask/background/services/helper/index.ts rename packages/mask/{src/extension/background-script/HelperService/nextId.ts => background/services/helper/nextID.ts} (100%) rename packages/mask/{src/extension/background-script/HelperService/index.ts => background/services/helper/popup-opener.ts} (81%) rename packages/mask/{src/extension/background-script/HelperService/extensionPermission.ts => background/services/helper/request-permission.ts} (88%) rename packages/mask/{shared/helpers/resolve-t.co.ts => background/services/helper/short-link-resolver.ts} (100%) create mode 100644 packages/mask/shared/definitions/routes.ts delete mode 100644 packages/mask/src/extension/popups/RequestPermission/utils.ts delete mode 100644 packages/mask/src/extension/popups/utils/index.ts diff --git a/packages/mask/src/extension/background-script/HelperService/storage.ts b/packages/mask/background/services/helper/deprecated-storage.ts similarity index 100% rename from packages/mask/src/extension/background-script/HelperService/storage.ts rename to packages/mask/background/services/helper/deprecated-storage.ts diff --git a/packages/mask/background/services/helper/fetch.ts b/packages/mask/background/services/helper/fetch.ts index 54e31abc1701..99939116dae5 100644 --- a/packages/mask/background/services/helper/fetch.ts +++ b/packages/mask/background/services/helper/fetch.ts @@ -3,7 +3,8 @@ export async function fetch(url: string) { return res.blob() } -export async function fetchJSON(url: string): Promise { +/** @deprecated */ +export async function fetchJSON(url: string): Promise { const res = await globalThis.fetch(url) return res.json() } diff --git a/packages/mask/background/services/helper/index.ts b/packages/mask/background/services/helper/index.ts new file mode 100644 index 000000000000..6f4810cfab58 --- /dev/null +++ b/packages/mask/background/services/helper/index.ts @@ -0,0 +1,6 @@ +export { fetch, fetchJSON } from './fetch' +export { resolveTCOLink } from './short-link-resolver' +export { openPopupWindow, removePopupWindow } from './popup-opener' +export { __deprecated__getStorage, __deprecated__setStorage } from './deprecated-storage' +export { queryExtensionPermission, requestExtensionPermission } from './request-permission' +export { createPersonaPayload, queryExistedBinding, bindProof } from './nextID' diff --git a/packages/mask/src/extension/background-script/HelperService/nextId.ts b/packages/mask/background/services/helper/nextID.ts similarity index 100% rename from packages/mask/src/extension/background-script/HelperService/nextId.ts rename to packages/mask/background/services/helper/nextID.ts diff --git a/packages/mask/src/extension/background-script/HelperService/index.ts b/packages/mask/background/services/helper/popup-opener.ts similarity index 81% rename from packages/mask/src/extension/background-script/HelperService/index.ts rename to packages/mask/background/services/helper/popup-opener.ts index 3dbb1d6e3d54..d400da34691a 100644 --- a/packages/mask/src/extension/background-script/HelperService/index.ts +++ b/packages/mask/background/services/helper/popup-opener.ts @@ -1,15 +1,20 @@ import { PopupRoutes } from '@masknet/shared-base' +import { ValueRef } from '@dimensiondev/holoflows-kit' import urlcat from 'urlcat' -import { currentPopupWindowId } from '../../../settings/settings' -import { isLocked } from '../../../plugins/Wallet/services' +import { MaskMessages } from '../../../shared' -export { __deprecated__getStorage, __deprecated__setStorage } from './storage' -export { resolveTCOLink } from '../../../../shared' -export { fetch, fetchJSON } from '../../../../background/services/helper/fetch' -export { requestExtensionPermission, queryExtensionPermission } from './extensionPermission' -export { createPersonaPayload, queryExistedBinding, bindProof } from './nextId' -export { fromHex, toBase64URL } from '@masknet/shared-base' +const currentPopupWindowId = new ValueRef(-1) +function isLocked() { + return new Promise((resolve) => { + const off = MaskMessages.events.wallet_is_locked.on(([type, value]) => { + if (type === 'request') return + off() + resolve(value) + }) + MaskMessages.events.wallet_is_locked.sendToLocal(['request']) + }) +} export async function openPopupWindow(route?: PopupRoutes, params?: Record) { const windows = await browser.windows.getAll() const popup = windows.find((win) => win && win.type === 'popup' && win.id === currentPopupWindowId.value) diff --git a/packages/mask/src/extension/background-script/HelperService/extensionPermission.ts b/packages/mask/background/services/helper/request-permission.ts similarity index 88% rename from packages/mask/src/extension/background-script/HelperService/extensionPermission.ts rename to packages/mask/background/services/helper/request-permission.ts index a2265be42e7f..f514cf8dfaec 100644 --- a/packages/mask/src/extension/background-script/HelperService/extensionPermission.ts +++ b/packages/mask/background/services/helper/request-permission.ts @@ -1,5 +1,4 @@ -import { constructRequestPermissionURL } from '../../popups' - +import { getPermissionRequestURL } from '../../../shared/definitions/routes' export async function requestExtensionPermission(permission: browser.permissions.Permissions) { if (await browser.permissions.contains(permission)) return true try { @@ -12,7 +11,7 @@ export async function requestExtensionPermission(permission: browser.permissions height: 600, width: 350, type: 'popup', - url: constructRequestPermissionURL(permission), + url: getPermissionRequestURL(permission), }) return new Promise((resolve) => { browser.windows.onRemoved.addListener(function listener(windowID: number) { diff --git a/packages/mask/shared/helpers/resolve-t.co.ts b/packages/mask/background/services/helper/short-link-resolver.ts similarity index 100% rename from packages/mask/shared/helpers/resolve-t.co.ts rename to packages/mask/background/services/helper/short-link-resolver.ts diff --git a/packages/mask/background/services/setup.ts b/packages/mask/background/services/setup.ts index 3c4ab57ae7e3..962f72e25936 100644 --- a/packages/mask/background/services/setup.ts +++ b/packages/mask/background/services/setup.ts @@ -13,6 +13,7 @@ const message = new WebExtensionMessage>({ domain: 'services // #region Setup services const _service: Record = { Crypto: setup('Crypto', () => import('./crypto')), + Helper: setup('Helper', () => import('./helper')), } const _service_generator: Record = {} diff --git a/packages/mask/background/services/types.ts b/packages/mask/background/services/types.ts index d5de9ea05a5b..203667189a7a 100644 --- a/packages/mask/background/services/types.ts +++ b/packages/mask/background/services/types.ts @@ -1,5 +1,7 @@ import type * as Crypto from './crypto' +import type * as Helper from './helper' export type Services = { Crypto: typeof Crypto + Helper: typeof Helper } export type GeneratorServices = {} diff --git a/packages/mask/shared/definitions/routes.ts b/packages/mask/shared/definitions/routes.ts new file mode 100644 index 000000000000..5683e2322ca5 --- /dev/null +++ b/packages/mask/shared/definitions/routes.ts @@ -0,0 +1,11 @@ +import { PopupRoutes } from '@masknet/shared-base' +export function getPopupRouteURLWithNoParam(kind: PopupRoutes) { + return browser.runtime.getURL(`/popups.html#${kind}`) +} +export function getPermissionRequestURL(permission: browser.permissions.Permissions) { + const { origins = [], permissions = [] } = permission + const params = new URLSearchParams() + for (const each of origins) params.append('origins', each) + for (const each of permissions) params.append('permissions', each) + return `${getPopupRouteURLWithNoParam(PopupRoutes.RequestPermission)}?${params.toString()}` +} diff --git a/packages/mask/shared/index.ts b/packages/mask/shared/index.ts index c2f14c48a9b4..b02aa56ca45f 100644 --- a/packages/mask/shared/index.ts +++ b/packages/mask/shared/index.ts @@ -2,4 +2,3 @@ export * from './messages' export * from './flags' export { InMemoryStorages, PersistentStorages } from './kv-storage' export * from './helpers/download' -export * from './helpers/resolve-t.co' diff --git a/packages/mask/src/extension/background-script/EthereumServices/providers/MaskWallet.ts b/packages/mask/src/extension/background-script/EthereumServices/providers/MaskWallet.ts index aef313682768..df91b1867565 100644 --- a/packages/mask/src/extension/background-script/EthereumServices/providers/MaskWallet.ts +++ b/packages/mask/src/extension/background-script/EthereumServices/providers/MaskWallet.ts @@ -4,7 +4,7 @@ import { PopupRoutes } from '@masknet/shared-base' import { ChainId, getChainIdFromNetworkType, getChainRPC, NetworkType, ProviderType } from '@masknet/web3-shared-evm' import { currentChainIdSettings } from '../../../../plugins/Wallet/settings' import { getWallets, selectAccountPrepare } from '../../../../plugins/Wallet/services' -import { openPopupWindow } from '../../HelperService' +import { openPopupWindow } from '../../../../../background/services/helper' // #region providers const providerPool = new Map() diff --git a/packages/mask/src/extension/background-script/EthereumServices/request.ts b/packages/mask/src/extension/background-script/EthereumServices/request.ts index 6fa0ea996c15..823bbac4c6ed 100644 --- a/packages/mask/src/extension/background-script/EthereumServices/request.ts +++ b/packages/mask/src/extension/background-script/EthereumServices/request.ts @@ -21,7 +21,7 @@ import { WalletRPC } from '../../../plugins/Wallet/messages' import { INTERNAL_nativeSend, INTERNAL_send } from './send' import { defer } from '@dimensiondev/kit' import { hasNativeAPI, nativeAPI } from '../../../../shared/native-rpc' -import { openPopupWindow } from '../HelperService' +import { openPopupWindow } from '../../../../background/services/helper' import Services from '../../service' import { toHex } from 'web3-utils' import { isLessThan } from '@masknet/web3-shared-base' diff --git a/packages/mask/src/extension/background-script/IdentityServices/sign.ts b/packages/mask/src/extension/background-script/IdentityServices/sign.ts index addd20e8d91a..ac60770dd619 100644 --- a/packages/mask/src/extension/background-script/IdentityServices/sign.ts +++ b/packages/mask/src/extension/background-script/IdentityServices/sign.ts @@ -11,7 +11,7 @@ import { import { MaskMessages } from '../../../utils' import { PersonaIdentifier, fromBase64URL, PopupRoutes } from '@masknet/shared-base' import { queryPersonasWithPrivateKey } from '../../../../background/database/persona/db' -import { openPopupWindow } from '../HelperService' +import { openPopupWindow } from '../../../../background/services/helper' import { delay } from '@dimensiondev/kit' export interface SignRequest { /** Use that who to sign this message. */ diff --git a/packages/mask/src/extension/background-script/WelcomeService.ts b/packages/mask/src/extension/background-script/WelcomeService.ts index f60257f3feb3..20e173baba5b 100644 --- a/packages/mask/src/extension/background-script/WelcomeService.ts +++ b/packages/mask/src/extension/background-script/WelcomeService.ts @@ -6,7 +6,7 @@ import { attachProfileDB, LinkedProfileDetails } from '../../../background/datab import { deriveLocalKeyFromECDHKey } from '../../utils/mnemonic-code/localKeyGenerate' import type { PersonaIdentifier, ProfileIdentifier, AESJsonWebKey } from '@masknet/shared-base' import { BackupOptions, generateBackupJSON } from './WelcomeServices/generateBackupJSON' -import { requestExtensionPermission } from './HelperService/extensionPermission' +import { requestExtensionPermission, openPopupWindow } from './../../../background/services/helper' import { saveFileFromBuffer } from '../../../shared' import { BackupJSONFileLatest, @@ -18,7 +18,6 @@ import { assertEnvironment, Environment } from '@dimensiondev/holoflows-kit' import { convertBackupFileToObject, extraPermissions, fixBackupFilePermission } from '../../utils' import { v4 as uuid } from 'uuid' import { getUnconfirmedBackup, restoreBackup, setUnconfirmedBackup } from './WelcomeServices/restoreBackup' -import { openPopupWindow } from './HelperService' import formatDateTime from 'date-fns/format' export { generateBackupJSON, generateBackupPreviewInfo } from './WelcomeServices/generateBackupJSON' diff --git a/packages/mask/src/extension/popups/RequestPermission/utils.ts b/packages/mask/src/extension/popups/RequestPermission/utils.ts deleted file mode 100644 index 6095b5b2adbf..000000000000 --- a/packages/mask/src/extension/popups/RequestPermission/utils.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { PopupRoutes } from '@masknet/shared-base' -import { getRouteURLWithNoParam } from '../utils' - -export function constructRequestPermissionURL(permission: browser.permissions.Permissions) { - const { origins = [], permissions = [] } = permission - const params = new URLSearchParams() - for (const each of origins) params.append('origins', each) - for (const each of permissions) params.append('permissions', each) - return `${getRouteURLWithNoParam(PopupRoutes.RequestPermission)}?${params.toString()}` -} diff --git a/packages/mask/src/extension/popups/ThirdPartyRequestPermission/utils.ts b/packages/mask/src/extension/popups/ThirdPartyRequestPermission/utils.ts index ef4bf73b110d..c3e0ae9d4afb 100644 --- a/packages/mask/src/extension/popups/ThirdPartyRequestPermission/utils.ts +++ b/packages/mask/src/extension/popups/ThirdPartyRequestPermission/utils.ts @@ -1,5 +1,5 @@ import { PopupRoutes } from '@masknet/shared-base' -import { getRouteURLWithNoParam } from '../utils' +import { getPopupRouteURLWithNoParam } from '..' import type { ThirdPartyPluginPermission } from '../../background-script/ThirdPartyPlugin/types' export function constructThirdPartyRequestPermissionURL( @@ -9,5 +9,5 @@ export function constructThirdPartyRequestPermissionURL( const params = new URLSearchParams() params.set('plugin', pluginManifestURL) for (const x of permissions) params.append('permission', String(x)) - return getRouteURLWithNoParam(PopupRoutes.ThirdPartyRequestPermission) + '?' + params.toString() + return getPopupRouteURLWithNoParam(PopupRoutes.ThirdPartyRequestPermission) + '?' + params.toString() } diff --git a/packages/mask/src/extension/popups/index.tsx b/packages/mask/src/extension/popups/index.tsx index c98c50f8db8d..245ee93b0712 100644 --- a/packages/mask/src/extension/popups/index.tsx +++ b/packages/mask/src/extension/popups/index.tsx @@ -1,13 +1,11 @@ import type { MaskSDK_SNS_ContextIdentifier } from '../../plugins/External/sns-context' import { PopupRoutes } from '@masknet/shared-base' - -import { getRouteURLWithNoParam } from './utils' +import { getPopupRouteURLWithNoParam } from '../../../shared/definitions/routes' export function PermissionAwareRedirectOf(url: string, context: MaskSDK_SNS_ContextIdentifier) { return ( - getRouteURLWithNoParam(PopupRoutes.PermissionAwareRedirect) + + getPopupRouteURLWithNoParam(PopupRoutes.PermissionAwareRedirect) + `?url=${encodeURIComponent(url)}&context=${context}` ) } -export { constructRequestPermissionURL } from './RequestPermission/utils' -export { getRouteURLWithNoParam } from './utils' +export { getPermissionRequestURL, getPopupRouteURLWithNoParam } from '../../../shared/definitions/routes' diff --git a/packages/mask/src/extension/popups/utils/index.ts b/packages/mask/src/extension/popups/utils/index.ts deleted file mode 100644 index 86cec2aa3caa..000000000000 --- a/packages/mask/src/extension/popups/utils/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import type { PopupRoutes } from '@masknet/shared-base' -export function getRouteURLWithNoParam(kind: PopupRoutes) { - return browser.runtime.getURL(`/popups.html#${kind}`) -} diff --git a/packages/mask/src/extension/service.ts b/packages/mask/src/extension/service.ts index e3db8cef6552..75dd5978f845 100644 --- a/packages/mask/src/extension/service.ts +++ b/packages/mask/src/extension/service.ts @@ -28,7 +28,7 @@ export const Services = { Crypto: add(() => import('./background-script/CryptoService'), 'Crypto'), Identity: add(() => import('./background-script/IdentityService'), 'Identity'), Welcome: add(() => import('./background-script/WelcomeService'), 'Welcome'), - Helper: add(() => import('./background-script/HelperService'), 'Helper'), + Helper: add(() => import('../../background/services/helper'), 'Helper'), Ethereum: add(() => import('./background-script/EthereumService'), 'Ethereum'), SocialNetwork: add(() => import('./background-script/SocialNetworkService'), 'SocialNetwork'), Settings: add(() => import('./background-script/SettingsService'), 'Settings'), @@ -47,7 +47,7 @@ if (process.env.manifest === '2' && import.meta.webpackHot && isEnvironment(Envi './background-script/CryptoService', './background-script/IdentityService', './background-script/WelcomeService', - './background-script/HelperService', + '../../background/services/helper', './background-script/EthereumService', './background-script/SettingsService', './background-script/ThirdPartyPlugin', diff --git a/packages/mask/src/plugins/Profile/services.ts b/packages/mask/src/plugins/Profile/services.ts index cb7c4b367c93..810fd057564d 100644 --- a/packages/mask/src/plugins/Profile/services.ts +++ b/packages/mask/src/plugins/Profile/services.ts @@ -1,5 +1,4 @@ import urlcat from 'urlcat' -import { fetchJSON } from '../../extension/background-script/HelperService' interface NameInfo { rnsName: string @@ -10,6 +9,6 @@ interface NameInfo { export async function getRSS3AddressById(id: string) { if (!id) return '' const url = urlcat('https://rss3.domains/name/:id', { id }) - const rsp = await fetchJSON(url) + const rsp = (await (await fetch(url)).json()) as NameInfo return rsp.address } diff --git a/packages/mask/src/plugins/Wallet/Worker/index.ts b/packages/mask/src/plugins/Wallet/Worker/index.ts index 7b14854a29ae..8f0e2e900147 100644 --- a/packages/mask/src/plugins/Wallet/Worker/index.ts +++ b/packages/mask/src/plugins/Wallet/Worker/index.ts @@ -1,9 +1,20 @@ import type { Plugin } from '@masknet/plugin-infra' import { base } from '@masknet/plugin-wallet' +import { MaskMessages } from '../../../utils' import '../messages' +import { isLocked } from '../services' const worker: Plugin.Worker.Definition = { ...base, - init(signal) {}, + init(signal) { + MaskMessages.events.wallet_is_locked.on( + async ([type]) => { + if (type === 'request') { + MaskMessages.events.wallet_is_locked.sendToLocal(['response', await isLocked()]) + } + }, + { signal }, + ) + }, } export default worker diff --git a/packages/mask/src/plugins/Wallet/services/cloud.ts b/packages/mask/src/plugins/Wallet/services/cloud.ts index 2947e4d072a1..9ee06cc19fe0 100644 --- a/packages/mask/src/plugins/Wallet/services/cloud.ts +++ b/packages/mask/src/plugins/Wallet/services/cloud.ts @@ -1,7 +1,4 @@ -import { - __deprecated__getStorage, - __deprecated__setStorage, -} from '../../../extension/background-script/HelperService/storage' +import { __deprecated__getStorage, __deprecated__setStorage } from '../../../../background/services/helper' const HOST_MAP = { production: 'https://backup.mask.io/api', diff --git a/packages/mask/src/plugins/Wallet/services/rpc.ts b/packages/mask/src/plugins/Wallet/services/rpc.ts index fd5fa59bd146..682a332d2aa8 100644 --- a/packages/mask/src/plugins/Wallet/services/rpc.ts +++ b/packages/mask/src/plugins/Wallet/services/rpc.ts @@ -3,7 +3,7 @@ import { WalletMessages } from '@masknet/plugin-wallet' import type { JsonRpcPayload } from 'web3-core-helpers' import { createTransaction } from '../../../../background/database/utils/openDB' import { createWalletDBAccess } from '../database/Wallet.db' -import { openPopupWindow } from '../../../extension/background-script/HelperService' +import { openPopupWindow } from '../../../../background/services/helper' const MAX_UNCONFIRMED_REQUESTS_SIZE = 1 const MAIN_RECORD_ID = '0' diff --git a/packages/mask/src/settings/settings.ts b/packages/mask/src/settings/settings.ts index ae35a9857532..05fe1fafef62 100644 --- a/packages/mask/src/settings/settings.ts +++ b/packages/mask/src/settings/settings.ts @@ -90,10 +90,6 @@ export const currentPersonaIdentifier = createGlobalSettings('currentPer primary: () => 'DO NOT DISPLAY IT IN UI', }) -export const currentPopupWindowId = createGlobalSettings('currentPopupWindowId', 0, { - primary: () => 'DO NOT DISPLAY IT IN UI', -}) - try { // Migrate language settings const lng: string = languageSettings.value diff --git a/packages/shared-base/src/Messages/Mask.ts b/packages/shared-base/src/Messages/Mask.ts index 46bd027f32ac..8b48ee0f613b 100644 --- a/packages/shared-base/src/Messages/Mask.ts +++ b/packages/shared-base/src/Messages/Mask.ts @@ -66,6 +66,8 @@ export interface MaskEvents extends MaskSettingsEvents, MaskMobileOnlyEvents, Ma maskSDKHotModuleReload: void __kv_backend_persistent__: [string, unknown] __kv_backend_in_memory__: [string, unknown] + /** @deprecated do not use it in new code. */ + wallet_is_locked: ['request'] | ['response', boolean] } export interface UpdateEvent { From c14a211bd1c777466a408f53464aab3e7c8578ea Mon Sep 17 00:00:00 2001 From: Jack Works Date: Fri, 25 Feb 2022 14:40:17 +0800 Subject: [PATCH 2/4] refactor: move the helper service --- packages/mask/background/services/helper/popup-opener.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/mask/background/services/helper/popup-opener.ts b/packages/mask/background/services/helper/popup-opener.ts index d400da34691a..905cd17b91ea 100644 --- a/packages/mask/background/services/helper/popup-opener.ts +++ b/packages/mask/background/services/helper/popup-opener.ts @@ -11,6 +11,8 @@ function isLocked() { if (type === 'request') return off() resolve(value) + // in case something went wrong + setTimeout(() => resolve(false), 200) }) MaskMessages.events.wallet_is_locked.sendToLocal(['request']) }) From 640c1cf151b19bffdcfe1cb6e4a1192ef07dce3b Mon Sep 17 00:00:00 2001 From: Jack Works Date: Fri, 25 Feb 2022 14:40:48 +0800 Subject: [PATCH 3/4] refactor: move the helper service --- packages/mask/background/services/helper/popup-opener.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mask/background/services/helper/popup-opener.ts b/packages/mask/background/services/helper/popup-opener.ts index 905cd17b91ea..8dc84e4e1336 100644 --- a/packages/mask/background/services/helper/popup-opener.ts +++ b/packages/mask/background/services/helper/popup-opener.ts @@ -3,7 +3,7 @@ import { ValueRef } from '@dimensiondev/holoflows-kit' import urlcat from 'urlcat' import { MaskMessages } from '../../../shared' -const currentPopupWindowId = new ValueRef(-1) +const currentPopupWindowId = new ValueRef(0) function isLocked() { return new Promise((resolve) => { From e7b4c6e30390032b6a94dab096215bf201232bae Mon Sep 17 00:00:00 2001 From: Jack Works Date: Fri, 25 Feb 2022 14:43:00 +0800 Subject: [PATCH 4/4] refactor: move the helper service --- .../background/services/helper/popup-opener.ts | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/packages/mask/background/services/helper/popup-opener.ts b/packages/mask/background/services/helper/popup-opener.ts index 8dc84e4e1336..606b0c6044bf 100644 --- a/packages/mask/background/services/helper/popup-opener.ts +++ b/packages/mask/background/services/helper/popup-opener.ts @@ -1,10 +1,8 @@ import { PopupRoutes } from '@masknet/shared-base' -import { ValueRef } from '@dimensiondev/holoflows-kit' import urlcat from 'urlcat' import { MaskMessages } from '../../../shared' -const currentPopupWindowId = new ValueRef(0) - +let currentPopupWindowId = 0 function isLocked() { return new Promise((resolve) => { const off = MaskMessages.events.wallet_is_locked.on(([type, value]) => { @@ -19,11 +17,11 @@ function isLocked() { } export async function openPopupWindow(route?: PopupRoutes, params?: Record) { const windows = await browser.windows.getAll() - const popup = windows.find((win) => win && win.type === 'popup' && win.id === currentPopupWindowId.value) + const popup = windows.find((win) => win && win.type === 'popup' && win.id === currentPopupWindowId) // Focus on the pop-up window if it already exists if (popup) { - await browser.windows.update(currentPopupWindowId.value, { focused: true }) + await browser.windows.update(currentPopupWindowId, { focused: true }) } else { const locked = await isLocked() @@ -63,10 +61,10 @@ export async function openPopupWindow(route?: PopupRoutes, params?: Record