diff --git a/src/app/admin/_components/SectionEditor.tsx b/src/app/admin/_components/SectionEditor.tsx index e6df36d..53d3ec7 100644 --- a/src/app/admin/_components/SectionEditor.tsx +++ b/src/app/admin/_components/SectionEditor.tsx @@ -51,6 +51,7 @@ export function SectionEditor({ } catch { setStatus("error"); setError("Ошибка сохранения"); + setTimeout(() => setStatus((s) => (s === "error" ? "idle" : s)), 4000); } }, [sectionKey]); diff --git a/src/app/admin/open-day/page.tsx b/src/app/admin/open-day/page.tsx index 55a55ed..cdeaf88 100644 --- a/src/app/admin/open-day/page.tsx +++ b/src/app/admin/open-day/page.tsx @@ -416,6 +416,7 @@ export default function OpenDayAdminPage() { const [classes, setClasses] = useState([]); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); + const [saveStatus, setSaveStatus] = useState<"idle" | "saved" | "error">("idle"); const [trainers, setTrainers] = useState([]); const [styles, setStyles] = useState([]); const [halls, setHalls] = useState([]); @@ -455,12 +456,18 @@ export default function OpenDayAdminPage() { if (saveTimerRef.current) clearTimeout(saveTimerRef.current); saveTimerRef.current = setTimeout(async () => { setSaving(true); - await adminFetch("/api/admin/open-day", { - method: "PUT", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify(updated), - }); + try { + const res = await adminFetch("/api/admin/open-day", { + method: "PUT", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(updated), + }); + setSaveStatus(res.ok ? "saved" : "error"); + } catch { + setSaveStatus("error"); + } setSaving(false); + setTimeout(() => setSaveStatus("idle"), 2000); }, 800); }, [] @@ -528,6 +535,13 @@ export default function OpenDayAdminPage() { return (
+ {saveStatus !== "idle" && ( +
+ {saveStatus === "saved" ? "Сохранено" : "Ошибка сохранения"} +
+ )}

День открытых дверей