Documentation Index
Fetch the complete documentation index at: https://wiki.vivla.com/llms.txt
Use this file to discover all available pages before exploring further.
Visión general
La funcionalidad de chat en tiempo real se implementa con Stream Chat Expo SDK (v8.13.x). El módulo completo se encuentra ensrc/modules/chat/.
Estructura del módulo
Store
store/chatStore.ts — Zustand store que gestiona el estado del chat.Auth Service
services/authService.ts — Token provider para autenticación con Stream.Contexts
contexts/ — React contexts para la gestión de canales.Rutas
Rutas de chat bajo
/chat/ con file-based routing de Expo Router.Store (Zustand)
El store enstore/chatStore.ts gestiona todo el estado de la integración con Stream Chat:
| Propiedad | Descripción |
|---|---|
StreamClient | Instancia del cliente de Stream Chat |
isConnected | Estado de conexión al servicio |
activeChannel | Canal actualmente activo |
unreadCount | Conteo de mensajes no leídos |
| Token management | Gestión de tokens con control de expiración |
El store utiliza middlewares de devtools y persist de Zustand para facilitar el debugging
y mantener el estado entre sesiones.
Autenticación
El servicioservices/authService.ts actúa como token provider para Stream Chat. Se encarga de obtener y renovar los tokens de autenticación necesarios para conectar al usuario con el servicio de mensajería.
Rutas de chat
- Vista principal
- Info del canal
- Galería de medios
- Invitación
/chat/[channelType]/[channelId]/ Vista principal de conversación dentro de un canal.
Recibe el tipo y el ID del canal como parámetros dinámicos.Integración en la app
OverlayProvider
ElOverlayProvider de Stream Chat envuelve toda la aplicación desde el root layout. Este componente es necesario para que funcionen los overlays del SDK (previews de imágenes, menús contextuales, etc.).
Badge de mensajes no leídos
El tab Inbox en la navegación principal muestra un badge con el conteo de mensajes no leídos.Conteo combinado
El hookuseCombinedUnreadCount agrega el conteo total de mensajes no leídos de todos los canales del usuario, proporcionando un número unificado para mostrar en la UI.
Archivos clave
| Archivo | Responsabilidad |
|---|---|
src/modules/chat/store/chatStore.ts | Estado global del chat (Zustand) |
src/modules/chat/services/authService.ts | Autenticación con Stream |
src/modules/chat/contexts/ | Contexts de gestión de canales |