30 lines
948 B
TypeScript
30 lines
948 B
TypeScript
import {useMutation} from '@tanstack/react-query'
|
|
|
|
import {useAgent, useSession} from '#/state/session'
|
|
import {useUpdateAccountEmailStateQueryCache} from '#/components/dialogs/EmailDialog/data/useAccountEmailState'
|
|
|
|
export function useConfirmEmail() {
|
|
const agent = useAgent()
|
|
const {currentAccount} = useSession()
|
|
const updateAccountEmailStateQueryCache =
|
|
useUpdateAccountEmailStateQueryCache()
|
|
|
|
return useMutation({
|
|
mutationFn: async ({token}: {token: string}) => {
|
|
if (!currentAccount?.email) {
|
|
throw new Error('No email found for the current account')
|
|
}
|
|
|
|
await agent.com.atproto.server.confirmEmail({
|
|
email: currentAccount.email,
|
|
token: token.trim(),
|
|
})
|
|
const {data} = await agent.resumeSession(agent.session!)
|
|
updateAccountEmailStateQueryCache({
|
|
isEmailVerified: !!data.emailConfirmed,
|
|
email2FAEnabled: !!data.emailAuthFactor,
|
|
})
|
|
},
|
|
})
|
|
}
|