Volver a la wiki

chatNotify — Librería de notificaciones del chat (beep, badge, favicon)

chatNotify — Librería de notificaciones del chat

Módulo TypeScript en src/lib/chatNotify.ts que encapsula los tres mecanismos de aviso visual y sonoro del widget TeamChat cuando llegan mensajes nuevos y el usuario no está mirando el tab.

Exporta tres funciones puras sin estado de React — pueden ser llamadas desde cualquier componente o hook del workspace.


API pública

playChatBeep(): void

Genera dos tonos cortos (“ding-dong”) usando la Web Audio API (AudioContext):

TonoFrecuenciaInicioDuración
Tono 1880 Hznow200 ms
Tono 21100 Hznow + 120ms200 ms

setTabBadge(count: number): void

Modifica document.title para mostrar (N) Título original cuando count > 0, o restaurar el título original cuando count === 0.

setFaviconBadge(active: boolean): void

Dibuja un punto rojo (círculo #ef4444 con borde blanco de 2px) en la esquina superior derecha del favicon original, usando un <canvas> 32×32.


Diseño


Uso en TeamChat.tsx

import { playChatBeep, setFaviconBadge, setTabBadge } from '../../lib/chatNotify';

// Cuando llega mensaje nuevo y tab oculta:
playChatBeep();
setTabBadge(newCount);
setFaviconBadge(true);

// Al marcar como leído (focus / visibilitychange):
setTabBadge(0);
setFaviconBadge(false);

// Cleanup al desmontar:
useEffect(() => () => { setTabBadge(0); setFaviconBadge(false); }, []);

Véase también

Subir