From c62579303a897135ebdaa1b5ca8998a5a8eecb99 Mon Sep 17 00:00:00 2001 From: Lantt Date: Fri, 11 Mar 2022 18:06:19 +0800 Subject: [PATCH 1/8] feat: should use platform connect persona when check is verified on next id --- .../src/components/DataSource/useNextID.ts | 65 +++++++++++++------ .../InjectedComponents/ToolboxUnstyled.tsx | 16 +++-- 2 files changed, 57 insertions(+), 24 deletions(-) diff --git a/packages/mask/src/components/DataSource/useNextID.ts b/packages/mask/src/components/DataSource/useNextID.ts index 4f764c6aa74a..78f4295e70bb 100644 --- a/packages/mask/src/components/DataSource/useNextID.ts +++ b/packages/mask/src/components/DataSource/useNextID.ts @@ -1,6 +1,5 @@ import { useAsyncRetry } from 'react-use' -import type { NextIDPlatform } from '@masknet/shared-base' -import Services from '../../extension/service' +import type { NextIDPlatform, PersonaIdentifier } from '@masknet/shared-base' import { useMemo, useState } from 'react' import { activatedSocialNetworkUI } from '../../social-network' import { usePersonaConnectStatus } from './usePersonaConnectStatus' @@ -21,12 +20,28 @@ export const usePersonaBoundPlatform = (personaPublicKey: string) => { let isOpenedVerifyDialog = false let isOpenedFromButton = false +const verifyPersona = (personaIdentifier?: PersonaIdentifier) => async () => { + if (!personaIdentifier) return + currentSetupGuideStatus[activatedSocialNetworkUI.networkIdentifier].value = stringify({ + status: SetupGuideStep.VerifyOnNextID, + persona: personaIdentifier.toText(), + }) +} + export const useNextIDBoundByPlatform = (platform: NextIDPlatform, identity: string) => { return useAsyncRetry(() => { return queryExistedBindingByPlatform(platform, identity) }, [platform, identity]) } +export enum NextIDVerificationStatus { + WaitingLocalConnect = 'need-local-connect', + WaitingVerify = 'waiting-verify', + Verified = 'Verified', + HideVerifyDialog = 'hide-verify-dialog', + Other = 'Other', +} + export function useNextIDConnectStatus() { const ui = activatedSocialNetworkUI const [enableNextID] = useState(ui.configuration.nextIDConfig?.enable) @@ -46,42 +61,52 @@ export function useNextIDConnectStatus() { lastState.username || (lastRecognized.identifier.isUnknown ? '' : lastRecognized.identifier.userId), ) - const { value: isVerified = false, retry } = useAsyncRetry(async () => { - if (lastState.status === SetupGuideStep.FindUsername) return true - if (isOpenedVerifyDialog) return true - if (!enableNextID || !username || !personaConnectStatus.connected) return true + const { value: VerificationStatus = NextIDVerificationStatus.Other, retry } = useAsyncRetry(async () => { + // Whether in connect to {platform} process + if (lastState.status === SetupGuideStep.FindUsername) return NextIDVerificationStatus.WaitingLocalConnect - const currentPersona = await Services.Settings.getCurrentPersona() - if (!currentPersona?.publicHexKey) return true + // Whether it has been opened in a lifecycle + if (isOpenedVerifyDialog) return NextIDVerificationStatus.HideVerifyDialog + // Whether current platform support next id + if (!enableNextID || !username || !personaConnectStatus.connected) + return NextIDVerificationStatus.WaitingLocalConnect + + const { currentConnectedPersona } = personaConnectStatus + if (!currentConnectedPersona?.publicHexKey) return NextIDVerificationStatus.WaitingLocalConnect + + // Whether used 'Don't show me again if ( - dismissVerifyNextID[ui.networkIdentifier].value[`${username}_${currentPersona.identifier.toText()}`] && + dismissVerifyNextID[ui.networkIdentifier].value[ + `${username}_${currentConnectedPersona.identifier.toText()}` + ] && !isOpenedFromButton ) - return true + return NextIDVerificationStatus.HideVerifyDialog + // Whether verified in next id server const platform = ui.configuration.nextIDConfig?.platform as NextIDPlatform | undefined - if (!platform) return true - - const isBound = await queryIsBound(currentPersona.publicHexKey, platform, username) - if (isBound) return true + if (!platform) return NextIDVerificationStatus.Other - currentSetupGuideStatus[ui.networkIdentifier].value = stringify({ - status: SetupGuideStep.VerifyOnNextID, - persona: currentPersona?.identifier.toText(), - }) + const isBound = await queryIsBound(currentConnectedPersona.publicHexKey, platform, username) + if (isBound) return NextIDVerificationStatus.Verified isOpenedVerifyDialog = true isOpenedFromButton = false - return false + return NextIDVerificationStatus.WaitingVerify }, [username, enableNextID, lastStateRef.value, isOpenedVerifyDialog]) return { - isVerified, + isVerified: VerificationStatus === NextIDVerificationStatus.Verified, + status: VerificationStatus, reset: () => { isOpenedVerifyDialog = false isOpenedFromButton = true retry() }, + action: + VerificationStatus === NextIDVerificationStatus.WaitingVerify + ? verifyPersona(personaConnectStatus.currentConnectedPersona?.identifier) + : null, } } diff --git a/packages/mask/src/components/InjectedComponents/ToolboxUnstyled.tsx b/packages/mask/src/components/InjectedComponents/ToolboxUnstyled.tsx index 915d3dd38c8d..37ef203ab113 100644 --- a/packages/mask/src/components/InjectedComponents/ToolboxUnstyled.tsx +++ b/packages/mask/src/components/InjectedComponents/ToolboxUnstyled.tsx @@ -22,7 +22,7 @@ import { useWeb3State, useReverseAddress, } from '@masknet/plugin-infra' -import { useCallback, useMemo } from 'react' +import { useCallback, useEffect, useMemo } from 'react' import { useRemoteControlledDialog, WalletIcon } from '@masknet/shared' import { WalletMessages } from '../../plugins/Wallet/messages' import { useI18N } from '../../utils' @@ -33,7 +33,7 @@ import { MaskFilledIcon } from '../../resources/MaskIcon' import { makeStyles } from '@masknet/theme' import FiberManualRecordIcon from '@mui/icons-material/FiberManualRecord' import { usePersonaConnectStatus } from '../DataSource/usePersonaConnectStatus' -import { useNextIDConnectStatus } from '../DataSource/useNextID' +import { NextIDVerificationStatus, useNextIDConnectStatus } from '../DataSource/useNextID' const useStyles = makeStyles()((theme) => ({ title: { @@ -84,7 +84,7 @@ export interface ToolboxHintProps { } export function ToolboxHintUnstyled(props: ToolboxHintProps) { const { t } = useI18N() - const { isVerified: isNextIDVerified } = useNextIDConnectStatus() + const nextIDConnectStatus = useNextIDConnectStatus() const { ListItemButton = MuiListItemButton, ListItemText = MuiListItemText, @@ -110,8 +110,16 @@ export function ToolboxHintUnstyled(props: ToolboxHintProps) { : walletTitle }, [personaConnectStatus, walletTitle, t]) + useEffect(() => { + if (personaConnectStatus.action) return + const { status, isVerified, action } = nextIDConnectStatus + if (isVerified || status === NextIDVerificationStatus.WaitingLocalConnect) return + if (action) { + action() + } + }, [nextIDConnectStatus.status]) + const onClick = () => { - if (!isNextIDVerified) return personaConnectStatus.action ? personaConnectStatus.action() : openWallet() } From 79a0ae628d27415f4a565a8382c7513e8309709e Mon Sep 17 00:00:00 2001 From: Lantt Date: Mon, 14 Mar 2022 16:25:47 +0800 Subject: [PATCH 2/8] chore: update next id service url --- packages/web3-providers/src/NextID/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web3-providers/src/NextID/index.ts b/packages/web3-providers/src/NextID/index.ts index 3893ece3b76f..eb1b2ffd5bc4 100644 --- a/packages/web3-providers/src/NextID/index.ts +++ b/packages/web3-providers/src/NextID/index.ts @@ -13,7 +13,7 @@ import { first } from 'lodash-unified' const BASE_URL = process.env.channel === 'stable' && process.env.NODE_ENV === 'production' ? 'https://proof-service.next.id/' - : 'https://js43x8ol17.execute-api.ap-east-1.amazonaws.com/api/' + : 'https://proof-service.nextnext.id/' interface CreatePayloadBody { action: string From d203050a3bb5a4326c06896b2a1dcce9dab261ed Mon Sep 17 00:00:00 2001 From: Lantt Date: Mon, 14 Mar 2022 16:45:13 +0800 Subject: [PATCH 3/8] refactor: refactor setup guide --- packages/mask/shared-ui/locales/en-US.json | 1 - packages/mask/shared-ui/locales/qya-AA.json | 1 - packages/mask/shared-ui/locales/zh-CN.json | 1 - .../InjectedComponents/SetupGuide.tsx | 32 +++++++++++-------- .../SetupGuide/PinExtension.tsx | 20 +----------- packages/mask/src/settings/settings.ts | 3 ++ 6 files changed, 22 insertions(+), 36 deletions(-) diff --git a/packages/mask/shared-ui/locales/en-US.json b/packages/mask/shared-ui/locales/en-US.json index 146dcd7b5d73..8c784dad526c 100644 --- a/packages/mask/shared-ui/locales/en-US.json +++ b/packages/mask/shared-ui/locales/en-US.json @@ -99,7 +99,6 @@ "setup_guide_pin_tip_step_find_left": "Find Mask Network in the list of extensions and click the ", "setup_guide_pin_tip_step_find_right": " button.", "setup_guide_pin_tip_successfully": "Pinned successfully.", - "setup_guide_pin_dismiss": "Don't show again.", "user_guide_tip_1": "Connect wallet to explore multi-chain dApps.", "user_guide_tip_2": "Setup your exclusive NFT Avatar, explore the endless possibilities of Web 3.0.", "user_guide_tip_3": "Click here to have a quick start.", diff --git a/packages/mask/shared-ui/locales/qya-AA.json b/packages/mask/shared-ui/locales/qya-AA.json index 7263cf4140a8..5bcdcca08763 100644 --- a/packages/mask/shared-ui/locales/qya-AA.json +++ b/packages/mask/shared-ui/locales/qya-AA.json @@ -99,7 +99,6 @@ "setup_guide_pin_tip_step_find_left": "crwdns14606:0crwdne14606:0", "setup_guide_pin_tip_step_find_right": "crwdns14608:0crwdne14608:0", "setup_guide_pin_tip_successfully": "crwdns14610:0crwdne14610:0", - "setup_guide_pin_dismiss": "crwdns13017:0crwdne13017:0", "user_guide_tip_1": "crwdns9059:0crwdne9059:0", "user_guide_tip_2": "crwdns9061:0crwdne9061:0", "user_guide_tip_3": "crwdns13019:0crwdne13019:0", diff --git a/packages/mask/shared-ui/locales/zh-CN.json b/packages/mask/shared-ui/locales/zh-CN.json index 219f45ccba3e..19e65b2cc82f 100644 --- a/packages/mask/shared-ui/locales/zh-CN.json +++ b/packages/mask/shared-ui/locales/zh-CN.json @@ -91,7 +91,6 @@ "user_guide_tip_connected": "您已成功连接到此帐户。", "setup_guide_say_hello_content": "你好,Mask世界。这是我发的第一条加密信息。安装 https://mask.io来给我发送加密贴文吧。 ", "setup_guide_say_hello_follow": "关注 {{account}} 来探索Web 3.0。", - "setup_guide_pin_dismiss": "不再显示", "user_guide_tip_1": "点击这里快速访问主要功能。", "user_guide_tip_2": "点击这里连接您的钱包。您可以在此选择网络或更改您的钱包。", "user_guide_tip_3": "点击这里快速开始。", diff --git a/packages/mask/src/components/InjectedComponents/SetupGuide.tsx b/packages/mask/src/components/InjectedComponents/SetupGuide.tsx index 6fc6378e4820..fe211e6ded22 100644 --- a/packages/mask/src/components/InjectedComponents/SetupGuide.tsx +++ b/packages/mask/src/components/InjectedComponents/SetupGuide.tsx @@ -3,7 +3,7 @@ import { makeStyles } from '@masknet/theme' import { useValueRef } from '@masknet/shared' import { useI18N, MaskMessages } from '../../utils' import { activatedSocialNetworkUI, SocialNetworkUI } from '../../social-network' -import { currentSetupGuideStatus, dismissPinExtensionTip, userGuideStatus } from '../../settings/settings' +import { currentSetupGuideStatus, userGuideStatus, userPinExtension } from '../../settings/settings' import type { SetupGuideCrossContextStatus } from '../../settings/types' import { makeTypedMessageText } from '@masknet/typed-message' import { @@ -155,6 +155,8 @@ function SetupGuideUI(props: SetupGuideUIProps) { }) await waitingPost + const isBound = await queryIsBound(persona_.publicHexKey, platform, username) + if (!isBound) throw new Error('Failed to verify.') } } @@ -163,9 +165,8 @@ function SetupGuideUI(props: SetupGuideUIProps) { setStep(SetupGuideStep.Close) } - const onDone = async () => { - // check verify nextID id state - if (step === SetupGuideStep.FindUsername && enableNextID && persona_?.publicHexKey) { + const onConnected = async () => { + if (enableNextID && persona_?.publicHexKey && platform && username) { const isBound = await queryIsBound(persona_.publicHexKey, platform, username) if (!isBound) { currentSetupGuideStatus[ui.networkIdentifier].value = stringify({ @@ -176,22 +177,25 @@ function SetupGuideUI(props: SetupGuideUIProps) { } } - // check pin tip status - if (step === SetupGuideStep.FindUsername && !dismissPinExtensionTip.value) { - currentSetupGuideStatus[ui.networkIdentifier].value = stringify({ status: SetupGuideStep.PinExtension }) + if (!userPinExtension) { setStep(SetupGuideStep.PinExtension) return } - // check verify on next id status - if (step === SetupGuideStep.VerifyOnNextID && enableNextID && persona_ && persona_.publicHexKey) { - const isBound = await queryIsBound(persona_.publicHexKey, platform, username) - if (!isBound) return + onDone() + } + + const onVerifyDone = async () => { + if (!userPinExtension) { setStep(SetupGuideStep.PinExtension) return } - // check user guide status + onDone() + } + + const onDone = async () => { + userPinExtension.value = true const network = ui.networkIdentifier if (network === 'twitter.com' && userGuideStatus[network].value !== 'completed') { userGuideStatus[network].value = '1' @@ -222,7 +226,7 @@ function SetupGuideUI(props: SetupGuideUIProps) { avatar={lastRecognized.avatar} onUsernameChange={setUsername} onConnect={onConnect} - onDone={onDone} + onDone={onConnected} onClose={onClose} enableNextID={enableNextID} /> @@ -237,7 +241,7 @@ function SetupGuideUI(props: SetupGuideUIProps) { avatar={lastRecognized.avatar} onUsernameChange={setUsername} onVerify={onVerify} - onDone={onDone} + onDone={onVerifyDone} onClose={onClose} /> ) diff --git a/packages/mask/src/components/InjectedComponents/SetupGuide/PinExtension.tsx b/packages/mask/src/components/InjectedComponents/SetupGuide/PinExtension.tsx index 79d9bcbe00ab..414acd773a1a 100644 --- a/packages/mask/src/components/InjectedComponents/SetupGuide/PinExtension.tsx +++ b/packages/mask/src/components/InjectedComponents/SetupGuide/PinExtension.tsx @@ -1,12 +1,10 @@ import { useWizardDialogStyles, WizardDialog } from './WizardDialog' import { useI18N } from '../../../utils' -import { useState } from 'react' import { SetupGuideStep } from './types' -import { Box, Button, Checkbox, FormControlLabel, Typography } from '@mui/material' +import { Box, Button, Typography } from '@mui/material' import { MaskIcon } from '../../../resources/MaskIcon' import ExtensionIcon from '@mui/icons-material/Extension' import { PinIcon } from '@masknet/icons' -import { dismissPinExtensionTip } from '../../../settings/settings' interface PinExtensionProps { onDone?: () => void @@ -16,7 +14,6 @@ export function PinExtension({ onDone }: PinExtensionProps) { const pinImg = new URL('../../../resources/extensionPinned.png', import.meta.url).toString() const { classes } = useWizardDialogStyles() const { t } = useI18N() - const [checked, setChecked] = useState(true) return ( } - dismiss={ - { - setChecked(e.target.checked) - dismissPinExtensionTip.value = e.target.checked - }} - /> - } - label={t('setup_guide_pin_dismiss')} - /> - } onClose={onDone} /> ) diff --git a/packages/mask/src/settings/settings.ts b/packages/mask/src/settings/settings.ts index 54d11bfdf45a..8f21f995b71d 100644 --- a/packages/mask/src/settings/settings.ts +++ b/packages/mask/src/settings/settings.ts @@ -62,6 +62,9 @@ export const sayHelloShowed: NetworkSettings = createNetworkSettings('s export const dismissPinExtensionTip = createGlobalSettings('dismissPinExtensionTip', false, { primary: () => '', }) +export const userPinExtension = createGlobalSettings('userPinExtension', false, { + primary: () => '', +}) export const dismissVerifyNextID: NetworkSettings<{ [key in string]: boolean }> = createNetworkSettings( 'dismissVerifyNextID', {}, From ce825d79a6168b242218f21e85c8eda4433490bb Mon Sep 17 00:00:00 2001 From: Lantt Date: Tue, 15 Mar 2022 18:21:29 +0800 Subject: [PATCH 4/8] fix: should not render guide tooltip when on popup post dialog --- .../InjectedComponents/PostDialogHint.tsx | 53 ++++++++++--------- .../twitter.com/injection/PostDialogHint.tsx | 2 + 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/packages/mask/src/components/InjectedComponents/PostDialogHint.tsx b/packages/mask/src/components/InjectedComponents/PostDialogHint.tsx index 0cad752b07ab..495f6b010042 100644 --- a/packages/mask/src/components/InjectedComponents/PostDialogHint.tsx +++ b/packages/mask/src/components/InjectedComponents/PostDialogHint.tsx @@ -3,14 +3,11 @@ import { IconButton, Tooltip } from '@mui/material' import { useStylesExtends, makeStyles } from '@masknet/theme' import { useI18N } from '../../utils' import type { BannerProps } from '../Welcomes/Banner' -import { useValueRef } from '@masknet/shared' import { isMobileFacebook } from '../../social-network-adaptor/facebook.com/utils/isMobile' import { MaskSharpIcon } from '../../resources/MaskIcon' -import { useMyIdentities } from '../DataSource/useActivatedUI' -import { currentSetupGuideStatus } from '../../settings/settings' -import { activatedSocialNetworkUI } from '../../social-network' import classNames from 'classnames' import GuideStep from '../GuideStep' +import { usePersonaConnectStatus } from '../DataSource/usePersonaConnectStatus' interface TooltipConfigProps { placement?: 'bottom' | 'top' @@ -18,6 +15,7 @@ interface TooltipConfigProps { } export interface PostDialogHintUIProps extends withClasses<'buttonTransform' | 'iconButton' | 'tooltip'> { + disableGuideTip?: boolean size?: number tooltip?: TooltipConfigProps onHintButtonClicked: () => void @@ -44,26 +42,32 @@ const useStyles = makeStyles()((theme) => ({ const EntryIconButton = memo((props: PostDialogHintUIProps) => { const { t } = useI18N() - const { size, tooltip } = props + const { size, tooltip, disableGuideTip } = props const classes = useStylesExtends(useStyles(), props) - return ( + const getEntry = () => ( + + + + + + ) + + return disableGuideTip ? ( + getEntry() + ) : ( - - - - - + {getEntry()} ) }) @@ -88,11 +92,10 @@ export const PostDialogHintUI = memo(function PostDialogHintUI(props: PostDialog export interface PostDialogHintProps extends Partial { NotSetupYetPromptProps?: Partial size?: number + disableGuideTip?: boolean } export function PostDialogHint(props: PostDialogHintProps) { - const identities = useMyIdentities() - const connecting = useValueRef(currentSetupGuideStatus[activatedSocialNetworkUI.networkIdentifier]) - - if (connecting || identities.length === 0) return null + const personaConnectStatus = usePersonaConnectStatus() + if (personaConnectStatus.action) return null return {}} {...props} /> } diff --git a/packages/mask/src/social-network-adaptor/twitter.com/injection/PostDialogHint.tsx b/packages/mask/src/social-network-adaptor/twitter.com/injection/PostDialogHint.tsx index c4b5efbb4f9a..ecbd4f59066b 100644 --- a/packages/mask/src/social-network-adaptor/twitter.com/injection/PostDialogHint.tsx +++ b/packages/mask/src/social-network-adaptor/twitter.com/injection/PostDialogHint.tsx @@ -61,6 +61,8 @@ function PostDialogHintAtTwitter({ reason }: { reason: 'timeline' | 'popup' }) { }, [reason]) return ( Date: Tue, 15 Mar 2022 18:22:56 +0800 Subject: [PATCH 5/8] fix: user pin extension value --- .../mask/src/components/InjectedComponents/SetupGuide.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/mask/src/components/InjectedComponents/SetupGuide.tsx b/packages/mask/src/components/InjectedComponents/SetupGuide.tsx index fe211e6ded22..23b5bd6392b1 100644 --- a/packages/mask/src/components/InjectedComponents/SetupGuide.tsx +++ b/packages/mask/src/components/InjectedComponents/SetupGuide.tsx @@ -177,7 +177,8 @@ function SetupGuideUI(props: SetupGuideUIProps) { } } - if (!userPinExtension) { + if (!userPinExtension.value) { + userPinExtension.value = true setStep(SetupGuideStep.PinExtension) return } @@ -186,7 +187,8 @@ function SetupGuideUI(props: SetupGuideUIProps) { } const onVerifyDone = async () => { - if (!userPinExtension) { + if (!userPinExtension.value) { + userPinExtension.value = true setStep(SetupGuideStep.PinExtension) return } @@ -195,7 +197,6 @@ function SetupGuideUI(props: SetupGuideUIProps) { } const onDone = async () => { - userPinExtension.value = true const network = ui.networkIdentifier if (network === 'twitter.com' && userGuideStatus[network].value !== 'completed') { userGuideStatus[network].value = '1' From f4835593234488f98988f98d4d706bc424c13015 Mon Sep 17 00:00:00 2001 From: Lantt Date: Tue, 15 Mar 2022 18:26:37 +0800 Subject: [PATCH 6/8] fix: fix should not render guide tooltip when on popup post dialog --- .../twitter.com/injection/PostDialogHint.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/mask/src/social-network-adaptor/twitter.com/injection/PostDialogHint.tsx b/packages/mask/src/social-network-adaptor/twitter.com/injection/PostDialogHint.tsx index ecbd4f59066b..7169d274e4ae 100644 --- a/packages/mask/src/social-network-adaptor/twitter.com/injection/PostDialogHint.tsx +++ b/packages/mask/src/social-network-adaptor/twitter.com/injection/PostDialogHint.tsx @@ -62,7 +62,6 @@ function PostDialogHintAtTwitter({ reason }: { reason: 'timeline' | 'popup' }) { return ( Date: Wed, 16 Mar 2022 11:59:40 +0800 Subject: [PATCH 7/8] feat: should show 'ok' when verify success --- .../components/InjectedComponents/SetupGuide/VerifyNextID.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/mask/src/components/InjectedComponents/SetupGuide/VerifyNextID.tsx b/packages/mask/src/components/InjectedComponents/SetupGuide/VerifyNextID.tsx index 5c7c8811db5e..4e14d30fc99e 100644 --- a/packages/mask/src/components/InjectedComponents/SetupGuide/VerifyNextID.tsx +++ b/packages/mask/src/components/InjectedComponents/SetupGuide/VerifyNextID.tsx @@ -88,10 +88,10 @@ export const VerifyNextID = ({ variant="contained" init={t('setup_guide_verify')} waiting={t('setup_guide_verifying')} - complete={t('setup_guide_verify')} + complete={t('ok')} failed={t('setup_guide_verifying_failed')} executor={onVerify} - onComplete={onDone} + completeOnClick={onDone} disabled={!username || !personaName} completeIcon={null} failIcon={null} From 78324572a970ac903ea775f4c1a1704cce2fad93 Mon Sep 17 00:00:00 2001 From: Lantt Date: Thu, 17 Mar 2022 11:51:52 +0800 Subject: [PATCH 8/8] feat: should hide verify dialog when connected persona is not current persona --- packages/mask/src/components/DataSource/useNextID.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/mask/src/components/DataSource/useNextID.ts b/packages/mask/src/components/DataSource/useNextID.ts index 78f4295e70bb..652f2f079830 100644 --- a/packages/mask/src/components/DataSource/useNextID.ts +++ b/packages/mask/src/components/DataSource/useNextID.ts @@ -3,13 +3,14 @@ import type { NextIDPlatform, PersonaIdentifier } from '@masknet/shared-base' import { useMemo, useState } from 'react' import { activatedSocialNetworkUI } from '../../social-network' import { usePersonaConnectStatus } from './usePersonaConnectStatus' -import { currentSetupGuideStatus, dismissVerifyNextID } from '../../settings/settings' +import { currentPersonaIdentifier, currentSetupGuideStatus, dismissVerifyNextID } from '../../settings/settings' import stringify from 'json-stable-stringify' import { SetupGuideStep } from '../InjectedComponents/SetupGuide/types' import type { SetupGuideCrossContextStatus } from '../../settings/types' import { useLastRecognizedIdentity } from './useActivatedUI' import { useValueRef } from '@masknet/shared' import { queryExistedBindingByPersona, queryExistedBindingByPlatform, queryIsBound } from '@masknet/web3-providers' +import Services from '../../extension/service' export const usePersonaBoundPlatform = (personaPublicKey: string) => { return useAsyncRetry(() => { @@ -73,6 +74,11 @@ export function useNextIDConnectStatus() { return NextIDVerificationStatus.WaitingLocalConnect const { currentConnectedPersona } = personaConnectStatus + + const currentPersonaIdentity = await Services.Settings.getCurrentPersonaIdentifier() + if (currentPersonaIdentity !== currentConnectedPersona?.identifier) + return NextIDVerificationStatus.WaitingLocalConnect + if (!currentConnectedPersona?.publicHexKey) return NextIDVerificationStatus.WaitingLocalConnect // Whether used 'Don't show me again @@ -94,7 +100,7 @@ export function useNextIDConnectStatus() { isOpenedVerifyDialog = true isOpenedFromButton = false return NextIDVerificationStatus.WaitingVerify - }, [username, enableNextID, lastStateRef.value, isOpenedVerifyDialog]) + }, [username, enableNextID, lastStateRef.value, isOpenedVerifyDialog, currentPersonaIdentifier.value]) return { isVerified: VerificationStatus === NextIDVerificationStatus.Verified,