spacedrive/interface/RoutingContext.tsx
Oscar Beaumont f7d135c5be
Improve useZodRouteParams (#1917)
* Better `useZodRouteParams`

* cleanup message
2024-01-05 08:51:08 +00:00

30 lines
835 B
TypeScript

import { type Router } from '@remix-run/router';
import { createContext, useContext } from 'react';
import { createRoutes } from './app';
export const RoutingContext = createContext<{
visible: boolean;
currentIndex: number;
maxIndex: number;
routes: ReturnType<typeof createRoutes>;
} | null>(null);
// We split this into a different context because we don't want to trigger the hook unnecessarily
export const RouterContext = createContext<Router | null>(null);
export function useRoutingContext() {
const ctx = useContext(RoutingContext);
if (!ctx) throw new Error('useRoutingContext must be used within a RoutingContext.Provider');
return ctx;
}
export function useRouter() {
const ctx = useContext(RouterContext);
if (!ctx) throw new Error('useRouter must be used within a RouterContext.Provider');
return ctx;
}