import { CButton, CModal, CModalHeader, CModalTitle, CModalBody, CModalFooter, CCol, CFormGroup, CInputRadio, CLabel, CPopover, CRow, } from '@coreui/react'; import CIcon from '@coreui/icons-react'; import { cilX } from '@coreui/icons'; import React, { useState, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import PropTypes from 'prop-types'; import 'react-widgets/styles.css'; import axiosInstance from 'utils/axiosInstance'; import eventBus from 'utils/eventBus'; import SuccessfulActionModalBody from 'components/SuccessfulActionModalBody'; import { LoadingButton, useAuth, useDevice, useToast } from 'ucentral-libs'; const BlinkModal = ({ show, toggleModal }) => { const { t } = useTranslation(); const { currentToken, endpoints } = useAuth(); const { deviceSerialNumber } = useDevice(); const { addToast } = useToast(); const [waiting, setWaiting] = useState(false); const [chosenPattern, setPattern] = useState('blink'); const [result, setResult] = useState(null); useEffect(() => { if (show) { setWaiting(false); setPattern('blink'); setResult(null); } }, [show]); const doAction = () => { setWaiting(true); const parameters = { serialNumber: deviceSerialNumber, when: 0, pattern: chosenPattern, duration: 30, }; const headers = { Accept: 'application/json', Authorization: `Bearer ${currentToken}`, }; axiosInstance .post( `${endpoints.owgw}/api/v1/device/${encodeURIComponent(deviceSerialNumber)}/leds`, parameters, { headers }, ) .then(() => { if (chosenPattern !== 'blink') { addToast({ title: t('common.success'), body: t('commands.command_success'), color: 'success', autohide: true, }); } toggleModal(); }) .catch((e) => { if (e.response?.data?.ErrorDescription !== undefined) { const split = e.response?.data?.ErrorDescription.split(':'); if (split !== undefined && split.length >= 2) { addToast({ title: t('common.error'), body: split[1], color: 'danger', autohide: true, }); } } setResult('error'); }) .finally(() => { setWaiting(false); eventBus.dispatch('actionCompleted', { message: 'An action has been completed' }); }); }; return ( {t('blink.device_leds')}
{result === 'success' ? ( ) : (
{t('blink.explanation')} {t('blink.pattern')} setPattern('blink')} inline> {t('blink.blink')} setPattern('on')} inline> {t('common.on')} setPattern('off')} inline> {t('common.off')} {t('common.cancel')}
)}
); }; BlinkModal.propTypes = { show: PropTypes.bool.isRequired, toggleModal: PropTypes.func.isRequired, }; export default BlinkModal;