Skip to main content

Descripción

Ubicación: src/modules/notifications/ Gestiona las notificaciones dentro de la app (distintas de las push notifications del sistema). Incluye listado, lectura y eliminación de notificaciones almacenadas en backend.
Este módulo gestiona notificaciones in-app (almacenadas en backend). Para push notifications del sistema, ver Push Notifications.

Screens

API Endpoints

El inbox se sirve desde el backend de vivla-tools (las llamadas usan useToolsBackend: true). Todas las peticiones son POST y envían las credenciales (authToken, userId) en el body.

Hooks

El hook separa las notificaciones en readNotifications / unreadNotifications y expone unreadCount para el badge del inbox.

Tipos principales

navigation

Ruta de destino como string (por ejemplo /property/{id}, /booking/{id} o formatos legacy como stay-detail:...). validateAndTransformNavigation la valida y normaliza antes de navegar; si no es válida, se muestra el contenido de la notificación en su lugar.

readAt

Ausente (undefined) indica que la notificación no ha sido leída. Se actualiza automáticamente al llamar a markAsRead.

user / message / home

Identificadores opcionales (string) de las entidades relacionadas con la notificación.

linkTo

URL de destino alternativa. Se usa cuando la navegación no es a una pantalla interna sino a un recurso externo.

Componentes destacados

NotificationsList

Lista principal de notificaciones con soporte para pull-to-refresh y estados vacíos. Renderiza cada notificación según su tipo.

NotificationCard

Tarjeta individual de notificación. Muestra título, descripción, timestamp y estado de lectura. Soporta swipe para eliminar.

NotificationBottomSheet

Bottom sheet que muestra el contenido completo de la notificación (texto, imagen y vídeo) cuando no hay una ruta de navegación válida.

NotificationEmptyState / NotificationSkeleton

Estados vacío y de carga (skeleton) del centro de notificaciones.
Las notificaciones eliminadas no se pueden recuperar. La operación de eliminación es permanente tanto en el cliente como en el backend.