import { useEffect, useState } from 'react'; import { useForm } from 'react-hook-form'; import { Switch } from '@chakra-ui/react'; import type { HttpSettings } from 'ontime-types'; import { TimerLifeCycle } from 'ontime-types'; import { useHttpSettings, usePostHttpSettings } from '../../../../common/hooks-query/useHttpSettings'; import { useEmitLog } from '../../../../common/stores/logger'; import ModalLoader from '../../modal-loader/ModalLoader'; import OntimeModalFooter from '../../OntimeModalFooter'; import { OntimeCycle, sectionText } from '../integration.utils'; import HttpSubscriptionRow from './HttpSubscriptionRow'; import styles from '../../Modal.module.scss'; export default function HttpIntegration() { const { data, isFetching } = useHttpSettings(); const { mutateAsync } = usePostHttpSettings(); const { emitError } = useEmitLog(); const { control, handleSubmit, register, reset, formState: { isSubmitting, isDirty, isValid }, } = useForm({ mode: 'onBlur', defaultValues: data, values: data, resetOptions: { keepDirtyValues: true, }, }); const [showSection, setShowSection] = useState(TimerLifeCycle.onLoad); useEffect(() => { if (data) { reset(data); } }, [data, reset]); const resetForm = () => { reset(data); }; const onSubmit = async (values: HttpSettings) => { try { const newSettings: HttpSettings = { enabledOut: Boolean(values.enabledOut), subscriptions: { onLoad: values.subscriptions.onLoad ?? [], onStart: values.subscriptions.onStart ?? [], onPause: values.subscriptions.onPause ?? [], onStop: values.subscriptions.onStop ?? [], onUpdate: values.subscriptions.onUpdate ?? [], onFinish: values.subscriptions.onFinish ?? [], }, }; await mutateAsync(newSettings); } catch (error) { emitError(`Error setting HTML: ${error}`); } }; if (isFetching) { return ; } const placeholder = 'http://x.x.x.x:xxxx/api/path'; return (
HTTP Output Ontime data feedback
); }