fix
All checks were successful
Build And Deploy Main / build-and-deploy (push) Successful in 33s

This commit is contained in:
2026-03-12 18:05:14 -04:00
parent 190f6bb1a0
commit 722cb2f85c
2 changed files with 45 additions and 16 deletions

View File

@@ -205,21 +205,42 @@ const RouteView = () => {
} }
return; return;
} }
const dateArr = moment(currentRoute.schedule_date)?.format('MM/DD/YYYY')?.split('/') || [];
const month = dateArr[0];
const day = dateArr[1];
const routeId = currentRoute.id; const routeId = currentRoute.id;
const toDateTokens = (dateValue) => {
const tokenSet = new Set();
const localFormatted = moment(dateValue)?.format('MM/DD/YYYY');
const utcFormatted = moment.utc(dateValue)?.format('MM/DD/YYYY');
[localFormatted, utcFormatted].forEach((formatted) => {
if (!formatted || formatted.toLowerCase().includes('invalid')) return;
const [month, day] = formatted.split('/');
if (month && day) {
tokenSet.add(`${month}_${day}`);
}
});
return Array.from(tokenSet).map((token) => token.split('_'));
};
const tryLoadSignature = async (driverIds = []) => { const tryLoadSignature = async (driverIds = [], dateValues = []) => {
const uniqueDriverIds = Array.from(new Set((driverIds || []).filter(Boolean))); const uniqueDriverIds = Array.from(new Set((driverIds || []).filter(Boolean)));
const datePairs = [];
(dateValues || []).forEach((dateValue) => {
toDateTokens(dateValue).forEach((pair) => datePairs.push(pair));
});
if (datePairs.length === 0) {
toDateTokens(currentRoute.schedule_date).forEach((pair) => datePairs.push(pair));
}
const uniqueDatePairs = Array.from(new Set(datePairs.map((pair) => `${pair[0]}_${pair[1]}`)))
.map((token) => token.split('_'));
for (const driverId of uniqueDriverIds) { for (const driverId of uniqueDriverIds) {
try { for (const [month, day] of uniqueDatePairs) {
const data = await CustomerService.getAvatar(`${routeId}_${driverId}_${month}_${day}`); try {
if (data?.data) { const data = await CustomerService.getAvatar(`${routeId}_${driverId}_${month}_${day}`);
return data.data; if (data?.data) {
return data.data;
}
} catch (error) {
// Try next candidate key.
} }
} catch (error) {
// Try next candidate key.
} }
} }
return undefined; return undefined;
@@ -229,6 +250,8 @@ const RouteView = () => {
resolvedDriverId, resolvedDriverId,
currentRoute?.driver, currentRoute?.driver,
routeSnapshot?.driver routeSnapshot?.driver
], [
currentRoute?.schedule_date
]); ]);
if (isMounted) { if (isMounted) {
setSignature(initialSignature); setSignature(initialSignature);
@@ -236,15 +259,17 @@ const RouteView = () => {
try { try {
const requestRes = await SignatureRequestService.getAllSignatureRequests({ const requestRes = await SignatureRequestService.getAllSignatureRequests({
route_id: routeId, route_id: routeId
route_date: currentRoute.schedule_date
}); });
const firstRequest = requestRes?.data?.[0]; const requestList = requestRes?.data || [];
const firstRequest = requestList[0];
if (isMounted) { if (isMounted) {
setSignatureRequest(firstRequest); setSignatureRequest(firstRequest);
} }
if (!initialSignature && firstRequest?.driver_id) { if (!initialSignature) {
const signatureFromRequestDriver = await tryLoadSignature([firstRequest.driver_id]); const requestDriverIds = requestList.map((item) => item?.driver_id).filter(Boolean);
const requestDates = requestList.map((item) => item?.route_date).filter(Boolean);
const signatureFromRequestDriver = await tryLoadSignature(requestDriverIds, requestDates);
if (isMounted) { if (isMounted) {
setSignature(signatureFromRequestDriver); setSignature(signatureFromRequestDriver);
} }

View File

@@ -37,7 +37,11 @@ const deleteClient = (id, data) => {
} }
const uploadAvatar = (filename, data) => { const uploadAvatar = (filename, data) => {
return http.post(`/files/upload/${filename}`, data) const safeFilename = `${filename || ''}`.trim();
if (!safeFilename || safeFilename.includes('undefined') || safeFilename.includes('null')) {
throw new Error('Invalid upload filename for avatar/signature.');
}
return http.post(`/files/upload/${encodeURIComponent(safeFilename)}`, data)
} }
const getAvatar = (filename) => { const getAvatar = (filename) => {