MCPcopy Create free account
hub / github.com/Zoo-Code-Org/Zoo-Code / usePickerHandlers

Function usePickerHandlers

apps/cli/src/ui/hooks/usePickerHandlers.ts:43–168  ·  view source on GitHub ↗
({
	autocompleteRef,
	followupAutocompleteRef,
	sendToExtension,
	showInfo,
	seenMessageIds,
	firstTextMessageSkipped,
}: UsePickerHandlersOptions)

Source from the content-addressed store, hash-verified

41 * - Handle picker close and index change
42 */
43export function usePickerHandlers({
44 autocompleteRef,
45 followupAutocompleteRef,
46 sendToExtension,
47 showInfo,
48 seenMessageIds,
49 firstTextMessageSkipped,
50}: UsePickerHandlersOptions): UsePickerHandlersReturn {
51 const { isLoading, currentTaskId, setCurrentTaskId } = useCLIStore()
52 const { pickerState, setPickerState } = useUIStateStore()
53
54 /**
55 * Handle picker state changes from AutocompleteInput
56 */
57 const handlePickerStateChange = useCallback(
58 // eslint-disable-next-line @typescript-eslint/no-explicit-any
59 (state: AutocompletePickerState<any>) => {
60 setPickerState(state)
61 },
62 [setPickerState],
63 )
64
65 /**
66 * Handle item selection from external PickerSelect
67 */
68 const handlePickerSelect = useCallback(
69 // eslint-disable-next-line @typescript-eslint/no-explicit-any
70 (item: any) => {
71 // Check if this is a mode selection.
72 if (pickerState.activeTrigger?.id === "mode" && item && typeof item === "object" && "slug" in item) {
73 const modeItem = item as ModeResult
74
75 if (sendToExtension) {
76 sendToExtension({ type: "mode", text: modeItem.slug })
77 }
78
79 autocompleteRef.current?.closePicker()
80 followupAutocompleteRef.current?.closePicker()
81 }
82 // Check if this is a history item selection.
83 else if (pickerState.activeTrigger?.id === "history" && item && typeof item === "object" && "id" in item) {
84 const historyItem = item as HistoryResult
85
86 // Don't allow task switching while a task is in progress (loading).
87 if (isLoading) {
88 showInfo("Cannot switch tasks while task is in progress", 2000)
89 autocompleteRef.current?.closePicker()
90 followupAutocompleteRef.current?.closePicker()
91 return
92 }
93
94 // If selecting the same task that's already loaded, just close the picker.
95 if (historyItem.id === currentTaskId) {
96 autocompleteRef.current?.closePicker()
97 followupAutocompleteRef.current?.closePicker()
98 return
99 }
100

Callers 1

AppInnerFunction · 0.85

Calls 2

getStateMethod · 0.65
clearMethod · 0.65

Tested by

no test coverage detected