import { Done, Error } from '@mui/icons-material'; import { CircularProgress, Grid, Link as MUILink, Typography } from '@mui/material'; import { useMutation } from '@tanstack/react-query'; import { createFileRoute, Link, useNavigate } from '@tanstack/react-router'; import { useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { useApi } from '../../api/Api'; import HeaderlessLayout from '../../components/Layouts/HeaderlessLayout'; import { ROUTES } from '../../types/Routes'; const Home = () => { const Api = useApi(); const { code } = Route.useSearch(); const { t } = useTranslation(); const navigate = useNavigate(); const confirmMutation = useMutation({ mutationFn: ({ code: _code }: { code: string }) => Api.confirmUser(_code), }); useEffect(() => { if (code) setTimeout(() => confirmMutation.mutate({ code }), 1000); }, []); //eslint-disable-line react-hooks/exhaustive-deps useEffect(() => { if (!code) { navigate({ to: '/' }); } }, [code]); //eslint-disable-line react-hooks/exhaustive-deps return ( {confirmMutation.isSuccess && } {confirmMutation.isError && } {(confirmMutation.isPending || confirmMutation.isIdle) && } {confirmMutation.isSuccess && {t('Confirm success header')}} {confirmMutation.isError && ( {t('Confirm error header')} )} {(confirmMutation.isPending || confirmMutation.isIdle) && ( {t('Confirm pending header')} )} {!confirmMutation.isPending && !confirmMutation.isIdle && ( {t('Back to main')} )} ); }; export const Route = createFileRoute(`${ROUTES.CONFIRM}/`)({ validateSearch: (search: Record): { code?: string } => { return { code: search?.code !== undefined ? (search?.code as string) : undefined, }; }, component: Home, });