"use client"; import { useEffect, useState } from "react"; export default function ViewManager() { const [view, setView] = useState<{ id: string; name: string; token: string } | null>( null ); const [error, setError] = useState(null); const load = async () => { try { const viewRes = await fetch("/api/views/default"); if (!viewRes.ok) { throw new Error("Daten konnten nicht geladen werden."); } setView(await viewRes.json()); } catch (err) { setError((err as Error).message); } }; useEffect(() => { load(); }, []); useEffect(() => { const handler = () => load(); window.addEventListener("views-updated", handler); return () => window.removeEventListener("views-updated", handler); }, []); const icalBase = typeof window === "undefined" ? "" : window.location.origin; return (

Persönlich

Meine Terminansicht

Stelle dir eine persönliche Terminansicht zusammen und abonniere sie als iCal.

{error &&

{error}

}

Deine Standardansicht

Diese Ansicht kannst du im Kalender oder in der Listenansicht direkt befüllen.

{view && (

iCal URL

{icalBase}/api/ical/{view.token}

)}
); }