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', '')
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
}