import { ModalBody } from '@chakra-ui/modal'; import { FormControl, FormLabel, Input, PinInput, PinInputField, } from '@chakra-ui/react'; import { getSettings, ontimePlaceholderSettings, postSettings, } from 'app/api/ontimeApi'; import { useContext, useEffect, useState } from 'react'; import { useFetch } from 'app/hooks/useFetch'; import { APP_SETTINGS } from 'app/api/apiConstants'; import style from './Modals.module.scss'; import { LoggingContext } from '../../app/context/LoggingContext'; import { IconButton } from '@chakra-ui/button'; import { FiEye } from 'react-icons/fi'; import SubmitContainer from './SubmitContainer'; import { inputProps } from './modalHelper'; export default function AppSettingsModal() { const { data, status, refetch } = useFetch(APP_SETTINGS, getSettings); const { emitError, emitWarning } = useContext(LoggingContext); const [formData, setFormData] = useState(ontimePlaceholderSettings); const [changed, setChanged] = useState(false); const [submitting, setSubmitting] = useState(false); const [hidePin, setHidePin] = useState(true); /** * Set formdata from server state */ useEffect(() => { if (data == null) return; if (changed) return; setFormData({ pinCode: data.pinCode, }); }, [changed, data]); /** * Validate and submit data */ const submitHandler = async (event) => { event.preventDefault(); setSubmitting(true); const f = formData; let e = { status: false, message: '' }; // Validate fields if (f.pinCode === '' || f.pinCode == null) { e.status = true; e.message += 'App pin code removed'; } else { e.status = true; e.message += 'App pin code added'; } // set fields with error if (!e.status) { emitError(`Invalid Input: ${e.message}`); } else { await postSettings(formData); await refetch(); emitWarning(e.message); setChanged(false); } setSubmitting(false); }; /** * Reverts local state equals to server state */ const revert = async () => { setChanged(false); await refetch(); }; /** * Handles change of input field in local state * @param {string} field - object parameter to update * @param {string} value - new object parameter value */ const handleChange = (field, value) => { const temp = { ...formData }; temp[field] = value; setFormData(temp); setChanged(true); }; const disableModal = status !== 'success'; return (

Options related to the application
🔥 Changes take effect after app restart 🔥

General App Settings
Viewer Port
Ontime is available at port
Editor Pincode
Protect the editor with a Pincode
handleChange('pinCode', value)} > } aria-label='Editor pin code' onMouseDown={() => setHidePin(false)} onMouseUp={() => setHidePin(true)} isDisabled={disableModal} />
); }