Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | 1x 1x 1x 9x 9x 9x 9x 2x 2x 2x 1x 2x 1x 1x 2x 9x 9x 9x 9x 9x 9x 9x 9x 9x | import { useEffect } from 'react';
import { useAuthStore } from '../store';
interface User {
email?: string;
firstName?: string;
lastName?: string;
role?: string;
organization?: string;
}
interface UseAuthReturn {
isAuthenticated: boolean;
user: User | null;
token: string | null;
login: (email: string, password: string) => Promise<void>;
logout: () => void;
}
export const useAuth = (): UseAuthReturn => {
const { isAuthenticated, user, token, login, logout } = useAuthStore();
useEffect(() => {
// Initialize auth on mount
const storedAuth = localStorage.getItem('auth-store');
if (storedAuth) {
try {
const authData = JSON.parse(storedAuth);
if (authData.state?.user) {
// Already hydrated by Zustand persist
}
} catch (error) {
console.error('Failed to parse auth data:', error);
}
}
}, []);
return {
isAuthenticated,
user,
token,
login,
logout,
};
};
|