Files
2026-07-13 12:08:39 +08:00

49 lines
1.1 KiB
TypeScript

import { useQuery } from '@tanstack/react-query';
import axios from '@/portainer/services/axios/axios';
import { isBE } from '@/react/portainer/feature-flags/feature-flags.service';
import { withError } from '@/react-tools/react-query';
interface RefsPayload {
force?: boolean;
sourceId: number;
}
export function useGitRefs<T = string[]>(
payload: RefsPayload,
{
enabled,
select,
onSuccess,
onSettled,
suppressError,
cacheTime = 0,
}: {
enabled?: boolean;
select?: (data: string[]) => T;
onSuccess?(data: T): void;
onSettled?(data: T | undefined, error: unknown): void;
suppressError?: boolean;
cacheTime?: number;
} = {}
) {
return useQuery({
queryKey: ['gitops', 'refs', payload],
queryFn: () => listRefs(payload),
enabled: isBE && enabled,
retry: false,
cacheTime,
select,
onSuccess,
onSettled,
...(suppressError ? {} : withError('Failed loading refs')),
});
}
export async function listRefs({ force, ...body }: RefsPayload) {
const { data } = await axios.post<string[]>('/gitops/repo/refs', body, {
params: { force },
});
return data;
}