Saltearse al contenido

Tile de chat

El tile de chat es el chat de texto con alcance de misión. Es una superficie simple comparada con el lado de voz — todos en la misión ven cada mensaje, los hilos son planos (reply-to, no anidados) y todo el historial es buscable y reproducible.

Qué ves

Cada fila del stream de chat muestra:

  • Avatar + nombre del emisor — el chip de activo del emisor con callsign si está establecido.
  • Texto del mensaje — texto plano más un indicador truncado de reply-to si este mensaje responde a otro.
  • Timestamp — hora local; etiquetas relativas (“ahora mismo”) para mensajes recientes.

Los mensajes consecutivos del mismo emisor dentro de 2 minutos se agrupan — el avatar + nombre + timestamp solo se muestran en el primer mensaje; los posteriores simplemente se indentan por limpieza visual.

Enviar un mensaje

Escribe en el compositor de la parte inferior y pulsa Enter para enviar. Shift+Enter inserta un salto de línea.

  • Solo texto plano.
  • Sin markdown, sin adjuntos, sin selector de emojis (usa la entrada nativa de emojis del SO).
  • Sin indicadores de escritura para otros participantes.

Responder a un mensaje

Haz clic en la flecha de respuesta en cualquier mensaje. El compositor fija el mensaje padre como una barra de contexto encima. Escribe tu respuesta y envíala — el mensaje aterriza como una fila normal pero con una vista previa truncada clicable del padre.

Al hacer clic en la vista previa, el chat se desplaza al mensaje padre.

Borrar un mensaje

Los autores pueden borrar sus propios mensajes:

  1. Haz clic en el icono de papelera en tu mensaje.
  2. Confirma.
  3. El mensaje se borra de forma suave (el doc de Firestore actualiza deleted: true — la fila desaparece de la vista de todos).

Los comandantes / admins no pueden borrar mensajes de otros desde la UI del tile de chat.

Badge de no leídos

El encabezado del tile de chat muestra un badge numérico cuando hay mensajes debajo de tu posición de scroll actual. Cuando te desplazas al final, el badge se limpia. El conteo de no leídos se rastrea en memoria — se reinicia al desmontar el tile.

Persistencia

  • Los mensajes viven en Firestore en missions/{missionId}/chat/{messageId}.
  • La lectura es vía un listener en tiempo real, de modo que cualquiera en la misión ve los mensajes nuevos aparecer dentro de un segundo tras el envío.
  • Se envía vía api.sendChatMessage(); se borra vía una actualización de doc de Firestore.

Mensajes de sistema

Un tipo de mensaje system existe (para eventos automáticos como “misión iniciada” o “equipo unido”) pero la build actual no muestra UI para los escritores que los produzcan. Los mensajes de sistema se renderizan con un estilo diferente si llegan — trátalo como aspiracional por ahora.

Sin búsqueda / filtro

El tile no tiene caja de búsqueda. Para encontrar mensajes antiguos, usa el tile de línea de tiempo — indexa el chat como uno de sus tipos de evento y soporta búsqueda de texto libre.

Limitaciones conocidas

  • Sin ediciones. El borrado suave + repost es la única forma de cambiar.
  • Sin reacciones / respuestas con emoji.
  • Sin archivos / imágenes adjuntados al chat (usa flags + adjuntos para multimedia).
  • Sin borrado por comandante de mensajes de otros.
  • Sin @menciones con notificaciones.

Relacionado