Skip to main content

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.

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

ScreenRutaDescripción
ChatsListScreen/(tabs)/03_inboxLista de conversaciones
ChatDetailScreen/chat/[channelType]/[channelId]Conversación individual
ChannelInfoScreen/chat/[channelType]/[channelId]/infoInformación del canal
ChannelMediaScreen/chat/[channelType]/[channelId]/mediaGalería de medios del canal
ChatSearchScreen/(tabs)/03_inbox/searchBúsqueda de mensajes
ArchivedChatsScreen/(tabs)/03_inbox/archivedChats archivados
ChatOnboardingScreen/chat/invite/onboardingOnboarding de chat

API Endpoints

MétodoPathDescripción
POST/chat/loginAutenticación con Stream
POST/chat/refreshRenovar token de chat
PATCH/chat/profileActualizar perfil de chat
POST/chat/invitations/generateGenerar 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

HookDescripció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

type ChannelType =
  | "PROPERTY"   // Canal de propiedad
  | "ISSUES"     // Reportes de incidencias
  | "NEWS"       // Noticias y actualizaciones
  | "FEEDBACK"   // Feedback de usuarios
  | "BOOKING";   // Canal asociado a una reserva

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.

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.