Saltar al contenido principal

Historias y En Vivo

Closegram admite Historias efímeras (foto y video, expiran después de 24 horas) y sesiones de transmisión En Vivo impulsadas por LiveKit (WebRTC). Historias y En Vivo ahora publican/ven/comentan/reaccionan de punta a punta.

Cada propiedad tiene su propio checkbox que indica si esa pieza específica está completamente implementada y funcional de punta a punta (frontend + backend) — actualiza esto tú mismo conforme avance el trabajo; esta página no lo sobrescribirá.

  • Publicar una historia de 24 horas — foto o video (esta página antes decía que el video estaba bloqueado por el endpoint de subida; el fileFilter de multer en /upload ya aceptaba mimetypes video/*CreateStoryModal.tsx era lo único que todavía restringía a solo imágenes — corregido)
  • Ver las historias de otros usuarios / visor de historias
  • Comentar en una historia
  • Reaccionar a una historia con un emoji — una barra de reacción rápida (👍❤️😂😮😢) que usa la misma mutation genérica likePost de las publicaciones normales
  • Elegir la audiencia de una historia (Todos / Seguidores / Amigos cercanos) — StoryCreateInput.audience se captura y se guarda con la historia (se agregó un valor close_friends al enum compartido PostVisibility); corregido en esta sesión: ahora también se verifica de vuelta — getPost, getHomeStories y getUserStories la aplican, igual que ya hacía Post.visibility normal — consulta la referencia técnica
  • Ver quién ha visto tu historia — corregido en esta sesión: storyViewers/storyViewerCount llamaban a métodos inexistentes de PostManager y fallaban en tiempo de ejecución; ahora delegan al sistema existente de rastreo de espectadores del historial de reproducción (watch-history.manager.js#getPostViewers/#getPostViewersCount), solo para el dueño — consulta la referencia técnica
  • Ir en vivo / iniciar una transmisión en vivo — GoLiveModal.tsx crea la transmisión, LiveRoomPage.tsx (vista del dueño) se conecta a LiveKit como publicador (cámara + micrófono) una vez iniciada
  • Unirse a / ver una transmisión en vivo — LiveRoomPage.tsx (vista de espectador) se conecta a LiveKit como suscriptor; aplica visibility (pública / solo seguidores / amigos cercanos / privada) de la misma forma que una publicación normal
  • Chat / comentarios en vivo durante una transmisión — enviar, fijar/desfijar (dueño), eliminar (el propio autor del comentario, o el dueño)
  • Reacciones en vivo — una barra de reacción de 6 emojis (👍❤️😂😮😢😡), con conteos en vivo por tipo de reacción
  • Regalos con monedas en vivo — los espectadores envían regalos con precio en monedas desde un selector en la sala en vivo (sendLiveGift, liveGiftCatalog, liveStreamGifts), respaldado por una nueva tabla live_stream_gift; las monedas se mueven del remitente al streamer a través del libro contable (sendTip, con verificación de saldo). Los precios de los regalos son controlados por el servidor.
  • Solicitudes para hablar en transmisiones en vivo — los espectadores levantan la mano (requestLiveSpeaker), el dueño aprueba (respondToLiveSpeakerRequest), y los espectadores aprobados obtienen un token de publicación de LiveKit; la interfaz está en LiveSpeakerControls en la sala en vivo (la reconexión de LiveKit al aprobar la publicación es el paso restante exclusivo de lo en vivo)
  • Promocionar una transmisión en vivo — un botón "Promocionar" en la sala en vivo (promoteLiveStream) crea una publicación complementaria que enlaza de vuelta a la transmisión en vivo y la pasa por el flujo normal de promoción de publicaciones, ya que una transmisión en vivo no es en sí misma una publicación promocionable
  • Audiencia predeterminada de historias/en vivo, archivo automático y controles de ubicación — /settings/story-live ahora persiste todos ellos mediante privacySettings/updatePrivacySettings: un selector de audiencia predeterminada (defaultStoryAudience), además de los controles saveStoryToArchive y shareLocation
  • Ocultar tu historia de personas específicas
  • Archivo de En Vivo — explora tus propias transmisiones en vivo pasadas y terminadas (Configuración → Archivo)
  • Descubrimiento de En Vivo — una página dedicada /live que muestra quién está en vivo ahora, tendencias y transmisiones programadas, con un botón "Ir en vivo"
  • Actualizaciones en vivo en tiempo real — los comentarios, los conteos de reacciones, el conteo de espectadores, las solicitudes para hablar y la barra de quién está en vivo se actualizan en vivo mediante suscripciones graphql-ws (liveStreamCommentAdded, liveStreamReactionsUpdated, liveStreamUpdated, liveStreamsChanged, liveSpeakerRequestsChanged, liveSpeakerStatusChanged) — sin necesidad de actualizar manualmente

Consulta la referencia técnica para ver los esquemas de GraphQL, rutas, enlaces al código fuente y el estado de conexión campo por campo.