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/
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
- Tipos de canal
- Tipos de mensaje
- Permisos
- Delivery status
Store
El módulo utilizachatStore en Zustand para gestionar el estado del chat:
StreamClient— instancia del cliente de Stream ChatisConnected— estado de conexiónactiveChannel— canal actualmente activounreadCount— conteo de mensajes no leídos- Token management — almacenamiento y renovación de tokens de chat
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
- chatAuthService
- channel-name
- featureFlagService
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 exponeSearchContext para gestionar el estado de búsqueda de mensajes a través de los componentes de la pantalla de búsqueda.