import { useQuery, useMutation } from "@tanstack/react-query"; import { CAMBASE } from "../../../utils/config"; import type { CustomFieldConfig } from "../../../types/types"; 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(); }; export const useCustomFields = () => { const customFieldsQuery = useQuery({ queryKey: ["customFields"], queryFn: fetchCustomFields, }); const customFieldsMutation = useMutation({ mutationKey: ["customFieldsMutation"], mutationFn: postCustomFields, }); return { customFieldsQuery, customFieldsMutation }; };