-
Notifications
You must be signed in to change notification settings - Fork 306
/
usePostContent.ts
32 lines (29 loc) · 1.38 KB
/
usePostContent.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import { NextIDAction, SignType, fromHex, toBase64, type PersonaIdentifier } from '@masknet/shared-base'
import { NextIDProof } from '@masknet/web3-providers'
import { useQuery } from '@tanstack/react-query'
import Services from '../../../../../shared-ui/service.js'
import { activatedSiteAdaptorUI } from '../../../../site-adaptor-infra/ui.js'
export function usePostContent(personaIdentifier: PersonaIdentifier | undefined, userId: string) {
const platform = activatedSiteAdaptorUI!.configuration.nextIDConfig?.platform
return useQuery({
queryKey: ['create-persona-payload', personaIdentifier?.publicKeyAsHex, userId, platform],
queryFn: async () => {
if (!personaIdentifier?.publicKeyAsHex || !platform) return null
const payload = await NextIDProof.createPersonaPayload(
personaIdentifier.publicKeyAsHex,
NextIDAction.Create,
userId,
platform,
)
if (!payload) throw new Error('Failed to create persona payload.')
const signature = await Services.Identity.signWithPersona(
SignType.Message,
payload.signPayload,
personaIdentifier,
location.origin,
true,
)
return payload.postContent.replace('%SIG_BASE64%', toBase64(fromHex(signature)))
},
})
}