- added validation endpoint

This commit is contained in:
2025-11-04 11:31:37 +00:00
parent 705d7c7040
commit f47459d116
2 changed files with 57 additions and 7 deletions

View File

@@ -10,14 +10,14 @@ import type {
} from "../../../types/types"; } from "../../../types/types";
import { useQueryClient } from "@tanstack/react-query"; import { useQueryClient } from "@tanstack/react-query";
import { useUpdateBackOfficeConfig } from "../../../hooks/useBackOfficeConfig"; import { useUpdateBackOfficeConfig } from "../../../hooks/useBackOfficeConfig";
import { useState } from "react"; import { useFormVaidate } from "../../../hooks/useFormValidate";
const SettingForms = () => { const SettingForms = () => {
const qc = useQueryClient(); const qc = useQueryClient();
const [formErrors, setFormErrors] = useState<InitialValuesFormErrors | null>(null);
const { dispatcherQuery, dispatcherMutation, backOfficeDispatcherMutation } = useCameraOutput(); const { dispatcherQuery, dispatcherMutation, backOfficeDispatcherMutation } = useCameraOutput();
const { backOfficeMutation } = useUpdateBackOfficeConfig(); const { backOfficeMutation } = useUpdateBackOfficeConfig();
const { bof2ConstantsQuery } = useGetDispatcherConfig(); const { bof2ConstantsQuery } = useGetDispatcherConfig();
const { validateMutation } = useFormVaidate();
const format = dispatcherQuery?.data?.propFormat?.value; const format = dispatcherQuery?.data?.propFormat?.value;
const enabled = dispatcherQuery?.data?.propEnabled?.value; const enabled = dispatcherQuery?.data?.propEnabled?.value;
@@ -69,14 +69,13 @@ const SettingForms = () => {
} else if (connect < 0) { } else if (connect < 0) {
errors.connectTimeoutSeconds = "Must be ≥ 0"; errors.connectTimeoutSeconds = "Must be ≥ 0";
} }
setFormErrors(errors);
return errors; return errors;
}; };
const handleSubmit = async (values: BearerTypeFieldType & InitialValuesForm & OptionalBOF2Constants) => { const handleSubmit = async (values: BearerTypeFieldType & InitialValuesForm & OptionalBOF2Constants) => {
if (formErrors && Object.entries(formErrors).length > 0) { // if (formErrors && Object.entries(formErrors).length > 0) {
return; // return;
} // }
const dispatcherData = { const dispatcherData = {
format: values.format, format: values.format,
enabled: values.enabled, enabled: values.enabled,
@@ -86,7 +85,12 @@ const SettingForms = () => {
if (result?.id) { if (result?.id) {
qc.invalidateQueries({ queryKey: ["dispatcher"] }); qc.invalidateQueries({ queryKey: ["dispatcher"] });
qc.invalidateQueries({ queryKey: ["backoffice", values.format] }); qc.invalidateQueries({ queryKey: ["backoffice", values.format] });
const validResponse = await validateMutation.mutateAsync(values);
if (validResponse?.reason === "OK") {
await backOfficeMutation.mutateAsync(values); await backOfficeMutation.mutateAsync(values);
} else {
return;
}
} }
if (values.format.toLowerCase() === "bof2") { if (values.format.toLowerCase() === "bof2") {

View File

@@ -0,0 +1,46 @@
import { useMutation } from "@tanstack/react-query";
import { CAM_BASE } from "../utils/config";
import type { InitialValuesForm } from "../types/types";
const sendToValidate = async (data: InitialValuesForm) => {
const updateConfigPayload = {
id: `Dispatcher-${data.format.toLowerCase()}`,
fields: [
{
property: "propBackofficeURL",
value: data.backOfficeURL,
},
{
property: "propConnectTimeoutSeconds",
value: data.connectTimeoutSeconds,
},
{
property: "propPassword",
value: data.password,
},
{
property: "propReadTimeoutSeconds",
value: data.readTimeoutSeconds,
},
{
property: "propUsername",
value: data.username,
},
],
};
const response = await fetch(`${CAM_BASE}/api/update-config-isvalid`, {
method: "post",
body: JSON.stringify(updateConfigPayload),
});
if (!response.ok) throw new Error("Cannot send to validate");
return response.json();
};
export const useFormVaidate = () => {
const validateMutation = useMutation({
mutationKey: ["sendToValidate"],
mutationFn: sendToValidate,
});
return { validateMutation };
};