Documentation Index
Fetch the complete documentation index at: https://wiki.vivla.com/llms.txt
Use this file to discover all available pages before exploring further.
Hooks Compartidos
Ubicación:src/shared/hooks/
Estos hooks encapsulan lógica reutilizable a nivel global de la aplicación. Están disponibles para cualquier módulo o pantalla.
Catálogo completo
| Hook | Archivo | Parámetros | Retorno | Descripción |
|---|---|---|---|---|
useAppInitialization | hooks/useAppInitialization.ts | — | { appIsReady: boolean, hasTimedOut: boolean } | Inicializa la app: carga fonts, i18n, auth, onboarding, chat. Timeout de 2 minutos. |
useAppLoadingState | hooks/useAppLoadingState.ts | — | { isLoading: boolean, isHomeReady: boolean } | Calcula estado de carga desde hidratación de auth/property. |
useAnalyticsProfileSync | hooks/useAnalyticsProfileSync.ts | enabled: boolean | void | Sincroniza tipos de propiedad del usuario con PostHog. |
useCombinedUnreadCount | hooks/useCombinedUnreadCount.ts | — | number | Agrega conteo de chat + notificaciones no leídas. Actualiza badge de la app. |
useKeyboardAwareScroll | hooks/useKeyboardAwareScroll.ts | { enabled?, extraScrollHeight?, keyboardVerticalOffset? } | { scrollViewRef, handleInputFocus, handleScrollViewLayout, handleScroll } | Scroll automático cuando el teclado aparece sobre un input. |
useLinking | hooks/useLinking.ts | — | Objeto con 8 métodos de link/parse | Wrapper del linkingService para deep links. |
useNavigation | hooks/useNavigation.ts | — | void (side effects) | Orquesta routing basado en estado: auth, onboarding, home, error. |
useOnboardingStatus | hooks/useOnboardingStatus.ts | — | { hasSeenOnboarding, isOnboardingLoaded } | Lee estado del onboarding e inicializa si es necesario. |
usePropertySelection | hooks/usePropertySelection.ts | — | { isPropertySelected, isPropertySelectionRequired, hasPropertiesAvailable } | Determina si se requiere selección de propiedad. |
useScrollVisibility | hooks/useScrollVisibility.ts | { threshold?, triggerOnce? } | { ref, isVisible, onLayout } | Detecta visibilidad de un componente durante scroll. |
useStorageDiagnostics | hooks/useStorageDiagnostics.ts | enableDiagnostics?: boolean | StorageDiagnostics | null | Health checks de AsyncStorage + SecureStore. |
Detalle de hooks clave
useAppInitialization
Es el hook principal que orquesta el arranque de la app. Se ejecuta una sola vez al montar el componente raíz.- Secuencia de inicialización
- Timeout
- Carga de fuentes tipográficas 2. Inicialización de i18n (detección de idioma) 3. Hidratación del estado de autenticación 4. Carga del estado de onboarding 5. Inicialización del servicio de chat
useKeyboardAwareScroll
Resuelve el problema común en formularios donde el teclado oculta los inputs activos.useCombinedUnreadCount
Combina el conteo de mensajes no leídos del chat con las notificaciones pendientes. Además, actualiza automáticamente el badge numérico del icono de la app en el dispositivo.useNavigation
Hooks de módulos específicos
Los hooks que pertenecen a un dominio particular no viven enshared/hooks/, sino en el directorio de hooks de su módulo correspondiente:
Booking
src/modules/booking/hooks/ Hooks para el flujo de reservas, calendario, selección de fechas.Stays
src/modules/stays/hooks/ Hooks para gestión de estancias y reviews.Chat
src/modules/chat/hooks/ Hooks para mensajería en tiempo real.Profile
src/modules/profile/hooks/ Hooks para perfil de usuario y configuración.Si un hook es utilizado por más de un módulo, debe vivir en
src/shared/hooks/. Si es exclusivo
de un módulo, debe permanecer en el directorio de hooks de ese módulo.