import { useState, useEffect } from "react"; import { useTranslation } from "react-i18next"; import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; import { getPrimaryContext, updatePrimaryContext } from "@/api/admin"; import { Save } from "lucide-react"; export function ContextEditor() { const { t } = useTranslation(); const queryClient = useQueryClient(); const [content, setContent] = useState(""); const [hasChanges, setHasChanges] = useState(false); const query = useQuery({ queryKey: ["admin-context"], queryFn: getPrimaryContext, }); useEffect(() => { if (query.data) { setContent(query.data.content); setHasChanges(false); } }, [query.data]); const mutation = useMutation({ mutationFn: (text: string) => updatePrimaryContext(text), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["admin-context"] }); setHasChanges(false); }, }); const handleChange = (value: string) => { setContent(value); setHasChanges(true); }; const handleSave = () => { mutation.mutate(content); }; // Warn on unsaved changes useEffect(() => { const handler = (e: BeforeUnloadEvent) => { if (hasChanges) e.preventDefault(); }; window.addEventListener("beforeunload", handler); return () => window.removeEventListener("beforeunload", handler); }, [hasChanges]); return (
{t("admin.version")}: {query.data.version}
)}