-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathuseVehiclesData.tsx
56 lines (51 loc) · 1.86 KB
/
useVehiclesData.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import { useState } from 'react';
import axios from 'axios';
import { uri } from '@/data/constant';
import { jwtToken, stsId } from '@/data/cookieNames';
import { setCookie, getCookie } from '@/lib/cookieFunctions';
import { apiRoutes } from '@/data/apiRoutes';
import { message } from 'antd';
type Vehicle = {
id: string;
vehicleNumber: string;
vehicleType: string;
capacity: number;
loadedFuelCostPerKm: number;
unloadedFuelCostPerKm: number;
landFillId: string;
createdAt: string;
updatedAt: string;
};
export default function useVehicleList() {
const [vehicleList, setVehicleList] = useState<Vehicle[]>([]); // Initialize with an empty array of Vehicle objects
const [vehicleNumberList, setVehicleNumberList] = useState<string[]>([]);
async function getVehicleList() {
try {
const res = await axios.get(apiRoutes.vehicle.getAll ,
{
headers: { Authorization: `Bearer ${getCookie(jwtToken)}` },
}
);
// Assuming the response data is an array of vehicles
const AllVehicle: Vehicle[] = res.data.map((vehicle: any) => ({
id: vehicle.id,
vehicleNumber: vehicle.vehicleNumber,
vehicleType: vehicle.vehicleType,
capacity: vehicle.capacity,
loadedFuelCostPerKm: vehicle.loadedFuelCostPerKm,
unloadedFuelCostPerKm: vehicle.unloadedFuelCostPerKm,
landFillId: vehicle.landFillId,
createdAt: vehicle.createdAt,
updatedAt: vehicle.updatedAt
}));
const vehicleNumbers = res.data.map((vehicle: Vehicle) => vehicle.vehicleNumber);
setVehicleList(AllVehicle);
setVehicleNumberList(vehicleNumbers);
return true;
} catch (error: any) {
message.error(error?.response?.data?.message?.toString() || "Error fetching vehicle list");
return false;
}
}
return { vehicleList, vehicleNumberList, getVehicleList };
}