IKHSAN
ENID Baca dalam Bahasa Indonesia

homeio

Public

Forked from doctor-io/homeio

Branch
main
Latest commit
958d74616 October 2026

emitter.ts

Open 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);
  }
}
bytes
1,032
lines
36
Type
ts
Latest commit
16 October 2026