42 lines
1007 B
TypeScript
42 lines
1007 B
TypeScript
import {
|
|
createRouter,
|
|
RootRoute,
|
|
Route,
|
|
AnyRoute,
|
|
} from "@tanstack/react-router";
|
|
import { RootLayout } from "./RouteLayout";
|
|
import { getRoutes } from "./routeConfigs";
|
|
import NotFound from "../Pages/NotFound";
|
|
import { Auth } from "../Pages/Auth";
|
|
import { ItemWithSubItems } from "../types/userPermissions";
|
|
|
|
export const rootRoute = new RootRoute({
|
|
component: RootLayout,
|
|
});
|
|
|
|
export function makeRouter(auth: string | null, roles: ItemWithSubItems[]) {
|
|
const routeConfigs = getRoutes(auth, roles);
|
|
|
|
const childRoutes: AnyRoute[] = routeConfigs.map(
|
|
({ path, component }) =>
|
|
new Route({
|
|
getParentRoute: () => rootRoute,
|
|
path,
|
|
component,
|
|
}) as AnyRoute,
|
|
);
|
|
|
|
const notFoundRoute = new Route({
|
|
getParentRoute: () => rootRoute,
|
|
path: "*",
|
|
component: auth ? NotFound : Auth,
|
|
});
|
|
|
|
const routeTree = rootRoute.addChildren([...childRoutes, notFoundRoute]);
|
|
|
|
return createRouter({
|
|
routeTree,
|
|
defaultPreload: "intent",
|
|
});
|
|
}
|