/** * Hook personalizado para autenticación * Proporciona acceso al estado de auth y acciones comunes */ import { useCallback, useEffect } from 'react'; import { useAuthStore } from '../store/authStore'; export const useAuth = () => { const { conductor, token, dispositivo, isAuthenticated, isLoading, initialize, requestCode, verifyCode, logout, refreshToken, updateConductor, } = useAuthStore(); // Inicializar al montar useEffect(() => { initialize(); }, [initialize]); // Login con teléfono const login = useCallback( async (telefono: string) => { const result = await requestCode(telefono); return result; }, [requestCode] ); // Verificar código const verify = useCallback( async (telefono: string, codigo: string) => { const result = await verifyCode(telefono, codigo); return result; }, [verifyCode] ); // Cerrar sesión const signOut = useCallback(async () => { await logout(); }, [logout]); // Refrescar token const refresh = useCallback(async () => { return await refreshToken(); }, [refreshToken]); // Actualizar perfil const updateProfile = useCallback( (updates: Parameters[0]) => { updateConductor(updates); }, [updateConductor] ); return { // Estado conductor, token, dispositivo, isAuthenticated, isLoading, // Acciones login, verify, signOut, refresh, updateProfile, }; }; export default useAuth;