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}`); | |
| }, | |
| }); | |
| }; | |