import React, { useEffect, useState, useRef, JSX } from 'react'; import { Route, Routes, useLocation, useNavigate } from 'react-router-dom'; import { ThemeProvider } from '@mui/material/styles'; import { backstoryTheme } from './BackstoryTheme'; import { ConversationHandle } from 'components/Conversation'; import { CandidateRoute } from 'routes/CandidateRoute'; import { BackstoryLayout } from 'components/layout/BackstoryLayout'; import { ChatQuery } from 'types/types'; import { AuthProvider } from 'hooks/AuthContext'; import { AppStateProvider } from 'hooks/GlobalContext'; import './BackstoryApp.css'; import '@fontsource/roboto/300.css'; import '@fontsource/roboto/400.css'; import '@fontsource/roboto/500.css'; import '@fontsource/roboto/700.css'; const BackstoryApp = (): JSX.Element => { const navigate = useNavigate(); const location = useLocation(); const chatRef = useRef(null); const submitQuery = (query: ChatQuery): void => { console.log(`handleSubmitChatQuery:`, query, chatRef.current ? ' sending' : 'no handler'); chatRef.current?.submitQuery(query); navigate('/chat'); }; const [page, setPage] = useState(''); useEffect(() => { const currentRoute = location.pathname.split('/')[1] ? `/${location.pathname.split('/')[1]}` : '/'; setPage(currentRoute); }, [location.pathname]); // Render appropriate routes based on user type return ( } /> {/* Static/shared routes */} } /> ); }; export { BackstoryApp };