|
1 | | -import { BrowserRouter, Routes, Route } from 'react-router-dom'; |
2 | | - |
3 | | -import { LoginPage, WorkspacePage } from './pages'; |
4 | | -import 'style/reset.scss'; |
| 1 | +import { useState, useEffect } from 'react'; |
| 2 | +import { Routes, Route, useNavigate } from 'react-router-dom'; |
| 3 | +import { getAuth } from 'src/apis/auth'; |
| 4 | +import UserContext, { User } from 'src/contexts/user'; |
| 5 | +import { LoginPage, OAuthPage, WorkspacePage } from 'src/pages'; |
| 6 | +import 'styles/reset.scss'; |
5 | 7 |
|
6 | 8 | function App() { |
| 9 | + const [user, setUser] = useState<User>({ id: -1, name: '', avatarUrl: '' }); |
| 10 | + const navigate = useNavigate(); |
| 11 | + |
| 12 | + const autoLogin = async () => { |
| 13 | + const currentUser = await getAuth(); |
| 14 | + |
| 15 | + if (!currentUser) return; |
| 16 | + |
| 17 | + setUser(currentUser); |
| 18 | + navigate('/workspace'); |
| 19 | + }; |
| 20 | + |
| 21 | + useEffect(() => { |
| 22 | + autoLogin(); |
| 23 | + }, []); |
| 24 | + |
7 | 25 | return ( |
8 | | - <BrowserRouter> |
| 26 | + <UserContext.Provider value={{ user, setUser }}> |
9 | 27 | <Routes> |
10 | 28 | <Route path="/" element={<LoginPage />} /> |
| 29 | + <Route path="/oauth" element={<OAuthPage />} /> |
11 | 30 | <Route path="/workspace" element={<WorkspacePage />} /> |
12 | 31 | </Routes> |
13 | | - </BrowserRouter> |
| 32 | + </UserContext.Provider> |
14 | 33 | ); |
15 | 34 | } |
16 | 35 |
|
|
0 commit comments