import { ExclamationCircle } from "@medusajs/icons" import { Text } from "@medusajs/ui" import { useTranslation } from "react-i18next" import { Navigate, useLocation, useRouteError } from "react-router-dom" import { isFetchError } from "../../../lib/is-fetch-error" export const ErrorBoundary = () => { const error = useRouteError() const location = useLocation() const { t } = useTranslation() let code: number | null = null if (isFetchError(error)) { if (error.status === 401) { return } code = error.status ?? null } /** * Log error in development mode. * * react-router-dom will sometimes swallow the error, * so this ensures that we always log it. */ if (process.env.NODE_ENV === "development") { console.error(error) } let title: string let message: string switch (code) { case 400: title = t("errorBoundary.badRequestTitle") message = t("errorBoundary.badRequestMessage") break case 404: title = t("errorBoundary.notFoundTitle") message = t("errorBoundary.notFoundMessage") break case 500: title = t("errorBoundary.internalServerErrorTitle") message = t("errorBoundary.internalServerErrorMessage") break default: title = t("errorBoundary.defaultTitle") message = t("errorBoundary.defaultMessage") break } return (
{title} {message}
) }