|
1 | | -import { useState, useEffect, useMemo } from 'react'; |
| 1 | +import { useState, useMemo, useCallback } from 'react'; |
2 | 2 | import type { ReactNode } from 'react'; |
3 | 3 | import type { User } from '../types/entities.ts'; |
4 | | -import { authService } from '../api/services/auth.service.ts'; |
5 | 4 | import { AuthContext } from './AuthContext'; |
6 | 5 |
|
7 | 6 | export const AuthProvider = ({ children }: { children: ReactNode }) => { |
8 | 7 | const [user, setUser] = useState<User | null>(null); |
9 | | - const [isLoading, setIsLoading] = useState(true); |
10 | 8 |
|
11 | | - useEffect(() => { |
12 | | - const validateSession = async () => { |
13 | | - const token = localStorage.getItem('authToken'); |
14 | | - if (token) { |
15 | | - try { |
16 | | - const userData = await authService.getProfile(); |
17 | | - setUser(userData); |
18 | | - } catch (error) { |
19 | | - console.error("Session validation failed:", error); |
20 | | - localStorage.removeItem('authToken'); |
21 | | - setUser(null); |
22 | | - } |
23 | | - } |
24 | | - setIsLoading(false); |
25 | | - }; |
26 | | - validateSession(); |
27 | | - }, []); |
28 | | - |
29 | | - const login = (userData: User, token: string) => { |
| 9 | + const login = useCallback((userData: User | null, token: string) => { |
30 | 10 | localStorage.setItem('authToken', token); |
31 | 11 | setUser(userData); |
32 | | - }; |
| 12 | + }, []); |
33 | 13 |
|
34 | | - const logout = () => { |
| 14 | + const logout = useCallback(() => { |
35 | 15 | localStorage.removeItem('authToken'); |
36 | 16 | setUser(null); |
37 | | - }; |
| 17 | + }, []); |
38 | 18 |
|
39 | 19 | const value = useMemo(() => ({ |
40 | | - isAuthenticated: !!user, |
| 20 | + isAuthenticated: !!user || !!localStorage.getItem('authToken'), |
41 | 21 | user, |
42 | | - isLoading, |
| 22 | + isLoading: false, |
43 | 23 | login, |
44 | 24 | logout, |
45 | | - }), [user, isLoading]); |
| 25 | + }), [user, login, logout]); |
46 | 26 |
|
47 | 27 | return ( |
48 | 28 | <AuthContext.Provider value={value}> |
|
0 commit comments