Skip to content
Snippets Groups Projects
Unverified Commit c036c0a2 authored by Noel Simbolon's avatar Noel Simbolon
Browse files

resolve merge conflicts

parent 5b10ccde
1 merge request!1Dev
import './App.css' import "./App.css";
import React from 'react' import React from "react";
import { RenderRoutes } from "@/routes/RenderRoutes.tsx"; import { RenderRoutes } from "@/routes/RenderRoutes.tsx";
import {routes} from "@/routes/routes.ts"; import { routes } from "@/routes/routes.ts";
import AuthProvider from "@/context/AuthProvider.tsx"; import AuthProvider from "@/context/AuthProvider.tsx";
export const AuthContext = React.createContext(null) export const AuthContext = React.createContext(null);
export const useAuth = () => React.useContext(AuthContext) export const useAuth = () => React.useContext(AuthContext);
export const Routes = RenderRoutes(routes) export const Routes: React.ReactNode = RenderRoutes(routes);
const TonalityApp = () => { const TonalityApp = () => {
return ( return (
<AuthProvider> <AuthProvider>
<Routes/> <Routes />
</AuthProvider> </AuthProvider>
) );
} };
export default TonalityApp export default TonalityApp;
import {Navigate, Outlet,} from 'react-router-dom'; import { Navigate, Outlet } from "react-router-dom";
import {useAuth} from "@/TonalityApp.tsx"; import { useAuth } from "@/TonalityApp.tsx";
const ProtectedRoute = ({isPublic}) => { const ProtectedRoute = ({ isPublic }) => {
const isValidUser : boolean = useAuth().token === null; const isValidUser: boolean = useAuth().token === null;
return (isValidUser || isPublic) ? <Outlet/> : <Navigate to='/login'/> return isValidUser || isPublic ? <Outlet /> : <Navigate to="/login" />;
} };
export default ProtectedRoute; const ProtectedRoute = ({ isPublic, isAuthorized }) => {
\ No newline at end of file return isPublic || isAuthorized ? <Outlet /> : <Navigate to="/login" />;
};
export default ProtectedRoute;
import React from 'react'; import React from "react";
import {Route, Routes} from 'react-router-dom'; import { Route, Routes } from "react-router-dom";
import ProtectedRoute from "@/routes/ProtectedRoute.tsx"; import ProtectedRoute from "@/routes/ProtectedRoute.tsx";
import {generateFlattenRoutes} from "@/lib/utils.ts"; import { generateFlattenRoutes } from "@/lib/utils.ts";
export const RenderRoutes : React.FC = (mainRoutes) => {
return ({isAuthorized}) => { export const RenderRoutes: React.FC = (mainRoutes) => {
const layouts = mainRoutes.map(({layout: Layout, routes}, index) => { return ({ isAuthorized }) => {
const layouts = mainRoutes.map(({ layout: Layout, routes }, index) => {
const subRoutes = generateFlattenRoutes(routes); const subRoutes = generateFlattenRoutes(routes);
subRoutes.map(({component: Component, path, name}) => { subRoutes.map(({ component: Component, path, name }) => {
console.log('component', Component) console.log("component", Component);
console.log('path', path) console.log("path", path);
console.log('name', name) console.log("name", name);
}) });
return ( return (
<Route key={index} element={<Layout/>}> <Route key={index} element={<Layout />}>
{subRoutes.map(({component: Component, path, name, isPublic}, index) => { {subRoutes.map(
const isPublics : boolean = typeof isPublic === 'boolean' ? isPublic : false; ({ component: Component, path, name, isPublic }, index) => {
const componentFound = Component !== undefined; const isPublics: boolean =
if (!componentFound) return null; typeof isPublic === "boolean" ? isPublic : false;
const componentFound = Component !== undefined;
if (!componentFound) return null;
return ( return (
(<Route key={index} element={<ProtectedRoute isPublic={isPublics} isAuthorized={isAuthorized}/>}>) <Route
&& Component key={index}
&& path element={
&& (<Route key={name} element={<Component/>} path={path}/>) <ProtectedRoute
&& (</Route>) isPublic={isPublics}
) isAuthorized={isAuthorized}
})} />
}
>
) && Component && path && (
<Route key={name} element={<Component />} path={path} />) && (
</Route>
);
},
)}
</Route> </Route>
) );
}); });
console.log('layouts', layouts) console.log("layouts", layouts);
return ( return (
<Routes> <Routes>
<> <>{layouts}</>
{layouts}
</>
</Routes> </Routes>
); );
}; };
} };
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment