Files
kandev/apps/web/lib/ws/connection.ts
T
Clément Fiere 15c0c35df6 feat(auth): resolve session hostnames (#2741)
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-09-04 13:06:33 +00:00

24 lines
672 B
TypeScript

import { useSyncExternalStore } from "react";
import type { WebSocketClient } from "@/lib/ws/client";
let activeClient: WebSocketClient | null = null;
const listeners = new Set<() => void>();
export function setWebSocketClient(client: WebSocketClient | null) {
activeClient = client;
for (const listener of listeners) listener();
}
export function getWebSocketClient() {
return activeClient;
}
export function subscribeWebSocketClient(listener: () => void) {
listeners.add(listener);
return () => listeners.delete(listener);
}
export function useWebSocketClient() {
return useSyncExternalStore(subscribeWebSocketClient, getWebSocketClient, () => null);
}