From ffcaf5d53650fa4b4d8fb7833103af5b7e1e827a Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Fri, 31 Oct 2025 10:58:53 -0700 Subject: [PATCH] Resolve LMS upload. --- app.json | 2 +- components/settings/settings.jsx | 2 +- .../upload-progress/upload-progress.jsx | 24 ++++++++------- redux/photos/photos.reducer.js | 2 +- redux/photos/photos.sagas.js | 30 ++++++++++++------- 5 files changed, 37 insertions(+), 23 deletions(-) diff --git a/app.json b/app.json index 3a6b221..5804570 100644 --- a/app.json +++ b/app.json @@ -6,7 +6,7 @@ "scheme": "imex-mobile-scheme", "userInterfaceStyle": "automatic", "extra": { - "expover": "8", + "expover": "15", "eas": { "projectId": "ffe01f3a-d507-4698-82cd-da1f1cad450b" } diff --git a/components/settings/settings.jsx b/components/settings/settings.jsx index 093b5bd..b52ed66 100644 --- a/components/settings/settings.jsx +++ b/components/settings/settings.jsx @@ -66,7 +66,7 @@ function Tab({ bodyshop, currentUser, signOutStart }) { }; return ( - + {t("settings.titles.settings")} diff --git a/components/upload-progress/upload-progress.jsx b/components/upload-progress/upload-progress.jsx index d5fc269..6035a42 100644 --- a/components/upload-progress/upload-progress.jsx +++ b/components/upload-progress/upload-progress.jsx @@ -69,16 +69,20 @@ export function UploadProgress({ {t("general.labels.upload")} - - {`${t("general.labels.uploadprogress")} ${Math.round( - completion * 100 - )}%`} - - + {!photoUploadProgress["Bulk"] && ( + <> + + {`${t("general.labels.uploadprogress")} ${Math.round( + completion * 100 + )}%`} + + + + )} {Object.keys(photoUploadProgress).map((key) => ( diff --git a/redux/photos/photos.reducer.js b/redux/photos/photos.reducer.js index a5e5c80..9efb44e 100644 --- a/redux/photos/photos.reducer.js +++ b/redux/photos/photos.reducer.js @@ -45,7 +45,7 @@ const photosReducer = (state = INITIAL_STATE, action) => { case PhotosActionTypes.MEDIA_UPLOAD_PROGRESS_UPDATE_BULK: return { ...state, - progress: { Upload: action.payload } + progress: { Upload: { fileName: "Bulk", ...action.payload } } }; case PhotosActionTypes.MEDIA_UPLOAD_COMPLETED: return { diff --git a/redux/photos/photos.sagas.js b/redux/photos/photos.sagas.js index 5a3a304..6ab466d 100644 --- a/redux/photos/photos.sagas.js +++ b/redux/photos/photos.sagas.js @@ -203,15 +203,6 @@ function* uploadSinglePhoto(photo, bodyshop, index, jobid) { function* uploadToLocalMediaServer(photos, bodyshop, jobid) { try { - const options = { - headers: { - "Content-Type": "multipart/form-data", - ims_token: bodyshop.localmediatoken, - }, - onUploadProgress: (e) => { - put(mediaUploadProgressBulk({ progress: e.loaded / e.total, loaded: e.loaded, total: e.total })); - }, - }; const formData = new FormData(); formData.append("jobid", jobid); @@ -227,11 +218,30 @@ function* uploadToLocalMediaServer(photos, bodyshop, jobid) { formData.append("skip_thumbnail", true); try { + const startTime = new Date(); + const handleUploadProgress = (e) => { + console.log("progress", e) + store.dispatch(mediaUploadProgressBulk({ progress: e.loaded / e.total, loaded: e.loaded, total: e.total, startTime })); + }; + + const controller = new AbortController(); + yield put(addUploadCancelTask({ assetId: "Bulk", cancelTask: () => controller.abort() })); + + const imexMediaServerResponse = yield call(axios.post, `${bodyshop.localmediaserverhttp}/jobs/upload`, formData, - options + { + headers: { + "Content-Type": "multipart/form-data", + ims_token: bodyshop.localmediatoken, + }, + onUploadProgress: handleUploadProgress, + signal: controller.signal + + } ); + if (imexMediaServerResponse.status !== 200) { console.log("Error uploading documents:", JSON.stringify(imexMediaServerResponse, null, 2)); } else {