errorMapping.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { ApiClientError } from "@/lib/frontend/apiClient";
  2. /**
  3. * mapExplorerError
  4. *
  5. * Centralized error-to-UI mapping for the Explorer.
  6. *
  7. * Important:
  8. * - All returned strings are user-facing => German.
  9. * - We intentionally do NOT expose raw backend messages to the UI.
  10. *
  11. * @param {unknown} err
  12. * @returns {null | {
  13. * kind: "unauthenticated"|"forbidden"|"notfound"|"generic",
  14. * title: string,
  15. * description: string
  16. * }}
  17. */
  18. export function mapExplorerError(err) {
  19. if (!err) return null;
  20. // Standard backend/client errors
  21. if (err instanceof ApiClientError) {
  22. if (err.code === "AUTH_UNAUTHENTICATED") {
  23. return {
  24. kind: "unauthenticated",
  25. title: "Sitzung abgelaufen",
  26. description:
  27. "Ihre Sitzung ist abgelaufen. Sie werden zum Login weitergeleitet.",
  28. };
  29. }
  30. if (err.code === "AUTH_FORBIDDEN_BRANCH") {
  31. return {
  32. kind: "forbidden",
  33. title: "Kein Zugriff",
  34. description:
  35. "Sie haben keine Berechtigung, diese Niederlassung zu öffnen.",
  36. };
  37. }
  38. if (err.code === "FS_NOT_FOUND") {
  39. return {
  40. kind: "notfound",
  41. title: "Nicht gefunden",
  42. description:
  43. "Dieser Pfad existiert nicht (mehr). Bitte wählen Sie eine andere Ebene.",
  44. };
  45. }
  46. if (err.code === "CLIENT_NETWORK_ERROR") {
  47. return {
  48. kind: "generic",
  49. title: "Netzwerkfehler",
  50. description:
  51. "Bitte prüfen Sie Ihre Verbindung und versuchen Sie es erneut.",
  52. };
  53. }
  54. return {
  55. kind: "generic",
  56. title: "Fehler",
  57. description:
  58. "Beim Laden ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.",
  59. };
  60. }
  61. // Unknown errors
  62. return {
  63. kind: "generic",
  64. title: "Fehler",
  65. description:
  66. "Beim Laden ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.",
  67. };
  68. }