16 lines
543 B
TypeScript
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)
|
|
}
|