import { Routes, Route, Navigate, useSearchParams, useNavigate } from 'react-router-dom' import { useEffect, useState } from 'react' import LandingPage from './pages/LandingPage' import LoginPage from './pages/LoginPage' import DashboardPage from './pages/DashboardPage' import ShedPage from './pages/workspace/ShedPage' import SiloPage from './pages/workspace/SiloPage' import SketchPage from './pages/workspace/SketchPage' import SteadPage from './pages/workspace/SteadPage' import SteadCreatePage from './pages/workspace/SteadCreatePage' import ForbiddenPage from './pages/ForbiddenPage' import ProtectedRoute from './components/ProtectedRoute' import AccountPage from './pages/AccountPage' import WorkspaceAdminPage from './pages/WorkspaceAdminPage' import InvitationPage from './pages/InvitationPage' import { authApi, saveAuth } from './lib/api' function GoogleCallback() { const [params] = useSearchParams() const navigate = useNavigate() const [error, setError] = useState(null) useEffect(() => { const accessToken = params.get('access_token') const refreshToken = params.get('refresh_token') if (!accessToken || !refreshToken) { setError('Google sign-in did not return valid session credentials.') return } localStorage.setItem('silos_access_token', accessToken) localStorage.setItem('silos_refresh_token', refreshToken) void authApi.me().then((user) => { saveAuth({ access_token: accessToken, refresh_token: refreshToken, token_type: 'bearer', user }) navigate('/dashboard', { replace: true }) }).catch(() => { localStorage.removeItem('silos_access_token') localStorage.removeItem('silos_refresh_token') setError('Google sign-in could not be completed.') }) }, [navigate, params]) if (error) return

{error}

return } export default function App() { return ( } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> ) }