import { Typography } from "@material-ui/core"; import clsx from "clsx"; import React, { useEffect, useState } from "react"; import { logger } from "../../../services/monitoring"; import { useStatusContext } from "../../Contexts/StatusContext"; import { useUserContext } from "../../Contexts/UserContext"; import { useVehicleContext, VehicleProvider } from "../../Contexts/VehicleContext"; import DigitalTwin from "../../DigitalTwin"; import useStyles from "../../useStyles"; const REQUEST_INTERVAL = 10000; const Main = (props) => { const { getState } = useVehicleContext(); const { token: { idToken: { jwtToken: token }, }, } = useUserContext(); const { setMessage } = useStatusContext(); const classes = useStyles(); const [carState, setCarState] = useState(null); const { vin } = props; useEffect(() => { if (!vin) return; getCarState(); const interval = setInterval(getCarState, REQUEST_INTERVAL); return () => { clearInterval(interval); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [vin]); const getCarState = async () => { try { const result = await getState(token, vin); setCarState(result.data); } catch (e) { setMessage(e.message); logger.warn(e.stack); } }; return (