import { useForm } from 'react-hook-form'; import { Input, Switch } from '@chakra-ui/react'; import { ViewSettings } from 'ontime-types'; import { postViewSettings } from '../../../common/api/ontimeApi'; import { PopoverPickerRHF } from '../../../common/components/input/popover-picker/PopoverPicker'; import useViewSettings from '../../../common/hooks-query/useViewSettings'; import { useEmitLog } from '../../../common/stores/logger'; import { mtm } from '../../../common/utils/timeConstants'; import { inputProps } from '../modalHelper'; import ModalInput from '../ModalInput'; import ModalSplitInput from '../ModalSplitInput'; import OntimeModalFooter from '../OntimeModalFooter'; import InputMillisWithString from './InputMillisWithString'; import style from './SettingsModal.module.scss'; export default function ViewSettingsForm() { const { data, status, refetch } = useViewSettings(); const { emitError } = useEmitLog(); const { control, handleSubmit, register, reset, formState: { isSubmitting, isDirty, isValid, dirtyFields }, } = useForm({ defaultValues: data, values: data, }); const onSubmit = async (formData: ViewSettings) => { const parsedWarningThreshold = dirtyFields?.warningThreshold ? // @ts-expect-error -- trust me Number.parseInt(formData.warningThreshold) * mtm : formData.warningThreshold; const parsedDangerThreshold = dirtyFields?.dangerThreshold ? // @ts-expect-error -- trust me Number.parseInt(formData.dangerThreshold) * mtm : formData.dangerThreshold; const newData = { ...formData, warningThreshold: parsedWarningThreshold, dangerThreshold: parsedDangerThreshold, }; try { await postViewSettings(newData); } catch (error) { emitError(`Error saving view settings: ${error}`); } finally { await refetch(); } }; const onReset = () => { reset(data); }; if (!control) { return null; } const disableInputs = status === 'loading'; return (
General view settings Timer view settings
); }