import { CButton, CModal, CModalHeader, CModalTitle, CModalBody, CModalFooter, CSpinner, CCol, CRow, CForm, CFormGroup, CInputRadio, CLabel, } from '@coreui/react'; import React, { useState, useEffect } from 'react'; import DatePicker from 'react-widgets/DatePicker'; import PropTypes from 'prop-types'; import { useSelector } from 'react-redux'; import { convertDateFromUtc, convertDateToUtc } from '../../utils/helper'; import 'react-widgets/styles.css'; import { getToken } from '../../utils/authHelper'; import axiosInstance from '../../utils/axiosInstance'; const BlinkModal = ({ show, toggleModal }) => { const [hadSuccess, setHadSuccess] = useState(false); const [hadFailure, setHadFailure] = useState(false); const [doingNow, setDoingNow] = useState(false); const [waiting, setWaiting] = useState(false); const [chosenDate, setChosenDate] = useState(new Date().toString()); const [chosenPattern, setPattern] = useState('on'); const [responseBody, setResponseBody] = useState(''); const [checkingIfSure, setCheckingIfSure] = useState(false); const selectedDeviceId = useSelector((state) => state.selectedDeviceId); const setDateToLate = () => { const date = convertDateToUtc(new Date()); if (date.getHours() >= 3) { date.setDate(date.getDate() + 1); } date.setHours(3); date.setMinutes(0); setChosenDate(convertDateFromUtc(date).toString()); }; const setDate = (date) => { if (date) { setChosenDate(date.toString()); } }; const confirmingIfSure = () => { setCheckingIfSure(true); }; useEffect(() => { setHadSuccess(false); setHadFailure(false); setWaiting(false); setChosenDate(new Date().toString()); setResponseBody(''); setPattern('on'); setCheckingIfSure(false); setDoingNow(false); }, [show]); const doAction = (isNow) => { setDoingNow(isNow); setHadFailure(false); setHadSuccess(false); setWaiting(true); const token = getToken(); const utcDate = new Date(chosenDate); const utcDateString = utcDate.toISOString(); const parameters = { serialNumber: selectedDeviceId, when: isNow ? '' : utcDateString, pattern: chosenPattern, duration: 30, }; const headers = { Accept: 'application/json', Authorization: `Bearer ${token}`, }; axiosInstance .post(`/device/${selectedDeviceId}/leds`, parameters, { headers }) .then(() => { setResponseBody('Command submitted!'); setHadSuccess(true); }) .catch(() => { setResponseBody('Error while submitting command!'); setHadFailure(true); }) .finally(() => { setDoingNow(false); setCheckingIfSure(false); setWaiting(false); }); }; return ( LEDs of Device
When would you like make the LEDs of this device blink?
doAction(true)} disabled={waiting} block color="primary"> {waiting && doingNow ? 'Loading...' : 'Do Now!'} setDateToLate()}> Later tonight

Date:

setDate(date)} min={convertDateToUtc(new Date())} />
Choose a pattern you would like to use: setPattern('on')}> On setPattern('off')}> Off setPattern('blink')}> Blink
Cancel
); }; BlinkModal.propTypes = { show: PropTypes.bool.isRequired, toggleModal: PropTypes.func.isRequired, }; export default BlinkModal;