El módulo Stays gestiona las estadías del usuario organizadas por estado. Incluye filtrado, visualización por categoría, modales de acciones (cancelar, modificar, reseñar) y auto-prompt de reseñas al completar una estadía.
Ubicación:src/modules/stays/
Los usuarios visitantes ven StayGuestScreen en lugar de los Material Top Tabs. Los propietarios
(coowners) ven las 4 pestañas deslizables: activas, pasadas, canceladas y pendientes.
La API retorna objetos Booking que son transformados internamente por staysApi para normalizar
el campo property (el backend puede devolver home en lugar de property en ciertos casos).
Las estadías se clasifican por temporada: peak, high, mid y low (con variantes ski/beach según la ubicación de la propiedad). Cada temporada tiene colores y traducciones asociadas definidas en las constantes SEASONS.
El módulo utiliza useReviewQueueStore en Zustand para gestionar la cola de reseñas pendientes:
Estado
Tipo
Descripción
queue
ReviewQueueItem[]
Cola de reseñas pendientes ordenadas por fecha de check-out
currentIndex
number
Índice de la reseña actual en la cola
hasProcessedThisSession
boolean
Indica si ya se procesó la cola en la sesión actual
Acciones del store
ReviewQueueItem
populateQueue(stays, getCheckOut) — Llena la cola con estadías que requieren reseña. Solo se
ejecuta una vez por sesión. - showNextReview() — Avanza al siguiente item de la cola. -
dismissCurrentReview() — Descarta la reseña actual y avanza a la siguiente. -
completeCurrentReview() — Marca como completada y avanza. - reset() — Reinicia la cola y
permite reprocesar en la siguiente sesión.
Cada item de la cola contiene: - bookingId — ID de la reserva asociada. - propertyName —
Nombre de la propiedad para mostrar en el modal. - checkOut — Fecha de check-out para ordenar
la cola cronológicamente.
El sistema de labels de la StayCard usa un modelo de 5 StayRoles con dos mensajes por tarjeta: un top message (texto contextual de acción) y un badge (indicador de approval).
Tarjeta de estadía con información de fechas, propiedad y estado. Incluye indicador visual de
temporada.
StayList
Listado de estadías con soporte para skeletons de carga y estado vacío.
StayDetailsView
Vista de detalle de una estadía con información completa y panel de acciones.
SeasonsDisplay
Visualización de temporadas con colores y conteo de estadías disponibles por categoría.
StayActionsPanel
Panel de acciones contextuales: cancelar, modificar y gestionar invitados.
AutoShowReviewModal
Modal que se muestra automáticamente al completar una estadía. Embebe SurveyScreen del modulo
Surveys con slug="stay-review" y onClose callback. Utiliza useReviewQueueStore para
gestionar múltiples reseñas pendientes.
Las reseñas de estadía usan el motor genérico de encuestas del módulo Surveys con slug="stay-review" y scopeType="booking". El flujo tiene dos entry points:
StayCard: El botón “Dar tu opinión” en estancias pasadas navega a /booking/review?bookingId={id}, que renderiza SurveyScreen.
AutoShowReviewModal: Se muestra automáticamente tras el checkout. Embebe SurveyScreen dentro de un <Modal> con onClose callback para avanzar en la cola de reseñas.
Las reseñas de estadía se gestionan a través del módulo Surveys (endpoint
/surveys/mobile/stay-review), no a través de endpoints custom del módulo Property. El módulo
Stays gestiona la UX y la cola de reseñas.