| /** | |
| * Git Query Hooks | |
| * | |
| * React Query hooks for git operations. | |
| */ | |
| import { useQuery } from '@tanstack/react-query'; | |
| import { getElectronAPI } from '@/lib/electron'; | |
| import { queryKeys } from '@/lib/query-keys'; | |
| import { STALE_TIMES } from '@/lib/query-client'; | |
| /** | |
| * Fetch git diffs for a project (main project, not worktree) | |
| * | |
| * @param projectPath - Path to the project | |
| * @param enabled - Whether to enable the query | |
| * @returns Query result with files and diff content | |
| */ | |
| export function useGitDiffs(projectPath: string | undefined, enabled = true) { | |
| return useQuery({ | |
| queryKey: queryKeys.git.diffs(projectPath ?? ''), | |
| queryFn: async () => { | |
| if (!projectPath) throw new Error('No project path'); | |
| const api = getElectronAPI(); | |
| if (!api.git) { | |
| throw new Error('Git API not available'); | |
| } | |
| const result = await api.git.getDiffs(projectPath); | |
| if (!result.success) { | |
| throw new Error(result.error || 'Failed to fetch diffs'); | |
| } | |
| return { | |
| files: result.files ?? [], | |
| diff: result.diff ?? '', | |
| ...(result.mergeState ? { mergeState: result.mergeState } : {}), | |
| }; | |
| }, | |
| enabled: !!projectPath && enabled, | |
| staleTime: STALE_TIMES.WORKTREES, | |
| }); | |
| } | |