Buscar en la documentación

Módulo de notificaciones (frontend)

Campana del dock y centro de notificaciones con las pestañas Conversaciones y Actividad, y cómo se ponen al día.

Módulo notifications3 min de lecturaVer en GitHub

La campana del dock y el panel con los avisos de cada persona. El front no decide a quién se avisa: solo muestra lo que devuelve la API (Módulo Notifications).

Cómo se ve

  • Campana al final del dock, junto a la cuenta, en las cuatro vistas. Con avisos sin leer muestra un contador rojo con texto blanco (tono danger), hasta “99+”. Su nombre accesible dice cuántos hay: “Notificaciones, 3 sin leer”.
  • Panel (AppSheet): desde la derecha en portátil y monitor, desde abajo en celular y tablet.
    • Arriba, las pestañas Conversaciones y Actividad (AppSegmented), cada una con sus sin leer. Abre en Conversaciones, salvo que solo Actividad tenga algo nuevo.
    • Cada aviso muestra qué pasó (“Laura Gómez escribió”, “3 mensajes nuevos, el último de…”, “lo pasó a Resuelto”), el código y el título del incidente, lo que se dijo (el mensaje, la nota o el motivo, en una línea) y hace cuánto.
    • Sin leer: punto azul y texto en negrita. Para lectores de pantalla, “Sin leer.” oculto al inicio.
    • “Ver anteriores” pide la página siguiente; al pie, “Marcar todo como leído” para la pestaña, si tiene algo sin leer.
    • Vacío: “No hay mensajes” o “No hay novedades”, con una línea que explica qué llega ahí.
  • Abrir un aviso lo marca como leído, cierra el panel y lleva al incidente. Si es un mensaje, llega con ?conversacion=1: el detalle baja hasta la actividad y deja el foco en el campo para escribir, también si ya se estaba en ese incidente.
  • Incidente que ya no se ve: el aviso queda sin enlace, con “Ya no tienes acceso a este incidente”.

Cómo se pone al día

CuándoQué hace
Al entrar (la campana se monta con el shell)Pide las sin leer (start, que además limpia todo si cambió la persona de la pestaña)
Al abrir el panel o cambiar de pestañaPide esa pestaña si no la tiene vigente (ensure)
Llega notifications por el canal personalVuelve a pedir las sin leer y marca las listas como vencidas; si el panel está abierto, pide de nuevo la pestaña que se ve
reconnectedIgual, por si se perdió un aviso mientras estaba desconectado
Conversación de un incidente abiertaSus mensajes cuentan como leídos (watchConversation): al abrirla y con cada aviso que llega mientras siga abierta

Marcar como leído responde con las sin leer nuevas, así la campana no vuelve a preguntar. Si marcar uno falla, el aviso igual lleva a su incidente.

Capas

CapaPiezaQué hace
domainnotification.tsTipos, textos de cada aviso (headline, detail), a dónde lleva (target) y el contador (badgeText)
infrastructurenotificationsApi.tsEndpoints y traducción de la respuesta
applicationuseNotificationsStore (Pinia)Sin leer, listas por pestaña, marcar como leídas y la conversación abierta
presentationNotificationBell, NotificationCenter, NotificationItemCampana, panel y cada aviso

Mensajes de error en errors.ts (NOTIFICATION_NOT_FOUND).

Dónde está en el código