From 87c93f26bf938795cd8d6818347192b1924b0886 Mon Sep 17 00:00:00 2001 From: nuanyang233 Date: Tue, 14 Jun 2022 18:07:39 +0800 Subject: [PATCH 1/2] refactor: make network plugin id to complex setting --- packages/mask/src/UIRoot.tsx | 14 ++++++++--- .../SNSAdaptor/ConnectWalletDialog/index.tsx | 9 +++++-- .../SNSAdaptor/SelectProviderDialog/index.tsx | 7 +++--- packages/mask/src/settings/settings.ts | 24 ++++++++++++++++--- 4 files changed, 43 insertions(+), 11 deletions(-) diff --git a/packages/mask/src/UIRoot.tsx b/packages/mask/src/UIRoot.tsx index f4efbceb2acc..b381566b9b3c 100644 --- a/packages/mask/src/UIRoot.tsx +++ b/packages/mask/src/UIRoot.tsx @@ -3,7 +3,7 @@ import { StyledEngineProvider, Theme } from '@mui/material' import { PluginsWeb3ContextProvider, useAllPluginsWeb3State } from '@masknet/plugin-infra/web3' import { I18NextProviderHMR, SharedContextProvider } from '@masknet/shared' import { ErrorBoundary, ErrorBoundaryBuildInfoContext, useValueRef } from '@masknet/shared-base-ui' -import { i18NextInstance } from '@masknet/shared-base' +import { getSiteType, i18NextInstance } from '@masknet/shared-base' import { buildInfoMarkdown } from './utils/BuildInfoMarkdown' import { activatedSocialNetworkUI } from './social-network' import { isFacebook } from './social-network-adaptor/facebook.com/base' @@ -11,6 +11,7 @@ import { pluginIDSettings } from './settings/settings' import { getBackgroundColor } from './utils' import { isTwitter } from './social-network-adaptor/twitter.com/base' import { MaskThemeProvider } from '@masknet/theme' +import { NetworkPluginID } from '@masknet/web3-shared-base' const identity = (jsx: React.ReactNode) => jsx as JSX.Element function compose(init: React.ReactNode, ...f: Array<(children: React.ReactNode) => JSX.Element>) { @@ -31,7 +32,8 @@ export interface MaskUIRootProps extends React.PropsWithChildren<{}> { } export function MaskUIRoot({ children, kind, useTheme }: MaskUIRootProps) { - const pluginID = useValueRef(pluginIDSettings) + const site = getSiteType() + const pluginIDs = useValueRef(pluginIDSettings) const PluginsWeb3State = useAllPluginsWeb3State() return compose( @@ -39,7 +41,13 @@ export function MaskUIRoot({ children, kind, useTheme }: MaskUIRootProps) { (jsx) => , (jsx) => , (jsx) => , - (jsx) => , + (jsx) => ( + + ), (jsx) => , kind === 'page' ? (jsx) => : identity, (jsx) => ( diff --git a/packages/mask/src/plugins/Wallet/SNSAdaptor/ConnectWalletDialog/index.tsx b/packages/mask/src/plugins/Wallet/SNSAdaptor/ConnectWalletDialog/index.tsx index f14b3b99b3f8..5009167c3c50 100644 --- a/packages/mask/src/plugins/Wallet/SNSAdaptor/ConnectWalletDialog/index.tsx +++ b/packages/mask/src/plugins/Wallet/SNSAdaptor/ConnectWalletDialog/index.tsx @@ -10,6 +10,7 @@ import { WalletMessages } from '../../messages' import { ConnectionProgress } from './ConnectionProgress' import { useI18N } from '../../../../utils' import { pluginIDSettings } from '../../../../settings/settings' +import { getSiteType } from '@masknet/shared-base' const useStyles = makeStyles()((theme) => ({ content: { @@ -56,8 +57,12 @@ export function ConnectWalletDialog() { await connection.connect() - if (pluginID) { - pluginIDSettings.value = pluginID + const site = getSiteType() + if (pluginID && site) { + pluginIDSettings.value = { + ...pluginIDSettings.value, + [site]: pluginID, + } } setConnectWalletDialog({ diff --git a/packages/mask/src/plugins/Wallet/SNSAdaptor/SelectProviderDialog/index.tsx b/packages/mask/src/plugins/Wallet/SNSAdaptor/SelectProviderDialog/index.tsx index baa18922e612..b5945c31f14b 100644 --- a/packages/mask/src/plugins/Wallet/SNSAdaptor/SelectProviderDialog/index.tsx +++ b/packages/mask/src/plugins/Wallet/SNSAdaptor/SelectProviderDialog/index.tsx @@ -16,7 +16,7 @@ import { WalletMessages } from '../../messages' import { hasNativeAPI, nativeAPI } from '../../../../../shared/native-rpc' import { PluginProviderRender } from './PluginProviderRender' import { pluginIDSettings } from '../../../../settings/settings' -import { isDashboardPage } from '@masknet/shared-base' +import { getSiteType, isDashboardPage } from '@masknet/shared-base' import { NetworkPluginID } from '@masknet/web3-shared-base' const useStyles = makeStyles()((theme) => ({ @@ -52,11 +52,12 @@ export function SelectProviderDialog(props: SelectProviderDialogProps) { }, [open]) // #endregion + const site = getSiteType() const networks = getRegisteredWeb3Networks() const providers = getRegisteredWeb3Providers() - const pluginID = useValueRef(pluginIDSettings) + const pluginIDs = useValueRef(pluginIDSettings) const network = useNetworkDescriptor() - const [undeterminedPluginID, setUndeterminedPluginID] = useState(pluginID) + const [undeterminedPluginID, setUndeterminedPluginID] = useState(site ? pluginIDs[site] : undefined) const [undeterminedNetworkID, setUndeterminedNetworkID] = useState(network?.ID) const Web3State = useWeb3State(undeterminedPluginID) diff --git a/packages/mask/src/settings/settings.ts b/packages/mask/src/settings/settings.ts index 2e68285ed93b..65dc13f60ddd 100644 --- a/packages/mask/src/settings/settings.ts +++ b/packages/mask/src/settings/settings.ts @@ -1,15 +1,33 @@ import { isEqual } from 'lodash-unified' import { Appearance } from '@masknet/theme' import { LanguageOptions } from '@masknet/public-api' -import { updateLanguage } from '@masknet/shared-base' +import { EnhanceableSite, ExtensionSite, updateLanguage } from '@masknet/shared-base' import { NetworkPluginID } from '@masknet/web3-shared-base' import { LaunchPage } from './types' -import { createGlobalSettings, createNetworkSettings, createComplexNetworkSettings } from './createSettings' +import { + createGlobalSettings, + createNetworkSettings, + createComplexNetworkSettings, + createComplexGlobalSettings, +} from './createSettings' export const appearanceSettings = createGlobalSettings('appearance', Appearance.default) export const languageSettings = createGlobalSettings('language', LanguageOptions.__auto__) languageSettings.addListener(updateLanguage) -export const pluginIDSettings = createGlobalSettings('pluginID', NetworkPluginID.PLUGIN_EVM) +export const pluginIDSettings = createComplexGlobalSettings>( + 'pluginID', + { + [EnhanceableSite.Twitter]: NetworkPluginID.PLUGIN_EVM, + [EnhanceableSite.Facebook]: NetworkPluginID.PLUGIN_EVM, + [EnhanceableSite.Instagram]: NetworkPluginID.PLUGIN_EVM, + [EnhanceableSite.OpenSea]: NetworkPluginID.PLUGIN_EVM, + [EnhanceableSite.Minds]: NetworkPluginID.PLUGIN_EVM, + [EnhanceableSite.Localhost]: NetworkPluginID.PLUGIN_EVM, + [ExtensionSite.Popup]: NetworkPluginID.PLUGIN_EVM, + [ExtensionSite.Dashboard]: NetworkPluginID.PLUGIN_EVM, + }, + isEqual, +) export const userGuideVersion = createGlobalSettings('userGuideVersion', 'v2') export const currentSetupGuideStatus = createNetworkSettings('currentSetupGuideStatus', '') From f652b81d6550ef82be179c75be3e00d6a77f16f6 Mon Sep 17 00:00:00 2001 From: nuanyang233 Date: Tue, 14 Jun 2022 18:14:49 +0800 Subject: [PATCH 2/2] fix: type error --- packages/shared-base/src/Messages/Mask.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/shared-base/src/Messages/Mask.ts b/packages/shared-base/src/Messages/Mask.ts index 53ecc73ff1b9..4f14f8541aab 100644 --- a/packages/shared-base/src/Messages/Mask.ts +++ b/packages/shared-base/src/Messages/Mask.ts @@ -2,6 +2,7 @@ import type { Appearance, LanguageOptions } from '@masknet/public-api' import type { SerializableTypedMessages } from '@masknet/typed-message' import type { ProfileIdentifier, PersonaIdentifier } from '../Identifier' import type { RelationFavor } from '../Persona/type' +import type { EnhanceableSite, ExtensionSite } from '../Site' enum NetworkPluginID { PLUGIN_EVM = 'com.mask.evm', @@ -11,7 +12,7 @@ enum NetworkPluginID { export interface MaskSettingsEvents { appearanceSettings: Appearance - pluginIDSettings: NetworkPluginID + pluginIDSettings: Record languageSettings: LanguageOptions currentPersonaIdentifier: string }