Sistema completo para monitoreo y gestion de flotas de vehiculos con: - Backend FastAPI con PostgreSQL/TimescaleDB - Frontend React con TypeScript y TailwindCSS - App movil React Native con Expo - Soporte para dispositivos GPS, Meshtastic y celulares - Video streaming en vivo con MediaMTX - Geocercas, alertas, viajes y reportes - Autenticacion JWT y WebSockets en tiempo real Documentacion completa y guias de usuario incluidas.
83 lines
1.5 KiB
TypeScript
83 lines
1.5 KiB
TypeScript
/**
|
|
* 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<typeof updateConductor>[0]) => {
|
|
updateConductor(updates);
|
|
},
|
|
[updateConductor]
|
|
);
|
|
|
|
return {
|
|
// Estado
|
|
conductor,
|
|
token,
|
|
dispositivo,
|
|
isAuthenticated,
|
|
isLoading,
|
|
|
|
// Acciones
|
|
login,
|
|
verify,
|
|
signOut,
|
|
refresh,
|
|
updateProfile,
|
|
};
|
|
};
|
|
|
|
export default useAuth;
|