From bf2c2fe4a2adc3a2dd608bbd11509ee9e96f603a Mon Sep 17 00:00:00 2001 From: guanbinrui Date: Wed, 26 Jan 2022 11:09:50 +0800 Subject: [PATCH 01/12] chore: bump version to 2.4.0 --- package.json | 2 +- packages/mask/src/manifest.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index d5ec62b5e7cd..a1c9897c582c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mask-network", "packageManager": "pnpm@6.23.1", - "version": "2.3.0", + "version": "2.4.0", "private": true, "license": "AGPL-3.0-or-later", "scripts": { diff --git a/packages/mask/src/manifest.json b/packages/mask/src/manifest.json index f9fc4ff9aef6..572b28c22a41 100644 --- a/packages/mask/src/manifest.json +++ b/packages/mask/src/manifest.json @@ -1,6 +1,6 @@ { "name": "Mask Network", - "version": "2.3.0", + "version": "2.4.0", "manifest_version": 2, "permissions": ["storage", "downloads", "webNavigation", "activeTab"], "optional_permissions": ["", "notifications", "clipboardRead"], From 6dae665b0d834a604581190e543e6479074c676b Mon Sep 17 00:00:00 2001 From: guanbinrui Date: Mon, 31 Jan 2022 00:16:48 +0800 Subject: [PATCH 02/12] Revert "chore: replace network icon style (#5519)" This reverts commit ae09ff4b627125b86c2f17f1302bc83b004cc460. --- .../FungibleTokenTableRow/index.tsx | 2 -- packages/icons/general/Selected.tsx | 24 +++++++------------ .../PluginProviderRender.tsx | 1 - .../src/UI/components/WalletIcon/index.tsx | 5 +--- 4 files changed, 10 insertions(+), 22 deletions(-) diff --git a/packages/dashboard/src/pages/Wallets/components/FungibleTokenTableRow/index.tsx b/packages/dashboard/src/pages/Wallets/components/FungibleTokenTableRow/index.tsx index e5333b42c0fd..4d3a0e074628 100644 --- a/packages/dashboard/src/pages/Wallets/components/FungibleTokenTableRow/index.tsx +++ b/packages/dashboard/src/pages/Wallets/components/FungibleTokenTableRow/index.tsx @@ -52,8 +52,6 @@ const useStyles = makeStyles()((theme) => ({ bottom: 0, height: 16, width: 16, - border: `1px solid ${theme.palette.background.default}`, - borderRadius: '50%', }, tip: { padding: theme.spacing(1), diff --git a/packages/icons/general/Selected.tsx b/packages/icons/general/Selected.tsx index 8ab2ad2a7831..2b99be6d01d7 100644 --- a/packages/icons/general/Selected.tsx +++ b/packages/icons/general/Selected.tsx @@ -2,21 +2,15 @@ import { createIcon } from '../utils' export const SelectedIcon = createIcon( 'SelectedIcon', - - - - - - - - - - + + + + , '0 0 16 16', ) diff --git a/packages/mask/src/plugins/Wallet/SNSAdaptor/SelectProviderDialog/PluginProviderRender.tsx b/packages/mask/src/plugins/Wallet/SNSAdaptor/SelectProviderDialog/PluginProviderRender.tsx index 1241980cf79e..1ac44f468090 100644 --- a/packages/mask/src/plugins/Wallet/SNSAdaptor/SelectProviderDialog/PluginProviderRender.tsx +++ b/packages/mask/src/plugins/Wallet/SNSAdaptor/SelectProviderDialog/PluginProviderRender.tsx @@ -53,7 +53,6 @@ const useStyles = makeStyles()((theme) => ({ height: 14, background: '#fff', borderRadius: '50%', - border: `1px solid ${theme.palette.background.default}`, }, alert: { fontSize: 12, diff --git a/packages/shared/src/UI/components/WalletIcon/index.tsx b/packages/shared/src/UI/components/WalletIcon/index.tsx index 580cf0c11cea..360772fe1f28 100644 --- a/packages/shared/src/UI/components/WalletIcon/index.tsx +++ b/packages/shared/src/UI/components/WalletIcon/index.tsx @@ -24,10 +24,7 @@ const useStyles = makeStyles()((theme, props) => ({ bottom: -2, }, networkIcon: {}, - providerIcon: { - border: `1px solid ${theme.palette.background.default}`, - borderRadius: '50%', - }, + providerIcon: {}, })) interface WalletIconProps extends withClasses<'networkIcon' | 'providerIcon'> { From 902595902cfc668a5edba7fb2121edebed326ab8 Mon Sep 17 00:00:00 2001 From: guanbinrui Date: Mon, 31 Jan 2022 11:02:12 +0800 Subject: [PATCH 03/12] chore: bump version to 2.4.1 --- package.json | 2 +- packages/mask/src/manifest.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index a1c9897c582c..2e8c1f84992d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mask-network", "packageManager": "pnpm@6.23.1", - "version": "2.4.0", + "version": "2.4.1", "private": true, "license": "AGPL-3.0-or-later", "scripts": { diff --git a/packages/mask/src/manifest.json b/packages/mask/src/manifest.json index 572b28c22a41..4f7d689e84af 100644 --- a/packages/mask/src/manifest.json +++ b/packages/mask/src/manifest.json @@ -1,6 +1,6 @@ { "name": "Mask Network", - "version": "2.4.0", + "version": "2.4.1", "manifest_version": 2, "permissions": ["storage", "downloads", "webNavigation", "activeTab"], "optional_permissions": ["", "notifications", "clipboardRead"], From 1f361be347159d559b1212cf09a99237db0349ac Mon Sep 17 00:00:00 2001 From: guanbinrui <52657989+guanbinrui@users.noreply.github.com> Date: Mon, 31 Jan 2022 12:56:28 +0800 Subject: [PATCH 04/12] fix: ci envs (#5598) --- packages/web3-shared/evm/constants/index.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/web3-shared/evm/constants/index.ts b/packages/web3-shared/evm/constants/index.ts index 37a858d8a389..2f097d807fb7 100644 --- a/packages/web3-shared/evm/constants/index.ts +++ b/packages/web3-shared/evm/constants/index.ts @@ -25,9 +25,12 @@ import OpenseaAPI from '@masknet/web3-constants/evm/opensea-api.json' import CryptoArtAI from '@masknet/web3-constants/evm/cryptoartai.json' import { hookTransform, transform, transformFromJSON } from './utils' -function getEnvConstants(key: string) { +function getEnvConstants(key: 'WEB3_CONSTANTS_RPC') { try { - return process.env[key] ?? '' + const map = { + WEB3_CONSTANTS_RPC: process.env.WEB3_CONSTANTS_RPC, + } + return map[key] ?? '' } catch { return '' } @@ -83,7 +86,7 @@ export const useMaskBoxConstants = hookTransform(getMaskBoxConstants) export const getRPCConstants = transformFromJSON(getEnvConstants('WEB3_CONSTANTS_RPC'), RPC) export const useRPCConstants = hookTransform(getRPCConstants) -export const getExplorerConstants = transformFromJSON(getEnvConstants('WEB3_CONSTANTS_EXPLORER'), Explorer) +export const getExplorerConstants = transform(Explorer) export const useExplorerConstants = hookTransform(getExplorerConstants) export const getTokenListConstants = transform(TokenList) From 9c3205741b988fc9dca2f14c5655df5f37fc1543 Mon Sep 17 00:00:00 2001 From: guanbinrui Date: Mon, 31 Jan 2022 13:42:00 +0800 Subject: [PATCH 05/12] chore: bump version to 2.4.2 --- package.json | 2 +- packages/mask/src/manifest.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 2e8c1f84992d..8d5dbdde8c60 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mask-network", "packageManager": "pnpm@6.23.1", - "version": "2.4.1", + "version": "2.4.2", "private": true, "license": "AGPL-3.0-or-later", "scripts": { diff --git a/packages/mask/src/manifest.json b/packages/mask/src/manifest.json index 4f7d689e84af..6b6c6f77ab14 100644 --- a/packages/mask/src/manifest.json +++ b/packages/mask/src/manifest.json @@ -1,6 +1,6 @@ { "name": "Mask Network", - "version": "2.4.1", + "version": "2.4.2", "manifest_version": 2, "permissions": ["storage", "downloads", "webNavigation", "activeTab"], "optional_permissions": ["", "notifications", "clipboardRead"], From 01870bebbba76c546809cbbd1e9ed50610d5f181 Mon Sep 17 00:00:00 2001 From: guanbinrui Date: Sun, 6 Feb 2022 08:02:50 +0800 Subject: [PATCH 06/12] fix: the web3 tab selector --- .../twitter.com/utils/selector.ts | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/packages/mask/src/social-network-adaptor/twitter.com/utils/selector.ts b/packages/mask/src/social-network-adaptor/twitter.com/utils/selector.ts index 6cc4b0eb2827..9aa8768ca846 100644 --- a/packages/mask/src/social-network-adaptor/twitter.com/utils/selector.ts +++ b/packages/mask/src/social-network-adaptor/twitter.com/utils/selector.ts @@ -16,18 +16,9 @@ const querySelectorAll = (selector: string) => { // #region "Enhanced Profile" export const searchProfileSelector: () => LiveSelector = () => querySelector('[aria-label][role="navigation"]') -export const searchProfileTabListLastChildSelector: () => LiveSelector = () => { - const q = querySelector( - '[data-testid="primaryColumn"] > div > div >div >div >:nth-child(2)>div>div>:nth-child(2)>div>:nth-child(2)>div>:last-child', - ) - if (!q.evaluate()) { - return querySelector( - '[data-testid="primaryColumn"] > div > :nth-child(2) > div > div > :nth-child(2) >div>:last-child', - ) - } - return q -} +export const searchProfileTabListLastChildSelector: () => LiveSelector = () => + querySelector('[data-testid="primaryColumn"] [role="navigation"] [data-testid="ScrollSnap-nextButtonWrapper"]') export const searchProfileTabPageSelector: () => LiveSelector = () => querySelector( From 67c422cff24953e5fab6a9787cd9e06972fe30b9 Mon Sep 17 00:00:00 2001 From: guanbinrui Date: Sun, 6 Feb 2022 07:47:31 +0800 Subject: [PATCH 07/12] refactor: update dao constants --- packages/plugins/DAO/src/constants.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/plugins/DAO/src/constants.ts b/packages/plugins/DAO/src/constants.ts index dbdcc56845dc..b5e4c331dcab 100644 --- a/packages/plugins/DAO/src/constants.ts +++ b/packages/plugins/DAO/src/constants.ts @@ -8,9 +8,12 @@ export const PLUGIN_NAME = 'DAO' export const SUPPORTED_TWITTER_IDS = [ 'ConstitutionDAO', 'juiceboxETH', + 'AssangeDAO', + 'OfficialMoonDAO', 'TheSpiceDAO', /* cspell:disable-next-line */ 'sharkdao', + 'CrayonFinance', 'merge_dao', /* cspell:disable-next-line */ 'DAOTaiFung', From 6e1d6f70f76155720289943b59ef5237029cfc54 Mon Sep 17 00:00:00 2001 From: guanbinrui Date: Mon, 7 Feb 2022 11:27:57 +0800 Subject: [PATCH 08/12] chore: bump version to 2.4.3 --- package.json | 2 +- packages/mask/src/manifest.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 8d5dbdde8c60..2d105cbe9caa 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mask-network", "packageManager": "pnpm@6.23.1", - "version": "2.4.2", + "version": "2.4.3", "private": true, "license": "AGPL-3.0-or-later", "scripts": { diff --git a/packages/mask/src/manifest.json b/packages/mask/src/manifest.json index 6b6c6f77ab14..1c4a5a84d565 100644 --- a/packages/mask/src/manifest.json +++ b/packages/mask/src/manifest.json @@ -1,6 +1,6 @@ { "name": "Mask Network", - "version": "2.4.2", + "version": "2.4.3", "manifest_version": 2, "permissions": ["storage", "downloads", "webNavigation", "activeTab"], "optional_permissions": ["", "notifications", "clipboardRead"], From eef22cce78592ec092552efa98e5a38e4e657d6c Mon Sep 17 00:00:00 2001 From: guanbinrui <52657989+guanbinrui@users.noreply.github.com> Date: Mon, 31 Jan 2022 11:03:57 +0800 Subject: [PATCH 09/12] refactor: createSquashRequest (#5549) --- .../EthereumServices/request.ts | 48 +++++++++---------- packages/web3-shared/evm/utils/provider.ts | 48 +++++++++++++++++-- 2 files changed, 69 insertions(+), 27 deletions(-) diff --git a/packages/mask/src/extension/background-script/EthereumServices/request.ts b/packages/mask/src/extension/background-script/EthereumServices/request.ts index 04cc98cbee00..8e7ebbc9264a 100644 --- a/packages/mask/src/extension/background-script/EthereumServices/request.ts +++ b/packages/mask/src/extension/background-script/EthereumServices/request.ts @@ -55,30 +55,7 @@ function isSendMethod(method: EthereumMethodType) { return method === EthereumMethodType.ETH_SEND_TRANSACTION } -export function request( - requestArguments: RequestArguments, - overrides?: SendOverrides, - options?: RequestOptions, -) { - return new Promise((resolve, reject) => { - requestSend( - { - jsonrpc: '2.0', - id, - params: [], - ...requestArguments, - }, - (error, response) => { - if (error || response?.error) reject(error ?? response?.error) - else resolve(response?.result) - }, - overrides, - options, - ) - }) -} - -export async function requestSend( +async function requestSend( payload: JsonRpcPayload, callback: (error: Error | null, response?: JsonRpcResponse) => void, overrides?: SendOverrides, @@ -177,6 +154,29 @@ export async function requestSend( getSendMethod()(payload_, hijackedCallback, overrides) } +export async function request( + requestArguments: RequestArguments, + overrides?: SendOverrides, + options?: RequestOptions, +) { + return new Promise(async (resolve, reject) => { + requestSend( + { + jsonrpc: '2.0', + id, + params: [], + ...requestArguments, + }, + (error, response) => { + if (error || response?.error) reject(error ?? response?.error) + else resolve(response?.result) + }, + overrides, + options, + ) + }) +} + export async function confirmRequest(payload: JsonRpcPayload) { const pid = getPayloadId(payload) if (!pid) return diff --git a/packages/web3-shared/evm/utils/provider.ts b/packages/web3-shared/evm/utils/provider.ts index fdf81c247868..a9cf64d7258a 100644 --- a/packages/web3-shared/evm/utils/provider.ts +++ b/packages/web3-shared/evm/utils/provider.ts @@ -1,7 +1,48 @@ import Web3 from 'web3' import type { RequestArguments } from 'web3-core' import type { JsonRpcPayload, JsonRpcResponse } from 'web3-core-helpers' -import type { RequestOptions, SendOverrides } from '../types' +import { EthereumMethodType, RequestOptions, SendOverrides } from '../types' + +const cache = new Map>() + +/** + * If it returns a cache id, it means the request can be cached. + * @param requestArguments + * @returns + */ +function getCacheId(requestArguments: RequestArguments, overrides?: SendOverrides) { + // The -1 is not a valid chain id, only used for distinguishing with other explicit chain id. + const chainId = overrides?.chainId ?? -1 + const { method, params } = requestArguments + switch (method) { + case EthereumMethodType.ETH_GET_BALANCE: + const [account, tag = 'latest'] = params as string[] + return [chainId, method, account, tag].join('_') + case EthereumMethodType.ETH_BLOCK_NUMBER: + return [chainId, method].join('_') + default: + return + } +} + +function createSquashedRequest( + request: (requestArguments: RequestArguments, overrides?: SendOverrides, options?: RequestOptions) => Promise, +) { + return async (requestArguments: RequestArguments, overrides?: SendOverrides, options?: RequestOptions) => { + const id = getCacheId(requestArguments, overrides) + + // the request cannot be cached + if (!id) return request(requestArguments, overrides, options) + + // the request is already cached + if (cache.has(id)) return cache.get(id) + + // the request can be cached + const unresolved = request(requestArguments, overrides, options).finally(() => cache.delete(id)) + cache.set(id, unresolved) + return unresolved + } +} export function createExternalProvider( request: ( @@ -12,8 +53,9 @@ export function createExternalProvider( getOverrides?: () => SendOverrides, getOptions?: () => RequestOptions, ) { + const request_ = createSquashedRequest(request) const send = (payload: JsonRpcPayload, callback: (error: Error | null, response?: JsonRpcResponse) => void) => { - request( + request_( { method: payload.method, params: payload.params, @@ -40,7 +82,7 @@ export function createExternalProvider( isStatus: true, host: '', path: '', - request: (requestArguments: RequestArguments) => request(requestArguments, getOverrides?.(), getOptions?.()), + request: (requestArguments: RequestArguments) => request_(requestArguments, getOverrides?.(), getOptions?.()), send, sendAsync: send, } From fef351db9af0f322be7f5f37202d7475c7912b2b Mon Sep 17 00:00:00 2001 From: guanbinrui <52657989+guanbinrui@users.noreply.github.com> Date: Mon, 7 Feb 2022 12:22:25 +0800 Subject: [PATCH 10/12] fix: the profile tab selector (#5612) --- .../src/social-network-adaptor/twitter.com/utils/selector.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/mask/src/social-network-adaptor/twitter.com/utils/selector.ts b/packages/mask/src/social-network-adaptor/twitter.com/utils/selector.ts index 9aa8768ca846..aef488835659 100644 --- a/packages/mask/src/social-network-adaptor/twitter.com/utils/selector.ts +++ b/packages/mask/src/social-network-adaptor/twitter.com/utils/selector.ts @@ -18,7 +18,9 @@ export const searchProfileSelector: () => LiveSelector = () => querySelector('[aria-label][role="navigation"]') export const searchProfileTabListLastChildSelector: () => LiveSelector = () => - querySelector('[data-testid="primaryColumn"] [role="navigation"] [data-testid="ScrollSnap-nextButtonWrapper"]') + querySelector( + '[data-testid="primaryColumn"] div + [role="navigation"][aria-label] [data-testid="ScrollSnap-nextButtonWrapper"]', + ) export const searchProfileTabPageSelector: () => LiveSelector = () => querySelector( From d7d7fc98e0e5db58dc634f50622be1700b286f78 Mon Sep 17 00:00:00 2001 From: guanbinrui Date: Thu, 17 Feb 2022 11:12:40 +0800 Subject: [PATCH 11/12] chore: bump version to 2.4.4 --- package.json | 2 +- packages/mask/src/manifest.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 2d105cbe9caa..41992d8f074f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mask-network", "packageManager": "pnpm@6.23.1", - "version": "2.4.3", + "version": "2.4.4", "private": true, "license": "AGPL-3.0-or-later", "scripts": { diff --git a/packages/mask/src/manifest.json b/packages/mask/src/manifest.json index 1c4a5a84d565..53c0141549a5 100644 --- a/packages/mask/src/manifest.json +++ b/packages/mask/src/manifest.json @@ -1,6 +1,6 @@ { "name": "Mask Network", - "version": "2.4.3", + "version": "2.4.4", "manifest_version": 2, "permissions": ["storage", "downloads", "webNavigation", "activeTab"], "optional_permissions": ["", "notifications", "clipboardRead"], From f6c13d36156683e582ed7e793dbb357a92894ded Mon Sep 17 00:00:00 2001 From: Jack Works Date: Sat, 12 Feb 2022 12:35:02 +0800 Subject: [PATCH 12/12] fix: platform without trusted types (#5645) --- packages/mask/public/patches.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mask/public/patches.js b/packages/mask/public/patches.js index fe782e91d2a9..4e3f6866390a 100644 --- a/packages/mask/public/patches.js +++ b/packages/mask/public/patches.js @@ -83,7 +83,7 @@ globalThis.regeneratorRuntime = undefined } { - if (typeof trustedTypes) { + if (typeof trustedTypes === 'object') { trustedTypes.createPolicy('default', { createHTML: (string) => { console.trace('[Trusted Types](default policy): Possible XSS happened. Please remove it.', string)