From 3afe828e7070eefa37cdd590fc99b026efb1e636 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reinhard=20X=2E=20F=C3=BCrst?= Date: Wed, 1 Jul 2026 18:48:37 +0200 Subject: [PATCH] Checkbox im Liste-Tab aktivieren (erledigt-Toggle) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der Liste-Tab erhält einen onToggleDone-Handler mit optimistischem Update, sodass Termine dort direkt als erledigt/offen markiert werden können. Editieren/Löschen bleiben dem Termine-Tab vorbehalten. Co-Authored-By: Claude Opus 4.8 (1M context) --- app/liste/page.tsx | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/app/liste/page.tsx b/app/liste/page.tsx index 6da26dc..9cac740 100644 --- a/app/liste/page.tsx +++ b/app/liste/page.tsx @@ -30,6 +30,32 @@ export default function ListePage() { fetchAppointments(); }, []); + // Statuswechsel (erledigt) direkt aus der Liste, mit optimistischem Update. + const toggleDone = async (id: string) => { + const current = appointments.find((a) => a.id === id); + if (!current) return; + const newStatus = !current.erledigt; + setAppointments((prev) => + prev.map((a) => (a.id === id ? { ...a, erledigt: newStatus } : a)) + ); + try { + const res = await fetch(`/api/appointments/${id}`, { + method: 'PUT', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ erledigt: newStatus }), + }); + if (!res.ok) throw new Error('Fehler beim Statuswechsel.'); + } catch (error) { + console.error('Fehler beim Statuswechsel:', error); + // Rückgängig machen bei Fehler + setAppointments((prev) => + prev.map((a) => + a.id === id ? { ...a, erledigt: current.erledigt } : a + ) + ); + } + }; + return (
@@ -37,7 +63,10 @@ export default function ListePage() { {isLoading ? (
Lade Daten...
) : ( - + )}