diff --git a/app/src/App.tsx b/app/src/App.tsx index ba0a60e..bfb41c6 100644 --- a/app/src/App.tsx +++ b/app/src/App.tsx @@ -1,56 +1,32 @@ -import { useEffect } from 'react'; -import { Route, Routes } from 'react-router-dom'; +import { Navigate, Route, Routes } from 'react-router-dom'; import Pilots from './components/pilots/Pilots'; import Logbook from './components/logbook/Logbook'; -import { useAppContext } from './hooks/appContext/UseAppContext'; -import { AxiosInstance, AxiosResponse } from 'axios'; -import { useHttpClient } from './hooks/httpClient/UseHttpClient'; -import { useFeatureFlag } from './hooks/featureFlag/UseFeatureFlag'; import SiteNav from './components/siteNav/SiteNav'; -import { IPublicClientApplication } from '@azure/msal-browser'; -import { MsalProvider } from '@azure/msal-react'; +import { useIsAuthenticated } from '@azure/msal-react'; -interface AppProps { - pca: IPublicClientApplication +interface ProtectedRouteProps { + children: React.ReactNode; } -const App: React.FC = ({ pca }: AppProps) => { - const httpClient: AxiosInstance = useHttpClient(); - const appContext = useAppContext(); +const App = () => { + const isAuthenticated = useIsAuthenticated() - // useEffect(() => { - // const getFeatureFlags = async () => { - // try { - // const featureFlagKeys: string = 'flying-pilots'; - // const response: AxiosResponse = await httpClient.get( - // `api/featureFlags?keys=${featureFlagKeys}&label=${import.meta.env.MODE}` - // ); - // const featureFlags: { key: string; enabled: boolean }[] = response.data; - - // if (featureFlags.length > 0) { - // appContext.dispatch({ - // type: 'SET_FEATURE_FLAGS', - // payload: featureFlags - // }); - // } - // } catch (error) { - // console.log(error); - // } - // }; - - // getFeatureFlags(); - // }, []); + const ProtectedRoute = ({ children }: ProtectedRouteProps) => { + return isAuthenticated ? children : + } return ( - + <> - {/* {useFeatureFlag('flying-pilots')?.enabled && ( */} - } /> - {/* )} */} + + + + } /> } /> - + ); }; diff --git a/app/src/components/logbook/Logbook.tsx b/app/src/components/logbook/Logbook.tsx index e8a33b7..e1f5737 100644 --- a/app/src/components/logbook/Logbook.tsx +++ b/app/src/components/logbook/Logbook.tsx @@ -32,7 +32,7 @@ const Logbook: React.FC = () => { dispatch({ type: 'SET_IS_LOADING', payload: true }); const response: AxiosResponse = await httpClient.get(`api/logs`); - console.log(response) + if (response.data.length > 0) { dispatch({ type: 'SET_ENTRIES', payload: response.data }); diff --git a/app/src/components/siteNav/SiteNav.tsx b/app/src/components/siteNav/SiteNav.tsx index d112758..35f2401 100644 --- a/app/src/components/siteNav/SiteNav.tsx +++ b/app/src/components/siteNav/SiteNav.tsx @@ -27,22 +27,30 @@ type EventPayloadExtended = EventPayload & { accessToken: string }; const SiteNav: React.FC = () => { const [loading, setLoading] = useState(false); const [userPhoto, setUserPhoto] = useState(); + const [pages, setPages] = useState<{ name: string; url: string; }[]>([]); const httpClient: AxiosInstance = useHttpClient(); const appContext = useAppContext(); const isAuthenticated = useIsAuthenticated(); const { getAccessToken } = useAccessToken(); const { inProgress, instance } = useMsal(); const navigate = useNavigate(); - const pages = [ - { - name: 'Logbook', - url: '/' - }, - { - name: 'Pilots', - url: '/pilots' + const getPages = () => { + const pages = [ + { + name: 'Logbook', + url: '/' + } + ]; + + if (isAuthenticated) { + pages.push({ + name: 'Pilots', + url: '/pilots' + }) } - ]; + + setPages(pages) + }; const handleSignIn = () => { instance.loginRedirect({ scopes: [`api://${import.meta.env.VITE_CLIENT_ID}/user_impersonation`] @@ -125,9 +133,14 @@ const SiteNav: React.FC = () => { Object.keys(appContext.state.userProfile).length === 0 ) { setUserProfile(); + getPages(); } }, [isAuthenticated]); + useEffect(() => { + getPages(); + }, []) + return ( { ReactDOM.createRoot(document.getElementById('root')!).render( - - - - - + + + + + + + ); }) \ No newline at end of file