import { Field, FieldArray } from "formik"; import type { FormTypes, InitialValuesFormErrors, OutputDataResponse } from "../../../types/types"; import { useEffect, useMemo } from "react"; import { useOptionalConstants } from "../hooks/useOptionalConstants"; type ChannelFieldsProps = { values: FormTypes; errors: InitialValuesFormErrors; touched: { connectTimeoutSeconds?: boolean | undefined; readTimeoutSeconds?: boolean | undefined; }; outputData?: OutputDataResponse; onSetFieldValue: (field: string, value: string, shouldValidate?: boolean | undefined) => void; }; const ChannelFields = ({ errors, touched, values, outputData, onSetFieldValue }: ChannelFieldsProps) => { const { optionalConstantsQuery } = useOptionalConstants(outputData?.id?.split("-")[1] || ""); const optionalConstants = optionalConstantsQuery?.data; const channelFieldsObject = useMemo(() => { return { connectTimeoutSeconds: outputData?.propConnectTimeoutSeconds?.value || "5", readTimeoutSeconds: outputData?.propReadTimeoutSeconds?.value || "15", backOfficeURL: outputData?.propBackofficeURL?.value || "", username: outputData?.propUsername?.value || "", password: outputData?.propPassword?.value || "", SCID: optionalConstants?.propSourceIdentifier?.value || "", timestampSource: optionalConstants?.propTimeZoneType?.value || "UTC", GPSFormat: optionalConstants?.propGpsFormat?.value || "Minutes", FFID: optionalConstants?.propFeedIdentifier?.value || "", }; }, [ optionalConstants?.propFeedIdentifier?.value, optionalConstants?.propGpsFormat?.value, optionalConstants?.propSourceIdentifier?.value, optionalConstants?.propTimeZoneType?.value, outputData?.propBackofficeURL?.value, outputData?.propConnectTimeoutSeconds?.value, outputData?.propPassword?.value, outputData?.propReadTimeoutSeconds?.value, outputData?.propUsername?.value, ]); useEffect(() => { for (const [key, value] of Object.entries(channelFieldsObject)) { onSetFieldValue(key, value); } }, [channelFieldsObject, onSetFieldValue, outputData]); return (