"use client"; import { useState } from "react"; import { useMutation, useQueryClient } from "@tanstack/react-query"; import { AlertTriangle, Loader2, Trash2 } from "lucide-react"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; import { useTranslations } from "@/lib/i18n/context"; export function DangerZoneSection() { const { t } = useTranslations(); const queryClient = useQueryClient(); const [wipeMsg, setWipeMsg] = useState(null); const wipeAllData = useMutation({ mutationFn: async () => { const res = await fetch("/api/admin/data", { method: "DELETE", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ confirm: "DELETE ALL" }), }); const json = await res.json(); if (!res.ok) throw new Error(json.error || t("common.error")); return json.data as { measurements: number; intakeEvents: number; medications: number; apiTokens: number; withingsConnections: number; authChallenges: number; notificationChannels: number; pushSubscriptions: number; telegramScheduledDeletions: number; }; }, onSuccess: (data) => { queryClient.invalidateQueries(); setWipeMsg( t("admin.deletedResult", { measurements: data.measurements, medications: data.medications, intakeEvents: data.intakeEvents, apiTokens: data.apiTokens, withingsConnections: data.withingsConnections, authChallenges: data.authChallenges, notificationChannels: data.notificationChannels, pushSubscriptions: data.pushSubscriptions, telegramScheduledDeletions: data.telegramScheduledDeletions, }), ); }, onError: (err: Error) => { setWipeMsg(err.message); }, }); return (
{t("admin.dangerZone")}

{t("admin.deleteAllData")}

{t("admin.deleteAllDescription")}

{t("admin.deleteAllConfirm")} {t("admin.deleteAllConfirmDescription")} {t("common.cancel")} wipeAllData.mutate()} > {t("admin.finalDelete")}
{wipeMsg && (

{wipeMsg}

)}
); }