import { useEffect } from 'react' import { useSelector } from 'react-redux' import { Navigate, Route, Routes } from 'react-router-dom' import { NostrController } from './controllers' import { appPrivateRoutes, privateRoutes, publicRoutes } from './routes' import { State } from './store/rootReducer' import { getNsecBunkerDelegatedKey, saveNsecBunkerDelegatedKey } from './utils' import { MainLayout } from './layouts/Main' import { LandingPage } from './pages/landing/LandingPage' const App = () => { const authState = useSelector((state: State) => state.auth) useEffect(() => { generateBunkerDelegatedKey() }, []) const generateBunkerDelegatedKey = () => { const existingKey = getNsecBunkerDelegatedKey() if (!existingKey) { const nostrController = NostrController.getInstance() const newDelegatedKey = nostrController.generateDelegatedKey() saveNsecBunkerDelegatedKey(newDelegatedKey) } } return ( }> {authState?.loggedIn && ( } /> )} {authState?.loggedIn && privateRoutes.map((route, index) => ( ))} {publicRoutes.map((route, index) => { if (authState?.loggedIn) { if (!route.hiddenWhenLoggedIn) { return ( ) } } else { return ( ) } })} {!authState || (!authState.loggedIn && } />)} ) } export default App