CEC-1256/CEC-1330 data logger for vehicles/fleets and details tabs for vehicles/fleets (#136)

* forms for fleet can filters

* unit tests for fleet filters

* removing warnings

* updating regex

* added fleet details page

* fleet pages

* smoothed out bugs

* fleets done

* working update, delete vehicles

* finished mocks, still need snapshots and context tests

* contexts done

* snapshot tests

* updating code smells

* smells
This commit is contained in:
Drew Taylor
2022-04-14 18:11:22 -07:00
committed by GitHub
parent afa3c1e529
commit 07f77cabdb
56 changed files with 5854 additions and 2208 deletions

View File

@@ -28,6 +28,7 @@ const validateAdd = (vehicle) => {
export const VehicleProvider = ({ children }) => {
const [busy, setBusy] = useState(false);
const [vehicle, setVehicle] = useState({});
const [vehicles, setVehicles] = useState([]);
const [totalVehicles, setTotalVehicles] = useState(0);
const [models, setModels] = useState([]);
@@ -49,11 +50,11 @@ export const VehicleProvider = ({ children }) => {
}
};
const addVehicle = async (vehicle, token) => {
const addVehicle = async (v, token) => {
try {
setBusy(true);
validateAdd(vehicle);
const result = await api.addVehicle(vehicle, token);
validateAdd(v);
const result = await api.addVehicle(v, token);
if (result.error) throw new Error(`Add vehicle error. ${result.message}`);
return result;
} finally {
@@ -118,6 +119,21 @@ export const VehicleProvider = ({ children }) => {
}
};
const getVehicle = async (vin, token) => {
try {
setBusy(true);
validateVIN(vin);
const result = await api.getVehicle(vin, token);
if (result.error) throw new Error(`Get vehicle error. ${result.message}`);
setVehicle(result);
return result;
} finally {
setBusy(false);
}
}
const getVehicles = async (search, token) => {
try {
setBusy(true);
@@ -159,23 +175,56 @@ export const VehicleProvider = ({ children }) => {
}
};
const updateVehicle = async (vin, v, token) => {
try {
setBusy(true);
validateVIN(vin);
validateVehicle(v);
const result = await api.updateVehicle(vin, v, token);
if (result.error)
throw new Error(`Update vehicle error. ${result.message}`);
return result;
} finally {
setBusy(false);
}
}
const deleteVehicle = async (vin, token) => {
try {
setBusy(true);
validateVIN(vin);
const result = await api.deleteVehicle(vin, token);
if (result.error)
throw new Error(`Delete vehicle error. ${result.message}`);
return result;
} finally {
setBusy(false);
}
}
return (
<VehicleContext.Provider
value={{
busy,
models,
totalVehicles,
vehicle,
vehicles,
years,
addVehicle,
deleteVehicle,
getConnections,
getECUs,
getLocations,
getModels,
getState,
getYears,
getVehicle,
getVehicles,
sendCommand
sendCommand,
updateVehicle
}}
>
{children}
@@ -183,4 +232,19 @@ export const VehicleProvider = ({ children }) => {
);
};
const validateVehicle = (v) => {
if (v == null) {
throw new Error("No vehicle data");
}
validateVIN(v.vin);
};
const validateVIN = (vin) => {
if (vin == null || vin.length !== 17) {
throw new Error("Invalid VIN");
}
};
export const useVehicleContext = () => useContext(VehicleContext);