diff --git a/rsconcept/frontend/src/app/ApplicationLayout.tsx b/rsconcept/frontend/src/app/ApplicationLayout.tsx index 0229394f..87407967 100644 --- a/rsconcept/frontend/src/app/ApplicationLayout.tsx +++ b/rsconcept/frontend/src/app/ApplicationLayout.tsx @@ -1,5 +1,4 @@ import { Suspense } from 'react'; -import { ErrorBoundary } from 'react-error-boundary'; import { Outlet } from 'react-router'; import ConceptToaster from '@/app/ConceptToaster'; @@ -10,22 +9,10 @@ import ModalLoader from '@/components/ui/ModalLoader'; import { useAppLayoutStore, useMainHeight, useViewportHeight } from '@/stores/appLayout'; import { globals } from '@/utils/constants'; -import ErrorFallback from './ErrorFallback'; import { GlobalDialogs } from './GlobalDialogs'; import { GlobalTooltips } from './GlobalTooltips'; import { NavigationState } from './Navigation/NavigationContext'; -const resetState = () => { - console.log('Resetting state after error fallback'); -}; - -const logError = (error: Error, info: { componentStack?: string | null | undefined }) => { - console.log('Error fallback: ' + error.message); - if (info.componentStack) { - console.log('Component stack: ' + info.componentStack); - } -}; - function ApplicationLayout() { const mainHeight = useMainHeight(); const viewportHeight = useViewportHeight(); @@ -35,41 +22,39 @@ function ApplicationLayout() { const noFooter = useAppLayoutStore(state => state.noFooter); return ( - - -
- + +
+ - }> - - - + }> + + + - + -
-
- }> - - -
- {!noNavigation && !noFooter ?
: null} -
+
+
+ }> + + +
+ {!noNavigation && !noFooter ?
: null}
- - +
+
); } diff --git a/rsconcept/frontend/src/app/ErrorFallback.tsx b/rsconcept/frontend/src/app/ErrorFallback.tsx index 843d0df8..c83c5162 100644 --- a/rsconcept/frontend/src/app/ErrorFallback.tsx +++ b/rsconcept/frontend/src/app/ErrorFallback.tsx @@ -1,13 +1,19 @@ -import { type FallbackProps } from 'react-error-boundary'; +import { useNavigate, useRouteError } from 'react-router'; import InfoError from '@/components/info/InfoError'; import Button from '@/components/ui/Button'; -function ErrorFallback({ error, resetErrorBoundary }: FallbackProps) { +function ErrorFallback() { + const error = useRouteError(); + const router = useNavigate(); + + function resetErrorBoundary() { + Promise.resolve(router('/')).catch(console.log); + } return (

Что-то пошло не так!

-
); diff --git a/rsconcept/frontend/src/app/Router.tsx b/rsconcept/frontend/src/app/Router.tsx index 28c8bff2..c74ab5b3 100644 --- a/rsconcept/frontend/src/app/Router.tsx +++ b/rsconcept/frontend/src/app/Router.tsx @@ -13,13 +13,14 @@ import LoginPage from '@/pages/LoginPage'; import NotFoundPage from '@/pages/NotFoundPage'; import ApplicationLayout from './ApplicationLayout'; +import ErrorFallback from './ErrorFallback'; import { routes } from './urls'; export const Router = createBrowserRouter([ { path: '/', element: , - errorElement: , + errorElement: , loader: prefetchAuth, hydrateFallbackElement: , children: [