Spaces:
Build error
Build error
import { useMutation, useQueryClient } from "@tanstack/react-query"; | |
import { useNavigate } from "react-router"; | |
import posthog from "posthog-js"; | |
import { useDispatch, useSelector } from "react-redux"; | |
import OpenHands from "#/api/open-hands"; | |
import { setInitialPrompt } from "#/state/initial-query-slice"; | |
import { RootState } from "#/store"; | |
import { GitRepository } from "#/types/git"; | |
import { SuggestedTask } from "#/components/features/home/tasks/task.types"; | |
export const useCreateConversation = () => { | |
const navigate = useNavigate(); | |
const dispatch = useDispatch(); | |
const queryClient = useQueryClient(); | |
const { selectedRepository, files, replayJson } = useSelector( | |
(state: RootState) => state.initialQuery, | |
); | |
return useMutation({ | |
mutationKey: ["create-conversation"], | |
mutationFn: async (variables: { | |
q?: string; | |
selectedRepository?: GitRepository | null; | |
selected_branch?: string; | |
suggested_task?: SuggestedTask; | |
}) => { | |
if (variables.q) dispatch(setInitialPrompt(variables.q)); | |
return OpenHands.createConversation( | |
variables.selectedRepository | |
? variables.selectedRepository.full_name | |
: undefined, | |
variables.selectedRepository | |
? variables.selectedRepository.git_provider | |
: undefined, | |
variables.q, | |
files, | |
replayJson || undefined, | |
variables.suggested_task || undefined, | |
variables.selected_branch, | |
); | |
}, | |
onSuccess: async ({ conversation_id: conversationId }, { q }) => { | |
posthog.capture("initial_query_submitted", { | |
entry_point: "task_form", | |
query_character_length: q?.length, | |
has_repository: !!selectedRepository, | |
has_files: files.length > 0, | |
has_replay_json: !!replayJson, | |
}); | |
await queryClient.invalidateQueries({ | |
queryKey: ["user", "conversations"], | |
}); | |
navigate(`/conversations/${conversationId}`); | |
}, | |
}); | |
}; | |