FlotillasGPS - Sistema completo de monitoreo de flotillas GPS
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.
This commit is contained in:
82
mobile/src/hooks/useAuth.ts
Normal file
82
mobile/src/hooks/useAuth.ts
Normal file
@@ -0,0 +1,82 @@
|
||||
/**
|
||||
* 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;
|
||||
Reference in New Issue
Block a user