From 795bdbeb59eb3bd9531edf37d5f4b59cea71b436 Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Fri, 25 Apr 2025 13:59:58 -0500 Subject: [PATCH] Fire off confirmation email after change --- .../EmailDialog/data/useRequestEmailVerification.ts | 13 +++++++++++++ .../dialogs/EmailDialog/screens/Update.tsx | 8 ++++++++ 2 files changed, 21 insertions(+) create mode 100644 src/components/dialogs/EmailDialog/data/useRequestEmailVerification.ts diff --git a/src/components/dialogs/EmailDialog/data/useRequestEmailVerification.ts b/src/components/dialogs/EmailDialog/data/useRequestEmailVerification.ts new file mode 100644 index 0000000000..ae308c7afc --- /dev/null +++ b/src/components/dialogs/EmailDialog/data/useRequestEmailVerification.ts @@ -0,0 +1,13 @@ +import {useMutation} from '@tanstack/react-query' + +import {useAgent} from '#/state/session' + +export function useRequestEmailVerification() { + const agent = useAgent() + + return useMutation({ + mutationFn: async () => { + await agent.com.atproto.server.requestEmailConfirmation() + }, + }) +} diff --git a/src/components/dialogs/EmailDialog/screens/Update.tsx b/src/components/dialogs/EmailDialog/screens/Update.tsx index ee6f2fb791..a3b386a6df 100644 --- a/src/components/dialogs/EmailDialog/screens/Update.tsx +++ b/src/components/dialogs/EmailDialog/screens/Update.tsx @@ -19,6 +19,7 @@ import {wait} from '#/lib/async/wait' import {useUpdateEmail} from '#/components/dialogs/EmailDialog/data/useUpdateEmail' import {useRequestEmailUpdate} from '#/components/dialogs/EmailDialog/data/useRequestEmailUpdate' +import {useRequestEmailVerification} from '#/components/dialogs/EmailDialog/data/useRequestEmailVerification' import {TokenField} from '#/components/dialogs/EmailDialog/components/TokenField' export function Update() { @@ -41,6 +42,8 @@ export function Update() { >(null) const {mutateAsync: requestEmailUpdate} = useRequestEmailUpdate() + const {mutateAsync: requestEmailVerification} = useRequestEmailVerification() + const handleResendRequestEmailUpdate = async () => { setResendStatus('sending') try { @@ -86,6 +89,11 @@ export function Update() { setTokenRequired(true) } else if (status === 'success') { setSuccess(true) + + try { + // fire off a confirmation email immediately + await requestEmailVerification() + } catch {} } } catch (e) { logger.error('EmailDialog: update email failed', {safeMessage: e})