import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { branchApi, type PublishParams } from '../api/branch'; export function useBranchStatus(owner: string, repo: string) { return useQuery({ queryKey: ['branchStatus', owner, repo], queryFn: () => branchApi.getBranchStatus(owner, repo), enabled: !!owner && !!repo, refetchInterval: 30000, // Refetch every 30 seconds }); } export function usePublish() { const queryClient = useQueryClient(); return useMutation({ mutationFn: (params: PublishParams) => branchApi.publish(params), onSuccess: (_, variables) => { // Invalidate branch status, file content, and pending changes queries queryClient.invalidateQueries({ queryKey: ['branchStatus', variables.owner, variables.repo], }); queryClient.invalidateQueries({ queryKey: ['fileContent'], }); queryClient.invalidateQueries({ queryKey: ['pending-changes', variables.owner, variables.repo], }); queryClient.invalidateQueries({ queryKey: ['files', variables.owner, variables.repo], }); }, }); }