54 lines
1.5 KiB
TypeScript
54 lines
1.5 KiB
TypeScript
import { useEffect } from 'react';
|
|
import { BrowserRouter, Routes, Route, useLocation } from 'react-router-dom';
|
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
import MainLayout from '@/layouts/MainLayout';
|
|
import Home from '@/pages/Home/Home';
|
|
import Notes from '@/pages/Notes/Notes';
|
|
import AIAssistant from '@/pages/AIAssistant/AIAssistant';
|
|
import Campus from '@/pages/Campus/Campus';
|
|
import Events from '@/pages/Events/Events';
|
|
import Community from '@/pages/Community/Community';
|
|
import Profile from '@/pages/Profile/Profile';
|
|
|
|
const queryClient = new QueryClient({
|
|
defaultOptions: {
|
|
queries: {
|
|
staleTime: 5 * 60 * 1000,
|
|
gcTime: 10 * 60 * 1000,
|
|
},
|
|
},
|
|
});
|
|
|
|
function ScrollToTop() {
|
|
const { pathname } = useLocation();
|
|
|
|
useEffect(() => {
|
|
window.scrollTo(0, 0);
|
|
}, [pathname]);
|
|
|
|
return null;
|
|
}
|
|
|
|
function App() {
|
|
return (
|
|
<QueryClientProvider client={queryClient}>
|
|
<BrowserRouter>
|
|
<ScrollToTop />
|
|
<Routes>
|
|
<Route element={<MainLayout />}>
|
|
<Route path="/" element={<Home />} />
|
|
<Route path="/notes" element={<Notes />} />
|
|
<Route path="/ai-assistant" element={<AIAssistant />} />
|
|
<Route path="/campus" element={<Campus />} />
|
|
<Route path="/events" element={<Events />} />
|
|
<Route path="/community" element={<Community />} />
|
|
<Route path="/profile" element={<Profile />} />
|
|
</Route>
|
|
</Routes>
|
|
</BrowserRouter>
|
|
</QueryClientProvider>
|
|
);
|
|
}
|
|
|
|
export default App;
|