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.",
	};
}
