Files
Mav-Mobile-UI/src/components/SettingForms/Channel1-JSON/ChannelCard.tsx

57 lines
2.0 KiB
TypeScript
Raw Normal View History

import { useFormikContext, type FormikTouched } from "formik";
2025-08-18 12:53:30 +01:00
import Card from "../../UI/Card";
import CardHeader from "../../UI/CardHeader";
import ChannelFields from "./ChannelFields";
import type { BearerTypeFieldType, InitialValuesForm } from "../../../types/types";
import { useCameraBackOfficeOutput } from "../../../hooks/useBackOfficeConfig";
import { useEffect, useMemo } from "react";
type ChannelCardProps = {
touched: FormikTouched<BearerTypeFieldType & InitialValuesForm>;
isSubmitting: boolean;
2025-11-04 15:29:48 +00:00
isBof2ConstantsLoading: boolean;
isDispatcherLoading: boolean;
};
2025-11-04 15:29:48 +00:00
const ChannelCard = ({ touched, isSubmitting, isBof2ConstantsLoading, isDispatcherLoading }: ChannelCardProps) => {
const { values, setFieldValue } = useFormikContext<BearerTypeFieldType & InitialValuesForm>();
const { backOfficeQuery } = useCameraBackOfficeOutput(values?.format);
2025-11-04 15:29:48 +00:00
const isBackOfficeQueryLoading = backOfficeQuery?.isFetching;
const mapped = useMemo(() => {
2025-11-04 15:29:48 +00:00
const d = backOfficeQuery?.data;
return {
backOfficeURL: d?.propBackofficeURL?.value ?? "",
username: d?.propUsername?.value ?? "",
password: d?.propPassword?.value ?? "",
connectTimeoutSeconds: Number(d?.propConnectTimeoutSeconds?.value),
readTimeoutSeconds: Number(d?.propReadTimeoutSeconds?.value),
};
}, [backOfficeQuery.data]);
useEffect(() => {
2025-11-04 15:29:48 +00:00
if (!backOfficeQuery?.isSuccess) return;
for (const [key, value] of Object.entries(mapped)) {
setFieldValue(key, value);
}
}, [backOfficeQuery.isSuccess, mapped, setFieldValue]);
2025-08-18 12:53:30 +01:00
return (
2025-11-04 17:04:19 +00:00
<Card className="p-4 overflow-y-auto ">
<CardHeader title={`Channel (${values?.format})`} />
2025-11-04 15:29:48 +00:00
{!isBof2ConstantsLoading && !isDispatcherLoading && !isBackOfficeQueryLoading ? (
<ChannelFields
touched={touched}
isSubmitting={isSubmitting}
backOfficeData={backOfficeQuery}
format={values?.format}
/>
) : (
<>Loading...</>
)}
2025-08-18 12:53:30 +01:00
</Card>
);
};
export default ChannelCard;