import React from 'react' import {View} from 'react-native' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {isNative} from '#/platform/detection' import {useAgent, useSession} from '#/state/session' import {atoms as a, useBreakpoints,useTheme} from '#/alf' import {Button, ButtonIcon,ButtonText} from '#/components/Button' import * as Dialog from '#/components/Dialog' import {DialogControlProps} from '#/components/Dialog' import {Divider} from '#/components/Divider' import {ArrowRotateCounterClockwise_Stroke2_Corner0_Rounded as Resend} from '#/components/icons/ArrowRotateCounterClockwise' import {useIntentDialogs} from '#/components/intents/IntentDialogs' import {Loader} from '#/components/Loader' import {Text} from '#/components/Typography' export function VerifyEmailIntentDialog() { const {verifyEmailDialogControl: control} = useIntentDialogs() return ( ) } function Inner({}: {control: DialogControlProps}) { const t = useTheme() const {gtMobile} = useBreakpoints() const {_} = useLingui() const {verifyEmailState: state} = useIntentDialogs() const [status, setStatus] = React.useState< 'loading' | 'success' | 'failure' | 'resent' >('loading') const [sending, setSending] = React.useState(false) const agent = useAgent() const {currentAccount} = useSession() React.useEffect(() => { ;(async () => { if (!state?.code) { return } try { await agent.com.atproto.server.confirmEmail({ email: (currentAccount?.email || '').trim(), token: state.code.trim(), }) setStatus('success') } catch (e) { setStatus('failure') } })() }, [agent.com.atproto.server, currentAccount?.email, state?.code]) const onPressResendEmail = async () => { setSending(true) await agent.com.atproto.server.requestEmailConfirmation() setSending(false) setStatus('resent') } return ( {status === 'loading' ? ( ) : status === 'success' ? ( Email Verified Thanks, you have successfully verified your email address. You can close this dialog. ) : status === 'failure' ? ( Invalid Verification Code The verification code you have provided is invalid. Please make sure that you have used the correct verification link or request a new one. ) : ( Email Resent We have sent another verification email to{' '} {currentAccount?.email} . )} {status === 'failure' && ( <> )} ) }