MCPcopy
hub / github.com/Dimillian/CodexMonitor / useClonePrompt

Function useClonePrompt

src/features/workspaces/hooks/useClonePrompt.ts:99–250  ·  view source on GitHub ↗
({
  addCloneAgent,
  connectWorkspace,
  onSelectWorkspace,
  resolveProjectContext,
  persistProjectCopiesFolder,
  onCompactActivate,
  onError,
}: UseClonePromptOptions)

Source from the content-addressed store, hash-verified

97}
98
99export function useClonePrompt({
100 addCloneAgent,
101 connectWorkspace,
102 onSelectWorkspace,
103 resolveProjectContext,
104 persistProjectCopiesFolder,
105 onCompactActivate,
106 onError,
107}: UseClonePromptOptions): UseClonePromptResult {
108 const [clonePrompt, setClonePrompt] = useState<ClonePromptState>(null);
109
110 const openPrompt = useCallback(
111 (workspace: WorkspaceInfo) => {
112 const { groupId, copiesFolder } = resolveProjectContext(workspace);
113 setClonePrompt({
114 workspace,
115 copyName: defaultCopyName(workspace),
116 copiesFolder: copiesFolder ?? "",
117 initialCopiesFolder: copiesFolder ?? "",
118 groupId,
119 suggestedCopiesFolder: suggestCopiesFolder(workspace.path),
120 isSubmitting: false,
121 error: null,
122 });
123 },
124 [resolveProjectContext],
125 );
126
127 const updateCopyName = useCallback((value: string) => {
128 setClonePrompt((prev) =>
129 prev ? { ...prev, copyName: value, error: null } : prev,
130 );
131 }, []);
132
133 const cancelPrompt = useCallback(() => {
134 setClonePrompt(null);
135 }, []);
136
137 const chooseCopiesFolder = useCallback(async () => {
138 const selection = await pickWorkspacePath();
139 if (!selection) {
140 return;
141 }
142 setClonePrompt((prev) =>
143 prev ? { ...prev, copiesFolder: selection, error: null } : prev,
144 );
145 }, []);
146
147 const useSuggestedCopiesFolder = useCallback(() => {
148 setClonePrompt((prev) => {
149 if (!prev || !prev.suggestedCopiesFolder) {
150 return prev;
151 }
152 return { ...prev, copiesFolder: prev.suggestedCopiesFolder, error: null };
153 });
154 }, []);
155
156 const clearCopiesFolder = useCallback(() => {

Callers 1

useMainAppModalsFunction · 0.90

Calls 4

pickWorkspacePathFunction · 0.90
defaultCopyNameFunction · 0.85
suggestCopiesFolderFunction · 0.85
connectWorkspaceFunction · 0.85

Tested by

no test coverage detected