import { ApiClientError } from "@/lib/frontend/apiClient"; /** * mapExplorerError * * Centralized error-to-UI mapping for the Explorer. * * Important: * - All returned strings are user-facing => German. * - We intentionally do NOT expose raw backend messages to the UI. * * @param {unknown} err * @returns {null | { * kind: "unauthenticated"|"forbidden"|"notfound"|"generic", * title: string, * description: string * }} */ export function mapExplorerError(err) { if (!err) return null; // Standard backend/client errors if (err instanceof ApiClientError) { if (err.code === "AUTH_UNAUTHENTICATED") { return { kind: "unauthenticated", title: "Sitzung abgelaufen", description: "Ihre Sitzung ist abgelaufen. Sie werden zum Login weitergeleitet.", }; } if (err.code === "AUTH_FORBIDDEN_BRANCH") { return { kind: "forbidden", title: "Kein Zugriff", description: "Sie haben keine Berechtigung, diese Niederlassung zu öffnen.", }; } if (err.code === "FS_NOT_FOUND") { return { kind: "notfound", title: "Nicht gefunden", description: "Dieser Pfad existiert nicht (mehr). Bitte wählen Sie eine andere Ebene.", }; } if (err.code === "CLIENT_NETWORK_ERROR") { return { kind: "generic", title: "Netzwerkfehler", description: "Bitte prüfen Sie Ihre Verbindung und versuchen Sie es erneut.", }; } return { kind: "generic", title: "Fehler", description: "Beim Laden ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.", }; } // Unknown errors return { kind: "generic", title: "Fehler", description: "Beim Laden ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.", }; }