Something went wrong. Try again.
Bluesky app fork with some witchin' additions 💫 forked from jollywhoppers.com/witchsky.app
Something went wrong. Try again.
1.6 kB · 62 lines
TypeScript
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263import {type Client} from '@atproto/lex'import {useMutation} from '@tanstack/react-query'
import {usePdsClient, useSessionApi} from '#/state/session'import {useRequestEmailUpdate} from '#/components/dialogs/EmailDialog/data/useRequestEmailUpdate'import {com} from '#/lexicons'
async function updateEmailAndRefreshSession( pdsClient: Client, refreshSession: () => Promise<unknown>, email: string, token?: string,) { await pdsClient.call(com.atproto.server.updateEmail, { email: email.trim(), token, }) await refreshSession()}
export function useUpdateEmail() { const pdsClient = usePdsClient() const {refreshSession} = useSessionApi() const {mutateAsync: requestEmailUpdate} = useRequestEmailUpdate()
return useMutation< {status: 'tokenRequired' | 'success'}, Error, {email: string; token?: string} >({ mutationFn: async ({email, token}: {email: string; token?: string}) => { if (token) { await updateEmailAndRefreshSession( pdsClient, refreshSession, email, token, ) return { status: 'success', } } else { const {tokenRequired} = await requestEmailUpdate() if (tokenRequired) { return { status: 'tokenRequired', } } else { await updateEmailAndRefreshSession( pdsClient, refreshSession, email, token, ) return { status: 'success', } } } }, })}