| import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; |
| import AutomationService from "#/api/automation-service/automation-service.api"; |
| import { useActiveBackend } from "#/contexts/active-backend-context"; |
| import { getErrorStatus } from "#/hooks/query/use-settings"; |
| import { useTracking } from "#/hooks/use-tracking"; |
| import type { GitSyncConfigUpdateRequest } from "#/types/git-sync"; |
|
|
| export const GIT_SYNC_STATUS_QUERY_KEY = ["git-sync-status"] as const; |
|
|
| interface UseGitSyncStatusOptions { |
| enabled?: boolean; |
| refetchInterval?: number | false; |
| } |
|
|
| export function useGitSyncStatus(options: UseGitSyncStatusOptions = {}) { |
| const { enabled = true, refetchInterval = false } = options; |
| const active = useActiveBackend(); |
| return useQuery({ |
| queryKey: [...GIT_SYNC_STATUS_QUERY_KEY, active.backend.id, active.orgId], |
| queryFn: () => AutomationService.getGitSyncStatus(), |
| staleTime: 10 * 1000, |
| enabled, |
| refetchInterval, |
| |
| |
| |
| |
| |
| |
| retry: (failureCount, error) => |
| getErrorStatus(error) === undefined && failureCount < 2, |
| |
| |
| |
| meta: { disableToast: true }, |
| }); |
| } |
|
|
| export function useUpdateGitSyncConfig() { |
| const queryClient = useQueryClient(); |
| const active = useActiveBackend(); |
| const { trackGitSyncConfigUpdated } = useTracking(); |
| return useMutation({ |
| mutationFn: (body: GitSyncConfigUpdateRequest) => |
| AutomationService.updateGitSyncConfig(body), |
| onSuccess: async (data) => { |
| const queryKey = [ |
| ...GIT_SYNC_STATUS_QUERY_KEY, |
| active.backend.id, |
| active.orgId, |
| ]; |
| |
| |
| |
| await queryClient.cancelQueries({ queryKey }); |
| queryClient.setQueryData(queryKey, data); |
| trackGitSyncConfigUpdated({ backendKind: active.backend.kind }); |
| }, |
| |
| |
| |
| meta: { disableToast: true }, |
| }); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| export function useCheckGitSyncConfig() { |
| return useMutation({ |
| mutationFn: (body: GitSyncConfigUpdateRequest) => |
| AutomationService.checkGitSyncConfig(body), |
| retry: false, |
| meta: { disableToast: true }, |
| }); |
| } |
|
|
| export function useTriggerGitSync() { |
| const queryClient = useQueryClient(); |
| const active = useActiveBackend(); |
| const { trackGitSyncTriggered } = useTracking(); |
| return useMutation({ |
| mutationFn: () => AutomationService.triggerGitSync(), |
| onSuccess: () => { |
| queryClient.invalidateQueries({ queryKey: GIT_SYNC_STATUS_QUERY_KEY }); |
| trackGitSyncTriggered({ backendKind: active.backend.kind }); |
| }, |
| |
| |
| |
| meta: { disableToast: true }, |
| }); |
| } |
|
|