import React, { useState, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { CButton, CCard, CCardHeader, CCardBody, CRow, CCol } from '@coreui/react'; import axiosInstance from 'utils/axiosInstance'; import { LoadingButton, useAuth, useDevice, useToast } from 'ucentral-libs'; import RebootModal from 'components/RebootModal'; import DeviceFirmwareModal from 'components/DeviceFirmwareModal'; import ConfigureModal from 'components/ConfigureModal'; import TraceModal from 'components/TraceModal'; import WifiScanModal from 'components/WifiScanModal'; import BlinkModal from 'components/BlinkModal'; import FactoryResetModal from 'components/FactoryResetModal'; import EventQueueModal from 'components/EventQueueModal'; const DeviceActions = () => { const { t } = useTranslation(); const { currentToken, endpoints } = useAuth(); const { addToast } = useToast(); const { deviceSerialNumber } = useDevice(); const [upgradeStatus, setUpgradeStatus] = useState({ loading: false, }); const [device, setDevice] = useState({}); const [showRebootModal, setShowRebootModal] = useState(false); const [showBlinkModal, setShowBlinkModal] = useState(false); const [showUpgradeModal, setShowUpgradeModal] = useState(false); const [showTraceModal, setShowTraceModal] = useState(false); const [showScanModal, setShowScanModal] = useState(false); const [connectLoading, setConnectLoading] = useState(false); const [showConfigModal, setConfigModal] = useState(false); const [showFactoryModal, setShowFactoryModal] = useState(false); const [showQueueModal, setShowQueueModal] = useState(false); const toggleRebootModal = () => { setShowRebootModal(!showRebootModal); }; const toggleBlinkModal = () => { setShowBlinkModal(!showBlinkModal); }; const toggleUpgradeModal = () => { setShowUpgradeModal(!showUpgradeModal); }; const toggleTraceModal = () => { setShowTraceModal(!showTraceModal); }; const toggleScanModal = () => { setShowScanModal(!showScanModal); }; const toggleConfigModal = () => { setConfigModal(!showConfigModal); }; const toggleFactoryResetModal = () => { setShowFactoryModal(!showFactoryModal); }; const toggleQueueModal = () => { setShowQueueModal(!showQueueModal); }; const getRttysInfo = () => { setConnectLoading(true); const options = { headers: { Accept: 'application/json', Authorization: `Bearer ${currentToken}`, }, }; axiosInstance .get( `${endpoints.owgw}/api/v1/device/${encodeURIComponent(deviceSerialNumber)}/rtty`, options, ) .then((response) => { const url = `https://${response.data.server}:${response.data.viewport}/connect/${response.data.connectionId}`; const newWindow = window.open(url, '_blank', 'noopener,noreferrer'); if (newWindow) newWindow.opener = null; }) .catch(() => {}) .finally(() => { setConnectLoading(false); }); }; const getDeviceInformation = () => { const options = { headers: { Accept: 'application/json', Authorization: `Bearer ${currentToken}`, }, }; axiosInstance .get(`${endpoints.owgw}/api/v1/device/${deviceSerialNumber}`, options) .then((response) => { setDevice(response.data); }) .catch(() => {}); }; useEffect(() => { if (upgradeStatus.result !== undefined) { addToast({ title: upgradeStatus.result.success ? t('common.success') : t('common.error'), body: upgradeStatus.result.success ? t('firmware.upgrade_command_submitted') : upgradeStatus.result.error, color: upgradeStatus.result.success ? 'success' : 'danger', autohide: true, }); setUpgradeStatus({ loading: false, }); setShowUpgradeModal(false); } }, [upgradeStatus]); useEffect(() => { getDeviceInformation(); }, [deviceSerialNumber]); return (
{t('actions.title')}
{t('actions.reboot')} {t('actions.blink')} {t('actions.firmware_upgrade')} {t('actions.trace')} {t('actions.wifi_scan')} {t('actions.factory_reset')} {t('actions.configure')} {t('commands.event_queue')}
); }; export default DeviceActions;