'use client'; import { zodResolver } from '@hookform/resolvers/zod'; import { useRouter } from 'next/navigation'; import { useTranslations } from 'next-intl'; import { useState } from 'react'; import { useForm } from 'react-hook-form'; import { toast } from 'sonner'; import { Button } from '@/components/ui/common/Button'; import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, } from '@/components/ui/common/Form'; import { Input } from '@/components/ui/common/Input'; import { InputOTP, InputOTPGroup, InputOTPSlot, } from '@/components/ui/common/InputOTP'; import { useDeactivateAccountMutation } from '@/graphql/generated/output'; import { useAuth } from '@/hooks/useAuth'; import { type TypeDeactivateSchema, deactivateSchema } from '@/schemas/auth/deactivate.schema'; import AuthWrapper from '../AuthWrapper'; export const DeactivateForm = () => { const t = useTranslations('auth.deactivate'); const { exit } = useAuth(); const router = useRouter(); const [isShowConfirm, setIsShowConfirm] = useState(false); const form = useForm({ resolver: zodResolver(deactivateSchema), defaultValues: { email: '', password: '', }, }); const [deactivate, { loading: isLoadingDeactivate }] = useDeactivateAccountMutation({ onCompleted(data) { if (data.deactivateAccount.message) { setIsShowConfirm(true); } else { exit(); toast.success(t('successMessage')); router.push('/'); } }, onError() { toast.error(t('errorMessage')); }, }); const { isValid } = form.formState; function onSubmit(data: TypeDeactivateSchema) { deactivate({ variables: { data } }); } return (
{isShowConfirm ? ( ( {t('pinLabel')} {t('pinDescription')} )} /> ) : ( <> ( {t('emailLabel')} {t('emailDescription')} )} /> ( {t('passwordLabel')} {t('passwordDescription')} )} /> )}
); };