All files / frontend/src/hooks useAuth.ts

100% Statements 24/24
100% Branches 6/6
100% Functions 1/1
100% Lines 24/24

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 461x 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,
    };
};