diff --git a/src/Components/AppShell/ContextWrapper.tsx b/src/Components/AppShell/ContextWrapper.tsx index ece603ad..67620cdf 100644 --- a/src/Components/AppShell/ContextWrapper.tsx +++ b/src/Components/AppShell/ContextWrapper.tsx @@ -1,6 +1,6 @@ import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { useContext, createContext } from 'react' -import { BrowserRouter as Router, useLocation } from 'react-router-dom' +import { BrowserRouter as Router, useInRouterContext } from 'react-router-dom' import { ToastContainer } from 'react-toastify' import { QuestsProvider } from '#components/Gaming/hooks/useQuests' @@ -21,43 +21,23 @@ const ContextCheckContext = createContext(false) export const ContextWrapper = ({ children }: { children: React.ReactNode }) => { const isWrapped = useContext(ContextCheckContext) - // Check if we are already inside a Router - let location - try { - // eslint-disable-next-line react-hooks/rules-of-hooks - location = useLocation() - // eslint-disable-next-line no-catch-all/no-catch-all - } catch (e) { - location = null - } + const isInsideRouter = useInRouterContext() - // Case 1: Only the Router is missing, but ContextWrapper is already provided - if (!location && isWrapped) { - return {children} - } + let returnValue = children - // Case 2: Neither Router nor ContextWrapper is present - if (!location && !isWrapped) { - return ( - - - {children} - - - ) - } - - // Case 3: Only ContextWrapper is missing - if (location && !isWrapped) { - return ( + if (!isWrapped) { + returnValue = ( - {children} + {returnValue} ) } - // Case 4: Both Router and ContextWrapper are already present - return children + if (!isInsideRouter) { + returnValue = {returnValue} + } + + return returnValue } // eslint-disable-next-line react/prop-types