mono/packages/kbot/ref/hooks/useCommandQueue.ts
2026-04-01 01:05:48 +02:00

16 lines
543 B
TypeScript

import { useSyncExternalStore } from 'react'
import type { QueuedCommand } from '../types/textInputTypes.js'
import {
getCommandQueueSnapshot,
subscribeToCommandQueue,
} from '../utils/messageQueueManager.js'
/**
* React hook to subscribe to the unified command queue.
* Returns a frozen array that only changes reference on mutation.
* Components re-render only when the queue changes.
*/
export function useCommandQueue(): readonly QueuedCommand[] {
return useSyncExternalStore(subscribeToCommandQueue, getCommandQueueSnapshot)
}