1- import React , { useState } from 'react' ;
1+ import React , { ReactNode , useState } from 'react' ;
22import { BrowserRouter as Router , Route , Routes } from 'react-router-dom' ;
33
44import Navbar from './components/Navbar' ;
@@ -7,28 +7,64 @@ import Home from './pages/Home';
77import EventsDashboard from './pages/EventsDashboard' ;
88import Login from './pages/Login' ;
99import SignUp from './pages/SignUp' ;
10+ import { UserDetails } from './types' ;
1011
1112const App : React . FC = ( ) => {
1213 const [ isDarkMode , setIsDarkMode ] = useState ( false ) ; // Dark mode state
13- const [ user , setUser ] = useState < Record < string , string > | null > ( null ) ;
14+ const [ user , setUser ] = useState < UserDetails | null > ( null ) ;
1415
1516 const toggleDarkMode = ( ) => {
1617 setIsDarkMode ( ( prev ) => ! prev ) ;
1718 document . body . classList . toggle ( 'dark-mode' , ! isDarkMode ) ; // Toggle class based on state
1819 } ;
1920
21+ function checkLogin ( component : ReactNode ) : ReactNode {
22+ return user ? component : < p > You must login to see this page</ p > ;
23+ }
24+
25+ function checkAWSCreds ( component : ReactNode ) : ReactNode {
26+ if (
27+ user ?. aws_access_key ?. length &&
28+ user ?. aws_region ?. length > 0 &&
29+ user ?. aws_secret_access_key ?. length > 0
30+ ) {
31+ return component ;
32+ }
33+ return (
34+ < p >
35+ You must enter your AWS credentials in the profile page to see any data
36+ here.
37+ </ p >
38+ ) ;
39+ }
40+
2041 return (
2142 < Router >
22- < Navbar toggleDarkMode = { toggleDarkMode } isDarkMode = { isDarkMode } username = { user ?. username ?? null } setUser = { setUser } />
43+ < Navbar
44+ toggleDarkMode = { toggleDarkMode }
45+ isDarkMode = { isDarkMode }
46+ username = { user ?. username ?? null }
47+ setUser = { setUser }
48+ />
2349 < Routes >
2450 < Route path = "/login" element = { < Login setUser = { setUser } /> } />
2551 < Route path = "/signup" element = { < SignUp /> } />
26- { /* {user !== null && <> */ }
27- < Route path = "/" element = { < Home isDarkMode = { isDarkMode } /> } />
28- < Route path = "/profile" element = { < Profile isDarkMode = { isDarkMode } user = { user } /> } />
52+
53+ < Route
54+ path = "/"
55+ element = { checkAWSCreds ( checkLogin ( < Home isDarkMode = { isDarkMode } /> ) ) }
56+ />
57+ < Route
58+ path = "/profile"
59+ element = { checkLogin (
60+ < Profile isDarkMode = { isDarkMode } user = { user } setUser = { setUser } />
61+ ) }
62+ />
2963 < Route
3064 path = "/events-dashboard"
31- element = { < EventsDashboard isDarkMode = { isDarkMode } /> }
65+ element = { checkAWSCreds (
66+ checkLogin ( < EventsDashboard isDarkMode = { isDarkMode } /> )
67+ ) }
3268 />
3369 { /* </>} */ }
3470 </ Routes >
0 commit comments