|
1 | | -import { useState } from 'react'; |
| 1 | +import {useState, useEffect} from 'react'; |
2 | 2 | import axios from 'axios'; |
3 | 3 |
|
4 | 4 | export const useAuth = () => { |
5 | | - const [username, setUsername] = useState(localStorage.getItem('username')); |
6 | | - |
7 | | - const handleLogin = (newUsername) => { |
8 | | - setUsername(newUsername); |
9 | | - }; |
10 | | - |
11 | | - const handleLogout = () => { |
12 | | - localStorage.removeItem('accessToken'); |
13 | | - localStorage.removeItem('refreshToken'); |
14 | | - localStorage.removeItem('username'); |
15 | | - localStorage.removeItem('session'); |
16 | | - setUsername(null); |
17 | | - }; |
18 | | - |
19 | | - const handleCallback = async (code) => { |
20 | | - try { |
21 | | - const backendResponse = await axios.get(`${import.meta.env.VITE_DEFAULT_API_URI}/login?code=${code}`); |
22 | | - const { accessToken, refreshToken, username, session } = backendResponse.data; |
23 | | - |
24 | | - localStorage.setItem('accessToken', accessToken); |
25 | | - localStorage.setItem('refreshToken', refreshToken); |
26 | | - localStorage.setItem('session', session); |
27 | | - |
28 | | - setUsername(username); |
29 | | - } catch (error) { |
30 | | - console.error('Error sending code to backend:', error); |
31 | | - } |
32 | | - }; |
33 | | - |
34 | | - return { |
35 | | - username, |
36 | | - handleLogin, |
37 | | - handleLogout, |
38 | | - handleCallback, |
39 | | - }; |
| 5 | + const [username, setUsername] = useState(localStorage.getItem('username')); |
| 6 | + |
| 7 | + useEffect(() => { |
| 8 | + const storedUsername = localStorage.getItem('username'); |
| 9 | + if (storedUsername) { |
| 10 | + setUsername(storedUsername); |
| 11 | + } |
| 12 | + }, []); |
| 13 | + |
| 14 | + const handleLogin = (newUsername) => { |
| 15 | + setUsername(newUsername); |
| 16 | + }; |
| 17 | + |
| 18 | + const handleLogout = () => { |
| 19 | + localStorage.removeItem('accessToken'); |
| 20 | + localStorage.removeItem('refreshToken'); |
| 21 | + localStorage.removeItem('username'); |
| 22 | + localStorage.removeItem('session'); |
| 23 | + setUsername(null); |
| 24 | + }; |
| 25 | + |
| 26 | + const handleCallback = async (code) => { |
| 27 | + try { |
| 28 | + const backendResponse = await axios.get(`${import.meta.env.VITE_DEFAULT_API_URI}/login?code=${code}`); |
| 29 | + const {accessToken, refreshToken, username, session} = backendResponse.data; |
| 30 | + |
| 31 | + localStorage.setItem('accessToken', accessToken); |
| 32 | + localStorage.setItem('refreshToken', refreshToken); |
| 33 | + localStorage.setItem('username', username); |
| 34 | + localStorage.setItem('session', session); |
| 35 | + |
| 36 | + setUsername(username); |
| 37 | + } catch (error) { |
| 38 | + console.error('Error sending code to backend:', error); |
| 39 | + } |
| 40 | + }; |
| 41 | + |
| 42 | + return { |
| 43 | + username, |
| 44 | + handleLogin, |
| 45 | + handleLogout, |
| 46 | + handleCallback, |
| 47 | + }; |
40 | 48 | }; |
0 commit comments