/
foult080
/
hackaton-app
Обзор
Документация
Войти
/
foult080
/
hackaton-app
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
web-app/src/App.tsx
81 строка
3 KB
Foult080
feat(): new footer
09 июл 2026, 11:20
09 июл 2026, 11:20
2612364
Код
Авторство
О чём код?
import { useEffect } from 'react' import { Routes, Route } from 'react-router-dom' import { useQuery } from '@tanstack/react-query' import { useAuthStore } from './store/authStore' import { authApi } from './api/auth' import Navbar from './components/layout/Navbar' import Footer from './components/layout/Footer' import ProtectedRoute from './components/auth/ProtectedRoute' import AlertList from './components/ui/Alert' import Landing from './pages/Landing' import Login from './pages/Login' import Signin from './pages/Signin' import Dashboard from './pages/Dashboard' import CreateTeam from './pages/CreateTeam' import AddHack from './pages/AddHack' import Privacy from './pages/Privacy' import Contacts from './pages/Contacts' import About from './pages/About' import Docs from './pages/Docs' import Spinner from './components/ui/Spinner' function AuthLoader({ children }: { children: React.ReactNode }) { const { token, setUser, setLoading } = useAuthStore() const { data, isLoading } = useQuery({ queryKey: ['auth', 'me'], queryFn: () => authApi.getMe(), enabled: !!token, retry: false, meta: { skipAuthRedirect: true } as Record<string, unknown>, }) useEffect(() => { if (!token) { setLoading(false) return } if (!isLoading) { if (data?.data?.success && data.data.data) { setUser(data.data.data) } setLoading(false) } }, [token, isLoading, data, setUser, setLoading]) if (isLoading) return <Spinner size={40} /> return <>{children}</> } export default function App() { return ( <> <AlertList /> <AuthLoader> <div className="flex flex-col min-h-screen"> <Navbar /> <main className="flex-1 pt-16"> <Routes> <Route path="/" element={<Landing />} /> <Route path="/login" element={<Login />} /> <Route path="/signin" element={<Signin />} /> <Route path="/privacy" element={<Privacy />} /> <Route path="/contacts" element={<Contacts />} /> <Route path="/about" element={<About />} /> <Route path="/docs" element={<Docs />} /> <Route element={<ProtectedRoute />}> <Route path="/dashboard" element={<Dashboard />} /> <Route path="/create-team" element={<CreateTeam />} /> <Route path="/edit-team" element={<CreateTeam />} /> <Route path="/add-hack" element={<AddHack />} /> <Route path="/edit-hack/:id" element={<AddHack />} /> </Route> </Routes> </main> <Footer /> </div> </AuthLoader> </> ) }