import React, { useEffect, useState } from "react"; import { useParams } from "react-router"; import { Button, Chip, FormControl, Input, InputLabel, MenuItem, Select, TextField, Typography, useTheme, } from "@material-ui/core"; import { UpdatesProvider, useUpdatesContext, } from "../../Contexts/UpdatesContext"; import { useVehicleContext, VehicleProvider, } from "../../Contexts/VehicleContext"; import { useUserContext } from "../../Contexts/UserContext"; import { useStatusContext } from "../../Contexts/StatusContext"; import useStyles from "../../useStyles"; import { tsLocalDateTimeString } from "../../../utils/dates"; import menuItemStyle from "../../menuItemStyle"; const MainForm = () => { const { packageid } = useParams(); const { getPackages, createCarUpdates, packages, busy } = useUpdatesContext(); const { getVehicles, vehicles } = useVehicleContext(); const { token: { idToken: { jwtToken: token }, }, } = useUserContext(); const { setMessage } = useStatusContext(); const [packageName, setPackageName] = useState(""); const [version, setVersion] = useState(""); const [link, setLink] = useState(""); const [description, setDescription] = useState(""); const [releaseNotesLink, setReleaseNotesLink] = useState(""); const [createDate, setCreateDate] = useState(""); const [selectedVehicles, setSelectedVehicles] = useState([]); const classes = useStyles(); const theme = useTheme(); const handleVehiclesChange = (event) => { setSelectedVehicles(event.target.value); }; const onSubmit = async (event) => { try { event.preventDefault(); const data = { package_id: parseInt(packageid), vins: selectedVehicles, }; await createCarUpdates(data, token); setMessage( `Deployed ${packageName} ${version} to ${selectedVehicles.length} cars` ); setSelectedVehicles([]); } catch (e) { setMessage(e.message); } }; const getData = async () => { try { getPackages({ id: parseInt(packageid) }, token); } catch (e) { setMessage(e.message); } }; const handleCarOpen = async () => { try { await getVehicles(null, token); } catch (e) { setMessage(e.message); } }; useEffect(() => { getData(); // eslint-disable-next-line react-hooks/exhaustive-deps }, [token]); useEffect(() => { if (!packages || packages.length === 0) return; var data = packages[0]; setPackageName(data.package_name); setVersion(data.version); setLink(data.link); setDescription(data.desc || ""); setReleaseNotesLink(data.release_notes || ""); setCreateDate(tsLocalDateTimeString(data.timestamp)); }, [packages]); return (
{`[${packageid}] ${packageName} ${version}`}
Vehicles
); }; const UpdatePackageDeployForm = () => ( ); export default UpdatePackageDeployForm;