'use client' import { useState } from 'react' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Textarea } from '@/components/ui/textarea' import { Label } from '@/components/ui/label' import { AlertTriangle, Loader2 } from 'lucide-react' import { useToast } from '@/hooks/use-toast' import httpBrowserClient from '@/lib/httpBrowserClient' import { ApiEndpoints } from '@/config/api' import { useMutation, useQuery } from '@tanstack/react-query' import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog' export default function DeleteAccountForm() { const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false) const [deleteConfirmEmail, setDeleteConfirmEmail] = useState('') const [deleteReason, setDeleteReason] = useState('') const { toast } = useToast() const { data: currentUser } = useQuery({ queryKey: ['currentUser'], queryFn: () => httpBrowserClient .get(ApiEndpoints.auth.whoAmI()) .then((res) => res.data?.data), }) const handleDeleteAccount = () => { if (deleteConfirmEmail !== currentUser?.email) { toast({ title: 'Please enter your correct email address', }) return } else if (deleteReason.length < 4) { toast({ title: 'Please enter a reason for deletion', }) return } requestAccountDeletion() } const { mutate: requestAccountDeletion, isPending: isRequestingAccountDeletion, error: requestAccountDeletionError, isSuccess: isRequestAccountDeletionSuccess, } = useMutation({ mutationFn: () => httpBrowserClient.post(ApiEndpoints.support.requestAccountDeletion(), { message: deleteReason, }), onSuccess: () => { toast({ title: 'Account deletion request submitted', }) setIsDeleteDialogOpen(false) }, onError: () => { toast({ title: 'Failed to submit account deletion request', }) }, }) return ( <>
Once you delete your account, there is no going back. This action permanently removes all your data, cancels subscriptions, and revokes access to all services.
> ) }