Something went wrong. Try again.
Bluesky app fork with some witchin' additions 💫
Something went wrong. Try again.
1.3 kB · 49 lines
TypeScript
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950import {useMutation} from '@tanstack/react-query'
import {useAgent} from '#/state/session'import {pdsAgent} from '#/state/session/agent'import {useRequestEmailUpdate} from '#/components/dialogs/EmailDialog/data/useRequestEmailUpdate'
async function updateEmailAndRefreshSession( agent: ReturnType<typeof useAgent>, email: string, token?: string,) { await pdsAgent(agent).com.atproto.server.updateEmail({ email: email.trim(), token, }) await agent.resumeSession(agent.session!)}
export function useUpdateEmail() { const agent = useAgent() 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(agent, email, token) return { status: 'success', } } else { const {tokenRequired} = await requestEmailUpdate() if (tokenRequired) { return { status: 'tokenRequired', } } else { await updateEmailAndRefreshSession(agent, email, token) return { status: 'success', } } } }, })}