Skip to content

Commit

Permalink
feat: mf-6084 verify persona with publish post api (#11489)
Browse files Browse the repository at this point in the history
* feat: mf-6084 verify persona with publish post api

closes mf-6071

* fixup! feat: mf-6084 verify persona with publish post api
  • Loading branch information
swkatmask committed Mar 18, 2024
1 parent 6486967 commit ed07f2c
Show file tree
Hide file tree
Showing 20 changed files with 472 additions and 155 deletions.
@@ -1,13 +1,12 @@
import { Icons } from '@masknet/icons'
import { LoadingStatus, SOCIAL_MEDIA_ROUND_ICON_MAPPING } from '@masknet/shared'
import { BindingDialog, LoadingStatus, SOCIAL_MEDIA_ROUND_ICON_MAPPING, type BindingDialogProps } from '@masknet/shared'
import { SOCIAL_MEDIA_NAME } from '@masknet/shared-base'
import { makeStyles } from '@masknet/theme'
import { Box, Button, Typography } from '@mui/material'
import { memo } from 'react'
import { Trans } from 'react-i18next'
import { activatedSiteAdaptorUI } from '../../../site-adaptor-infra/ui.js'
import { useMaskSharedTrans } from '../../../../shared-ui/index.js'
import { BindingDialog, type BindingDialogProps } from './BindingDialog.js'
import { SetupGuideContext } from './SetupGuideContext.js'

const useStyles = makeStyles()((theme) => {
Expand Down
@@ -1,5 +1,5 @@
import type { BindingDialogProps } from '@masknet/shared'
import { AccountConnectStatus } from './AccountConnectStatus.js'
import type { BindingDialogProps } from './BindingDialog.js'
import { SetupGuideContext } from './SetupGuideContext.js'

export function CheckConnection({ onClose }: BindingDialogProps) {
Expand Down
@@ -1,7 +1,19 @@
import { Icons } from '@masknet/icons'
import { delay } from '@masknet/kit'
import { EmojiAvatar } from '@masknet/shared'
import { MaskMessages, currentSetupGuideStatus, formatPersonaFingerprint } from '@masknet/shared-base'
import {
BindingDialog,
EmojiAvatar,
type BindingDialogProps,
useVerifyContent,
useBaseUIRuntime,
useVerifyNextID,
} from '@masknet/shared'
import {
MaskMessages,
currentSetupGuideStatus,
formatPersonaFingerprint,
resolveNetworkToNextIDPlatform,
} from '@masknet/shared-base'
import { ActionButton, MaskColorVar, MaskTextField, makeStyles } from '@masknet/theme'
import { NextIDProof } from '@masknet/web3-providers'
import { Telemetry } from '@masknet/web3-telemetry'
Expand All @@ -12,15 +24,11 @@ import { useCallback, useMemo, useState } from 'react'
import { Trans } from 'react-i18next'
import { useAsyncFn } from 'react-use'
import Services from '../../../../shared-ui/service.js'
import { activatedSiteAdaptorUI } from '../../../site-adaptor-infra/ui.js'
import { useMaskSharedTrans } from '../../../../shared-ui/index.js'
import { useNextIDVerify } from '../../DataSource/useNextIDVerify.js'
import { AccountConnectStatus } from './AccountConnectStatus.js'
import { BindingDialog, type BindingDialogProps } from './BindingDialog.js'
import { SetupGuideContext } from './SetupGuideContext.js'
import { useConnectPersona } from './hooks/useConnectPersona.js'
import { useNotifyConnected } from './hooks/useNotifyConnected.js'
import { usePostContent } from './hooks/usePostContent.js'

const useStyles = makeStyles()((theme) => ({
body: {
Expand Down Expand Up @@ -158,9 +166,12 @@ export function VerifyNextID({ onClose }: VerifyNextIDProps) {
const personaIdentifier = personaInfo?.identifier

const [customUserId, setCustomUserId] = useState('')
const { data: post, isPending: creatingPostContent } = usePostContent(personaIdentifier, userId || customUserId)
const { configuration, networkIdentifier } = activatedSiteAdaptorUI!
const nextIdPlatform = configuration.nextIDConfig?.platform
const { data: verifyInfo, isPending: creatingPostContent } = useVerifyContent(
personaIdentifier,
userId || customUserId,
)
const { networkIdentifier } = useBaseUIRuntime()
const nextIdPlatform = resolveNetworkToNextIDPlatform(networkIdentifier)

const { data: personaAvatar } = useQuery({
queryKey: ['@@my-own-persona-info'],
Expand All @@ -180,7 +191,7 @@ export function VerifyNextID({ onClose }: VerifyNextIDProps) {
// Show connect result for the first time.
const { loading: connecting } = useConnectPersona()

const [, handleVerifyNextID] = useNextIDVerify()
const [, handleVerifyNextID] = useVerifyNextID()
const [{ loading: verifying, value: verifiedSuccess }, onVerify] = useAsyncFn(async () => {
if (!userId) return
if (!personaInfo) return
Expand Down Expand Up @@ -294,10 +305,10 @@ export function VerifyNextID({ onClose }: VerifyNextIDProps) {
{t.setup_guide_verify_tip()}
</Typography>
</>
: post ?
: verifyInfo ?
<>
<Typography className={classes.postContentTitle}>{t.setup_guide_post_content()}</Typography>
<Typography className={classes.postContent}>{post}</Typography>
<Typography className={classes.postContent}>{verifyInfo.post}</Typography>
<Typography className={classes.tip} component="div">
{t.setup_guide_verify_tip()}
</Typography>
Expand Down

This file was deleted.

1 change: 1 addition & 0 deletions packages/mask/content-script/site-adaptor-infra/ui.ts
Expand Up @@ -153,6 +153,7 @@ export async function activateSiteAdaptorUIInner(ui_deferred: SiteAdaptorUI.Defe
getPostIdFromNewPostToast: ui.configuration.nextIDConfig?.getPostIdFromNewPostToast,
connectPersona,
postMessage: ui.automation?.nativeCompositionDialog?.attachText,
publishPost: ui.automation.endpoint?.publishPost,
getSearchedKeyword: ui.collecting.getSearchedKeyword,
getUserIdentity: ui.utils.getUserIdentity,
})
Expand Down
Expand Up @@ -151,7 +151,7 @@ export const PostProviderTwitter: SiteAdaptorUI.CollectingCapabilities.PostsProv

export function getPostIdFromNewPostToast() {
const toastLinkNode = toastLinkSelector().evaluate()
return toastLinkNode?.href ? parseId(toastLinkNode?.href) : ''
return toastLinkNode?.href ? parseId(toastLinkNode.href) : ''
}

export function collectVerificationPost(keyword: string) {
Expand Down
3 changes: 3 additions & 0 deletions packages/plugin-infra/src/site-adaptor/context.ts
Expand Up @@ -16,6 +16,7 @@ export interface __SiteAdaptorContext__ {
getUserIdentity: ((useId: string) => Promise<IdentityResolved | undefined>) | undefined
getPostIdFromNewPostToast: (() => string) | undefined
postMessage: ((text: string, options?: any) => Promise<void>) | undefined
publishPost: ((mediaObjects: Array<string | Blob>, options?: any) => Promise<string | null>) | undefined
getSearchedKeyword: (() => string) | undefined
connectPersona: () => Promise<void>
}
Expand All @@ -29,6 +30,7 @@ export let share: __SiteAdaptorContext__['share']
export let getUserIdentity: __SiteAdaptorContext__['getUserIdentity']
export let getPostIdFromNewPostToast: __SiteAdaptorContext__['getPostIdFromNewPostToast']
export let postMessage: __SiteAdaptorContext__['postMessage']
export let publishPost: __SiteAdaptorContext__['publishPost']
export let getSearchedKeyword: __SiteAdaptorContext__['getSearchedKeyword']
export let connectPersona: __SiteAdaptorContext__['connectPersona']
export function __setSiteAdaptorContext__(value: __SiteAdaptorContext__) {
Expand All @@ -43,6 +45,7 @@ export function __setSiteAdaptorContext__(value: __SiteAdaptorContext__) {
getUserIdentity,
getPostIdFromNewPostToast,
postMessage,
publishPost,
getSearchedKeyword,
connectPersona,
} = value)
Expand Down
26 changes: 26 additions & 0 deletions packages/shared/src/UI/components/VerifyNextIDDialog/Modal.tsx
@@ -0,0 +1,26 @@
import type { PersonaInformation, SingletonModalRefCreator } from '@masknet/shared-base'
import { forwardRef, useState } from 'react'
import { VerifyNextIDDialog, type VerifyNextIDDialogCloseProps, type VerifyNextIDDialogProps } from './index.js'
import { useSingletonModal } from '@masknet/shared-base-ui'

export const VerifyNextIDModal = forwardRef<
SingletonModalRefCreator<VerifyNextIDDialogProps, VerifyNextIDDialogCloseProps>
>(function VerifyNextIDModal(props, ref) {
const [personaInfo, setPersonaInfo] = useState<PersonaInformation>()
const [open, dispatch] = useSingletonModal(ref, {
onOpen(props) {
setPersonaInfo(props.personaInfo)
},
})
if (!open || !personaInfo) return null
return (
<VerifyNextIDDialog
personaInfo={personaInfo}
onClose={() => dispatch?.close({ aborted: true })}
onSentPost={(res) => {
if (!dispatch || !res) return
dispatch.close(res)
}}
/>
)
})

0 comments on commit ed07f2c

Please sign in to comment.