| import React from "react"; |
| import { useQuery } from "@tanstack/react-query"; |
| import AgentServerGitService from "#/api/git-service/agent-server-git-service.api"; |
| import { useConversationId } from "#/hooks/use-conversation-id"; |
| import { useActiveConversation } from "#/hooks/query/use-active-conversation"; |
| import { useRuntimeIsReady } from "#/hooks/use-runtime-is-ready"; |
| import { getGitPath } from "#/utils/get-git-path"; |
|
|
| type UseCommitChangesConfig = { |
| enabled: boolean; |
| }; |
|
|
| export const useCommitChanges = ( |
| sha: string, |
| config: UseCommitChangesConfig, |
| ) => { |
| const { conversationId } = useConversationId(); |
| const { data: conversation } = useActiveConversation(); |
| const runtimeIsReady = useRuntimeIsReady(); |
|
|
| const conversationUrl = conversation?.conversation_url; |
| const sessionApiKey = conversation?.session_api_key; |
| const selectedRepository = conversation?.selected_repository; |
| const workingDir = conversation?.workspace?.working_dir?.trim(); |
|
|
| const gitPath = React.useMemo( |
| () => getGitPath(selectedRepository, workingDir), |
| [selectedRepository, workingDir], |
| ); |
|
|
| return useQuery({ |
| queryKey: [ |
| "commit_changes", |
| conversationId, |
| conversationUrl, |
| sessionApiKey, |
| gitPath, |
| sha, |
| ], |
| queryFn: async () => { |
| if (!conversationId) throw new Error("No conversation ID"); |
|
|
| return AgentServerGitService.getCommitChanges( |
| conversationUrl, |
| sessionApiKey, |
| gitPath, |
| sha, |
| ); |
| }, |
| |
| |
| staleTime: Infinity, |
| gcTime: 1000 * 60 * 15, |
| retry: false, |
| enabled: config.enabled && runtimeIsReady && !!conversationId, |
| meta: { |
| disableToast: true, |
| }, |
| }); |
| }; |
|
|