IKHSAN
EN Read in EnglishID

homeio

Publik

Fork dari doctor-io/homeio

Branch
main
Commit terakhir
958d74616 Oktober 2026

emitter.ts

Buka raw
import "server-only";

import type { NotificationRecord, NotificationSseEvent } from "@/lib/shared/contracts/notifications";

type NotificationSubscriber = (event: NotificationSseEvent) => void;

const subscribers = new Set<NotificationSubscriber>();

export function subscribeToNotifications(callback: NotificationSubscriber): () => void {
  subscribers.add(callback);
  return () => {
    subscribers.delete(callback);
  };
}

export function emitNotification(notification: NotificationRecord) {
  const event: NotificationSseEvent = { type: "notification.created", notification };
  for (const subscriber of subscribers) {
    subscriber(event);
  }
}

export function emitNotificationReadAll() {
  const event: NotificationSseEvent = { type: "notification.read-all" };
  for (const subscriber of subscribers) {
    subscriber(event);
  }
}

export function emitNotificationCleared() {
  const event: NotificationSseEvent = { type: "notification.cleared" };
  for (const subscriber of subscribers) {
    subscriber(event);
  }
}
byte
1.032
baris
36
Jenis
ts
Commit terakhir
16 Oktober 2026