import { Navigate, useSearchParams, useNavigate } from 'react-router-dom'
import { Helmet } from 'react-helmet-async'
import { trpc } from '~/utils/trpc'
import { logout } from '~/utils/auth'
import IVButton from '~/components/IVButton'
import { MeProvider, useMe } from '~/components/MeContext'
import IVAPIError from '~/components/IVAPIError'
import NotificationCenter, { notify } from '~/components/NotificationCenter'
import AuthLoadingState from '~/components/AuthLoadingState'
import AuthPageHeader from '~/components/AuthPageHeader'
function Container(props) {
return (
Confirm email | Interval
{props.children}
)
}
export default function ConfirmEmailPage() {
const [searchParams] = useSearchParams()
const seal = searchParams.get('seal')
const confirmQuery = trpc.useQuery(['auth.confirm-email', { token: seal }], {
refetchOnWindowFocus: false,
retry: false,
})
if (confirmQuery.error) {
if (confirmQuery.error.message === 'UNAUTHORIZED') {
return (
)
}
return (
)
}
if (!confirmQuery.data) {
return
}
if (seal && confirmQuery.isSuccess) {
// imporatant! perform a full reload to refresh the user object in MeContext.
window.location.assign(`/dashboard/develop/actions?nc-email-confirmed`)
return
}
if (confirmQuery.data.isConfirmRequired === false) {
return
}
return (
)
}
function SentEmailNotice() {
const { me } = useMe()
const navigate = useNavigate()
const refreshToken = trpc.useMutation('auth.confirm-email.refresh')
const onResend = () => {
refreshToken.mutate(null, {
onSuccess() {
notify.success('We sent a new confirmation to your email.')
},
})
}
return (
We sent an email to {me?.email}. Please click the
link in the email to verify your email address and complete your
signup.
)
}