diff --git a/src/components/DeviceActions.js b/src/components/DeviceActions.js index 68b1a68..43fcbe0 100644 --- a/src/components/DeviceActions.js +++ b/src/components/DeviceActions.js @@ -8,10 +8,12 @@ import { CCol } from '@coreui/react' import ActionModalWidget from '../widgets/ActionModalWidget'; +import FirmwareUpgradeModal from './FirmwareUpgradeModal'; const DeviceActions = () => { const [showRebootModal, setShowRebootModal] = useState(false); const [showBlinkModal, setShowBlinkModal] = useState(false); + const [showUpgradeModal, setShowUpgradeModal] = useState(false); const [firmwareUri, setFirmwareUri] = useState(''); const [validField, setValidField] = useState(true); @@ -23,6 +25,10 @@ const DeviceActions = () => { setShowBlinkModal(!showBlinkModal); } + const toggleUpgradeModal = (e) => { + setShowUpgradeModal(!showUpgradeModal); + } + const formChange = (fieldValue) => { if(!validField){ setValidField(true); @@ -54,7 +60,7 @@ const DeviceActions = () => { - Firmware Upgrade + Firmware Upgrade @@ -77,6 +83,10 @@ const DeviceActions = () => { action='leds' extraParameters= {{ duration : 10, pattern : 'on' }} /> + {/* { + const [hadSuccess, setHadSuccess] = useState(false); + const [hadFailure, setHadFailure] = useState(false); + const [waiting, setWaiting] = useState(false); + const [chosenDate, setChosenDate] = useState(null); + const [firmware, setFirmware] = useState(''); + const [validFirmware, setValidFirmware] = useState(true); + const [responseBody, setResponseBody] = useState(''); + const [checkingIfSure, setCheckingIfSure] = useState(false); + const selectedDeviceId = useSelector(state => state.selectedDeviceId); + + const formValidation = () => { + if (firmware.trim() === ''){ + setValidFirmware(false); + return false; + } + return (chosenDate !== null); + } + + const setDateToNow = () => { + const now = (new Date()).toISOString(); + setChosenDate(now); + } + + 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).toISOString()); + } + + const setDate = (date) => { + if(date){ + setChosenDate(date.toISOString()); + } + } + + const confirmingIfSure = () => { + setCheckingIfSure(true); + } + useEffect(() => { + setHadSuccess(false); + setHadFailure(false); + setWaiting(false); + setChosenDate(null); + setFirmware(''); + setValidFirmware(true); + setResponseBody(''); + setCheckingIfSure(false); + },[show]); + + useEffect(() => { + setValidFirmware(true); + },[firmware]); + + const postUpgrade = () => { + setHadFailure(false); + setHadSuccess(false); + setWaiting(true); + + const token = getToken(); + + const headers = { + 'Accept': 'application/json', + 'Authorization': `Bearer ${token}`, + 'serialNumber': selectedDeviceId + }; + + const parameters = { + serialNumber: selectedDeviceId, + when: chosenDate, + uri: firmware + } + axiosInstance.post(`/device/${selectedDeviceId}/upgrade`, parameters,{ headers: headers}) + .then((response) => { + setResponseBody(JSON.stringify(response.data, null, 4)); + setHadSuccess(true); + }) + .catch(error => { + setHadFailure(true); + console.log(error); + console.log(error.response); + }) + .finally (() => { + setCheckingIfSure(false); + setWaiting(false); + }); + } + + return ( + + + Firmware Upgrade + + +
Choose a time and a firmware version for this device
+ + + setDateToNow() } >Now + + + setDateToLate() }>Later tonight + + + + +

Local time:

+
+ + setDate(date)} + min = { new Date() } + /> + +
+ +
+

Device will upgrade at (UTC): { chosenDate }

+
+ setFirmware(event.target.value)} + value={firmware} + /> + You need a url... + +
+ + + + + + Cancel + + + +
+ ); + +} + +export default FirmwareUpgradeModal; \ No newline at end of file