Files
BayIQ-UI/src/features/output/hooks/useCustomFields.ts

66 lines
1.9 KiB
TypeScript
Raw Normal View History

import { useQuery, useMutation } from "@tanstack/react-query";
2025-12-04 19:14:14 +00:00
import { CAMBASE } from "../../../utils/config";
import type { CustomFieldConfig } from "../../../types/types";
2025-12-04 19:14:14 +00:00
const fetchCustomFields = async () => {
const response = await fetch(`${CAMBASE}/api/fetch-config?id=SightingAmmend0-custom-fields`);
if (!response.ok) {
throw new Error("Network response was not ok");
}
return response.json();
};
const postCustomFields = async (customFieldConfig: CustomFieldConfig[]) => {
const fields = [];
for (const customField of customFieldConfig) {
if (customField.value)
if (customFieldConfig.indexOf(customField) > 2) {
fields.push({
property: `propStringName${customFieldConfig.indexOf(customField) + 1}`,
value: customField.label,
});
fields.push({
property: `propStringValue${customFieldConfig.indexOf(customField) + 1}`,
value: customField.value,
});
} else {
fields.push(
{
property: `propCustomFieldName${customFieldConfig.indexOf(customField) + 1}`,
value: customField.label,
},
{
property: `propCustomFieldValue${customFieldConfig.indexOf(customField) + 1}`,
value: customField.value,
},
);
}
}
const customFieldConfigPayload = {
id: "SightingAmmend0-custom-fields",
fields,
};
const response = await fetch(`${CAMBASE}/api/update-config`, {
method: "POST",
body: JSON.stringify(customFieldConfigPayload),
});
if (!response.ok) throw new Error("Network response was not ok");
return response.json();
};
2025-12-04 19:14:14 +00:00
export const useCustomFields = () => {
const customFieldsQuery = useQuery({
queryKey: ["customFields"],
queryFn: fetchCustomFields,
});
const customFieldsMutation = useMutation({
mutationKey: ["customFieldsMutation"],
mutationFn: postCustomFields,
});
return { customFieldsQuery, customFieldsMutation };
2025-12-04 19:14:14 +00:00
};