import { use, useCallback, useEffect, useState } from 'react'; import { Button, Card, CardActions, CardContent, CardHeader, Stack, TextField, SvgIcon, Dialog, DialogTitle, DialogContent, DialogActions, Box, IconButton, Input, Typography, DialogContentText } from '@mui/material'; import XMarkIcon from '@heroicons/react/24/outline/XMarkIcon'; import Check from '@heroicons/react/24/outline/CheckIcon'; import CircularProgress from '@mui/material/CircularProgress'; import Backdrop from '@mui/material/Backdrop'; import { useRouter } from 'next/router'; import ArrowsUpDownIcon from '@heroicons/react/24/solid/ArrowsUpDownIcon'; import PaperAirplane from '@heroicons/react/24/solid/PaperAirplaneIcon'; export const DevicesDiagnostic = () => { const router = useRouter() const [content, setContent] = useState(null) const [applyPing, setApplyPing] = useState(false) const [pingResponse, setPingResponse] = useState(null) const [progress, setProgress] = useState(0); //TODO: fixme // useEffect(()=>{ // let timeout = content?.number_of_repetitions.value * content?.timeout.value // if (timeout <= 0) return; // const increment = 100 / timeout ;// Calculate increment based on the timeout // const interval = setInterval(() => { // setProgress((prevProgress) => ( // prevProgress >= 100 ? 0 : prevProgress + increment // )); // }, 1000); // return () => { // clearInterval(interval); // }; // },[content]) const fetchPingData = async () => { var myHeaders = new Headers(); myHeaders.append("Content-Type", "application/json"); myHeaders.append("Authorization", localStorage.getItem("token")); var requestOptions = { method: 'GET', headers: myHeaders, redirect: 'follow' }; fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device/${router.query.id[0]}/ping`, requestOptions) .then(response => { if (response.status === 401) { router.push("/auth/login") } return response.json() }) .then(result => { console.log("ping content", result) setContent(result) }) .catch(error => console.log('error', error)); }; useEffect(()=>{ fetchPingData() },[]) const handlePing = async () => { var myHeaders = new Headers(); myHeaders.append("Content-Type", "application/json"); myHeaders.append("Authorization", localStorage.getItem("token")); var requestOptions = { method: 'PUT', headers: myHeaders, redirect: 'follow', body: JSON.stringify(content) }; fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/device/${router.query.id[0]}/ping`, requestOptions) .then(response => { if (response.status === 401) { router.push("/auth/login") } return response.json() }) .then(result => { console.log("ping content", result) setProgress(100) setApplyPing(false) setPingResponse(result) }) .catch(error => console.log('error', error)); } return ( content &&