| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import { SHORTCUT_IDS } from '@/state/shortcuts/registry'
- import { useShortcut } from '@/state/shortcuts/useShortcut'
- interface UseRealtimeInspectorShortcutsParams {
- hasChannel: boolean
- isListening: boolean
- onJoinChannel: () => void
- onToggleFilters: () => void
- onBroadcast: () => void
- }
- /**
- * Registers shortcuts scoped to the Realtime Inspector page:
- * - Shift+J: open the join-channel popover
- * - Shift+F: open the filter popover
- * - Shift+B: open the broadcast message modal
- *
- * The Shift+L (toggle listening) shortcut is registered inside the Header
- * component so it shares the start/stop handler — including temp-API-key
- * refresh, permission gating, and telemetry — with the button click.
- *
- * Should be mounted once at the RealtimeInspector component level.
- */
- export function useRealtimeInspectorShortcuts({
- hasChannel,
- isListening,
- onJoinChannel,
- onToggleFilters,
- onBroadcast,
- }: UseRealtimeInspectorShortcutsParams) {
- useShortcut(SHORTCUT_IDS.INSPECTOR_JOIN_CHANNEL, onJoinChannel, {
- enabled: !hasChannel,
- })
- useShortcut(SHORTCUT_IDS.INSPECTOR_TOGGLE_FILTERS, onToggleFilters, {
- enabled: hasChannel,
- })
- useShortcut(SHORTCUT_IDS.INSPECTOR_BROADCAST, onBroadcast, {
- enabled: isListening,
- })
- }
|