import { Grid, Tooltip, Checkbox, FormControlLabel } from "@material-ui/core"; import DeleteIcon from "@material-ui/icons/Delete"; import EditIcon from "@material-ui/icons/Edit"; import UploadIcon from '@mui/icons-material/Upload'; import clsx from "clsx"; import React, { useEffect, useState } from "react"; import { Redirect } from "react-router"; import { Link } from "react-router-dom"; import { logger } from "../../../../services/monitoring"; import { Permissions } from "../../../../utils/roles"; import { useStatusContext } from "../../../Contexts/StatusContext"; import { useUserContext } from "../../../Contexts/UserContext"; import { useVehicleContext, VehicleProvider } from "../../../Contexts/VehicleContext"; import { RoleWrap } from "../../../Controls/RoleWrap"; import DeleteConfirmation from "../../../DeleteConfirmation"; import GeneralConfirmation from "../../../GeneralConfirmation"; import useStyles from "../../../useStyles"; const MainForm = ({ vin }) => { const classes = useStyles(); const { setMessage } = useStatusContext(); const { vehicle, getVehicle, deleteVehicle, uploadConfig } = useVehicleContext(); const [redirect, setRedirect] = useState(null); const [showDeleteModal, setShowDeleteModal] = useState(false); const [showUploadConfigModal, setShowUploadConfigModal] = useState(false); const [forced, setForced] = useState(false); const { token: { idToken: { jwtToken: token }, }, groups, providers, } = useUserContext(); const showDebugMask = (process.env.REACT_APP_ENABLE_DEBUGMASK === "1"); const onForcedChange = (event) => { setForced(event.target.checked); } useEffect(() => { (async () => { try { if (!vin || !token) return; await getVehicle(vin, token); } catch (e) { setMessage(e.message); logger.warn(e.stack); } })(); // eslint-disable-next-line react-hooks/exhaustive-deps }, [token]); const onDelete = async () => { try { await deleteVehicle(vin, token); setMessage(`Deleted ${vin}`); setRedirect(`/vehicles`); } catch (e) { setMessage(e.message); logger.warn(e.stack); } }; const onUploadConfig = async () => { try { await uploadConfig(vin, forced, token); setMessage(`Config Uploaded ${vin}`); } catch (e) { setMessage(e.message); logger.warn(e.stack); } } if (redirect && redirect.length > 0) { return ; } return (

VIN: {vin}

ICCID: {vehicle.iccid}

Model: {vehicle.model}

Year: {vehicle.year}

Trim: {vehicle.trim}

Country: {vehicle.country}

Powertrain Type: {vehicle.powertrain}

Restraint Type: {vehicle.restraint}

Body Type: {vehicle.body_type}

Info Source: {vehicle.info_source}

{vehicle.log_level != null && (

Log Level: {vehicle.log_level}

)}
{vehicle.canbus && ( CANBus

Enabled: {vehicle.canbus.enabled.toString()}

Max Memory Buffer Size: {vehicle.canbus.max_mem_buffer_size ?? "Default"}

Enabled: {vehicle.canbus.data_logger_enabled.toString()}

Max Disk Buffer Size: {vehicle.canbus.max_disk_buffer_size ?? "Default"}

Filters: {vehicle.canbus.filters ? vehicle.canbus.filters.length : 0}

)} {showDebugMask && (

DebugMask: {vehicle.debug_mask}

)}

Tags: {vehicle.tags}

} /> setShowUploadConfigModal(true)}> setShowDeleteModal(true)}>
setShowDeleteModal(false)} deleteFunction={onDelete} /> setShowUploadConfigModal(false)} actionFunction={onUploadConfig} title="Send Update" />
); }; const CarDetails = (props) => ( ); export default CarDetails;