Skip to main content

Navegacion

La app Vivla utiliza Expo Router 6 con file-based routing y typed routes. Toda la estructura de navegacion se define a traves de la jerarquia de archivos en el directorio app/.

Root Layout

El punto de entrada (app/_layout.tsx) configura un Stack Navigator envuelto en multiples providers, cada uno aportando una funcionalidad clave:
El componente raiz esta envuelto con Sentry.wrap() para capturar errores automaticamente. Se llama a SplashScreen.preventAutoHideAsync() al inicio y se oculta el splash screen cuando appIsReady es true.

Screens del Root Stack

Animation Presets

Los presets de animacion se definen en src/shared/constants/navigation.ts:

Tab Navigator

El Tab Navigator (app/(tabs)/_layout.tsx) define 5 tabs con iconos SVG custom:

01_home

Stack Navigator: index, gallery, amenities

02_book

Material Top Tabs: book-stays, exchange-stays, rent-stays

03_inbox

Stack Navigator: index, archived, search (badge de no leidos)

04_stays

Material Top Tabs: active, past, cancelled, pending

05_profile

Stack Navigator: index

Property Selection Gate

Los tabs distintos de 01_home estan bloqueados si el usuario no tiene una propiedad seleccionada. El tabPress event se intercepta y se llama a e.preventDefault() cuando isPropertySelected es false.
  • 02_book: Material Top Tabs con book-stays, exchange-stays, rent-stays y un indicador de llaves disponibles (HeaderKeysIndicator) - 04_stays: Material Top Tabs con active, past, cancelled, pending y BookingToastProvider

Chat (app/chat/)

Stack con animacion slide_from_right:

Booking (app/booking/)

Usa Slot envuelto en BookingToastProvider:

Property (app/property/)

Invite (app/invite/)

Issues (app/issues/)

Stack con BackButton fijo, que contiene Material Top Tabs:

Arbol de Rutas Completo

Las rutas publicas (que no requieren autenticacion) estan definidas en NAVIGATION_CONFIG.PUBLIC_GROUPS: (onboarding), (auth) e invite. El hook useNavigation gestiona las redirecciones segun el estado de autenticacion.