Files
portainer/app/react/edge/edge-stacks/queries/useParseRegistries.ts
T
2026-03-18 16:01:17 +13:00

46 lines
1.1 KiB
TypeScript

import { useMutation } from '@tanstack/react-query';
import { RegistryId } from '@/react/portainer/registries/types/registry';
import axios, { parseAxiosError } from '@/portainer/services/axios/axios';
import { json2formData } from '@/portainer/helpers/json';
import { buildUrl } from './buildUrl';
export function useParseRegistries() {
return useMutation(
parseRegistries
// handle errors in the calling function (notifyError vs setting form errors in validation)
);
}
export async function parseRegistries({
file,
fileContent,
}: {
file?: File;
fileContent?: string;
}) {
if (!file && !fileContent) {
return [];
}
let currentFile = file;
if (!file && fileContent) {
currentFile = new File([fileContent], 'registries.yml');
}
try {
const { data } = await axios.post<Array<RegistryId>>(
buildUrl(undefined, 'parse_registries'),
json2formData({ file: currentFile }),
{
headers: {
'Content-Type': 'multipart/form-data',
},
}
);
return data;
} catch (e) {
throw parseAxiosError(e as Error);
}
}