Skip to main content

Descripción

El módulo Chat implementa mensajería en tiempo real usando Stream Chat SDK. Es el módulo más complejo de la aplicación con más de 38 componentes custom.
  • Ubicación: src/modules/chat/
Este módulo depende del servicio externo Stream Chat. Asegúrate de revisar la configuración del cliente antes de modificar componentes de conexión.

Screens

API Endpoints

La autenticación con Stream Chat es independiente del login principal. El token de chat se gestiona a través de chatAuthService.

Hooks

Tipos principales

Store

El módulo utiliza chatStore en Zustand para gestionar el estado del chat:
  • StreamClient — instancia del cliente de Stream Chat
  • isConnected — estado de conexión
  • activeChannel — canal actualmente activo
  • unreadCount — conteo de mensajes no leídos
  • Token management — almacenamiento y renovación de tokens de chat
Ver Chat Integration para detalles de la integración con Stream.

Componentes destacados

El módulo cuenta con más de 38 componentes custom organizados en tres categorías principales:

message-input/

14+ componentes para entrada de mensajes: InputMicButton, InputSendButton, VoiceRecordingPreview, AttachmentMenu, LocationPicker, ContactPicker, entre otros.

message-attachments/

11 componentes para renderizado de diferentes tipos de adjuntos: imágenes, videos, archivos, notas de voz, ubicaciones, etc. Los PDF se renderizan localmente con pdf.js bundleado (PdfViewerModal, asset src/shared/assets/pdf-viewer.html), sin salir del dispositivo; el resto de documentos previsualizables siguen usando Google Docs Viewer vía WebViewModal. Regenerar el asset con npm run build:pdf-viewer tras actualizar pdfjs-dist.

message/

13 componentes para display de mensajes con diferentes layouts según tipo, estado y permisos.

Services

Servicio de autenticación específico para Stream Chat: - Token provider: Obtiene y cachea el token de Stream. - Refresh: Renueva el token cuando expira. - Cache: Almacena el token para evitar llamadas innecesarias al backend.

Context

El módulo expone SearchContext para gestionar el estado de búsqueda de mensajes a través de los componentes de la pantalla de búsqueda.