This commit is contained in:
@@ -196,17 +196,70 @@ const RouteView = () => {
|
|||||||
}, [currentRoute?.driver, currentDriver?.id]);
|
}, [currentRoute?.driver, currentDriver?.id]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const dateArr = moment(currentRoute?.schedule_date)?.format('MM/DD/YYYY')?.split('/') || [];
|
let isMounted = true;
|
||||||
|
const loadSignatureAndRequest = async () => {
|
||||||
CustomerService.getAvatar(`${currentRoute?.id}_${currentRoute?.driver}_${dateArr[0]}_${dateArr[1]}`).then(data => {
|
if (!currentRoute?.id || !currentRoute?.schedule_date) {
|
||||||
setSignature(data.data);
|
if (isMounted) {
|
||||||
});
|
setSignature(undefined);
|
||||||
SignatureRequestService.getAllSignatureRequests({driver_id: resolvedDriverId, route_id: currentRoute?.id, route_date: currentRoute?.schedule_date}).then((data) => {
|
setSignatureRequest(undefined);
|
||||||
if (data?.data?.length > 0) {
|
}
|
||||||
setSignatureRequest(data?.data[0]);
|
return;
|
||||||
}
|
}
|
||||||
})
|
const dateArr = moment(currentRoute.schedule_date)?.format('MM/DD/YYYY')?.split('/') || [];
|
||||||
}, [currentRoute, resolvedDriverId]);
|
const month = dateArr[0];
|
||||||
|
const day = dateArr[1];
|
||||||
|
const routeId = currentRoute.id;
|
||||||
|
|
||||||
|
const tryLoadSignature = async (driverIds = []) => {
|
||||||
|
const uniqueDriverIds = Array.from(new Set((driverIds || []).filter(Boolean)));
|
||||||
|
for (const driverId of uniqueDriverIds) {
|
||||||
|
try {
|
||||||
|
const data = await CustomerService.getAvatar(`${routeId}_${driverId}_${month}_${day}`);
|
||||||
|
if (data?.data) {
|
||||||
|
return data.data;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
// Try next candidate key.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
|
};
|
||||||
|
|
||||||
|
const initialSignature = await tryLoadSignature([
|
||||||
|
resolvedDriverId,
|
||||||
|
currentRoute?.driver,
|
||||||
|
routeSnapshot?.driver
|
||||||
|
]);
|
||||||
|
if (isMounted) {
|
||||||
|
setSignature(initialSignature);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const requestRes = await SignatureRequestService.getAllSignatureRequests({
|
||||||
|
route_id: routeId,
|
||||||
|
route_date: currentRoute.schedule_date
|
||||||
|
});
|
||||||
|
const firstRequest = requestRes?.data?.[0];
|
||||||
|
if (isMounted) {
|
||||||
|
setSignatureRequest(firstRequest);
|
||||||
|
}
|
||||||
|
if (!initialSignature && firstRequest?.driver_id) {
|
||||||
|
const signatureFromRequestDriver = await tryLoadSignature([firstRequest.driver_id]);
|
||||||
|
if (isMounted) {
|
||||||
|
setSignature(signatureFromRequestDriver);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
if (isMounted) {
|
||||||
|
setSignatureRequest(undefined);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
loadSignatureAndRequest();
|
||||||
|
return () => {
|
||||||
|
isMounted = false;
|
||||||
|
};
|
||||||
|
}, [currentRoute?.id, currentRoute?.schedule_date, currentRoute?.driver, resolvedDriverId, routeSnapshot?.driver]);
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="list row mb-4">
|
<div className="list row mb-4">
|
||||||
|
|||||||
Reference in New Issue
Block a user