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

37 lines
1.0 KiB
TypeScript

import { useQuery } from '@tanstack/react-query';
import axios, { parseAxiosError } from '@/portainer/services/axios/axios';
export interface GitFilePreviewParams {
targetFile: string;
reference?: string;
/** When set, resolves URL and auth from the stored Source record */
sourceId?: number;
}
async function getFilePreview(params: GitFilePreviewParams): Promise<string> {
try {
const { data } = await axios.post<{ FileContent: string }>(
'/gitops/repo/file/preview',
params
);
return data.FileContent;
} catch (e) {
throw parseAxiosError(e, 'Unable to fetch file from git');
}
}
export function useGitFilePreview<TData = string>(
params: GitFilePreviewParams,
options: { enabled?: boolean; select?: (data: string) => TData } = {}
) {
const { enabled = true, select } = options;
return useQuery({
queryKey: ['gitops', 'file-preview', params],
queryFn: () => getFilePreview(params),
enabled: enabled && !!params.sourceId && !!params.targetFile,
select,
retry: false,
});
}