mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
at thread-bug 1.2 kB view raw
1import {useMutation} from '@tanstack/react-query' 2 3import {useAgent} from '#/state/session' 4import {useRequestEmailUpdate} from '#/components/dialogs/EmailDialog/data/useRequestEmailUpdate' 5 6async function updateEmailAndRefreshSession( 7 agent: ReturnType<typeof useAgent>, 8 email: string, 9 token?: string, 10) { 11 await agent.com.atproto.server.updateEmail({email: email.trim(), token}) 12 await agent.resumeSession(agent.session!) 13} 14 15export function useUpdateEmail() { 16 const agent = useAgent() 17 const {mutateAsync: requestEmailUpdate} = useRequestEmailUpdate() 18 19 return useMutation< 20 {status: 'tokenRequired' | 'success'}, 21 Error, 22 {email: string; token?: string} 23 >({ 24 mutationFn: async ({email, token}: {email: string; token?: string}) => { 25 if (token) { 26 await updateEmailAndRefreshSession(agent, email, token) 27 return { 28 status: 'success', 29 } 30 } else { 31 const {tokenRequired} = await requestEmailUpdate() 32 if (tokenRequired) { 33 return { 34 status: 'tokenRequired', 35 } 36 } else { 37 await updateEmailAndRefreshSession(agent, email, token) 38 return { 39 status: 'success', 40 } 41 } 42 } 43 }, 44 }) 45}