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
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}
)}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}
DebugMask: {vehicle.debug_mask}
Tags: {vehicle.tags}