"use client"; import { useState } from "react"; import { TriangleAlert } from "lucide-react"; import { useTranslation } from "react-i18next"; import { Button } from "@/components/ui/button"; import { Dialog, DialogClose, DialogDescription, DialogFooter, DialogHeader, DialogPanel, DialogPopup, DialogTitle, } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { FieldLabel } from "@/components/settings/settings-parts"; import { authClient } from "@/lib/auth-client"; // Confirms (with the user's password) before permanently deleting the account // via Better Auth's deleteUser, then bounces to /login. export function DeleteAccountDialog({ open, onOpenChange, }: { open: boolean; onOpenChange: (open: boolean) => void; }) { const { t } = useTranslation(); const [password, setPassword] = useState(""); const [deleting, setDeleting] = useState(false); const [error, setError] = useState(null); const reset = (next: boolean) => { if (!next) { setPassword(""); setError(null); setDeleting(false); } onOpenChange(next); }; const confirmDelete = async () => { setDeleting(true); setError(null); const { error: err } = await authClient.deleteUser({ password }); if (err) { setError(err.message ?? t("settings.profile.deleteDialog.failed")); setDeleting(false); return; } // Sessions are revoked server-side; send the user back to login. window.location.href = "/login"; }; return ( {t("settings.profile.deleteDialog.title")} {t("settings.profile.deleteDialog.description")}
{t("settings.profile.deleteDialog.passwordLabel")} setPassword(event.target.value)} placeholder={t( "settings.profile.deleteDialog.passwordPlaceholder", )} type="password" value={password} />
{error ?

{error}

: null}
}> {t("settings.profile.deleteDialog.cancel")}
); }