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
| Screen | Ruta | Descripción |
|---|---|---|
ChatsListScreen | /(tabs)/03_inbox | Lista de conversaciones |
ChatDetailScreen | /chat/[channelType]/[channelId] | Conversación individual |
ChannelInfoScreen | /chat/[channelType]/[channelId]/info | Información del canal |
ChannelMediaScreen | /chat/[channelType]/[channelId]/media | Galería de medios del canal |
ChatSearchScreen | /(tabs)/03_inbox/search | Búsqueda de mensajes |
ArchivedChatsScreen | /(tabs)/03_inbox/archived | Chats archivados |
ChatOnboardingScreen | /chat/invite/onboarding | Onboarding de chat |
API Endpoints
| Método | Path | Descripción |
|---|---|---|
POST | /chat/login | Autenticación con Stream |
POST | /chat/refresh | Renovar token de chat |
PATCH | /chat/profile | Actualizar perfil de chat |
POST | /chat/invitations/generate | Generar invitación de chat |
GET | /chat/invitations/info/{token} | Información de invitación |
La autenticación con Stream Chat es independiente del login principal. El token de chat se
gestiona a través de
chatAuthService.Hooks
| Hook | Descripción |
|---|---|
useStreamClient() | Gestión del cliente Stream Chat |
useStreamClientEvents() | Manejo de eventos (mensajes, typing, etc.) |
useUnreadCount() | Conteo de mensajes no leídos |
useChannelPreviewData() | Datos de preview de canal |
useChannelMedia() | Gestión de medios del canal |
useChannelMessageSearch() | Búsqueda dentro del canal |
useAttachmentHandlers() | Manejo de archivos/imágenes adjuntas |
useVoiceRecorder() | Grabación de mensajes de voz |
useAudioPlayer() | Reproducción de audio |
useChatTheme() | Personalización de tema |
useKeyboardVisibility() | Estado del teclado |
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.
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.