Major improvements to upload progress.

This commit is contained in:
Patrick Fic
2025-10-31 08:18:32 -07:00
parent 8e63ef0d6d
commit ab8703a524
7 changed files with 185 additions and 61 deletions

View File

@@ -5,7 +5,9 @@ const INITIAL_STATE = {
uploadInProgress: true,
uploadError: null,
jobid: null,
progress: {}
progress: {},
cancelTasks: {},
cancelTriggered: false,
};
const photosReducer = (state = INITIAL_STATE, action) => {
@@ -17,7 +19,9 @@ const photosReducer = (state = INITIAL_STATE, action) => {
jobid: action.payload.jobid,
uploadInProgress: true,
uploadError: null,
progress: action.payload.progress || {}
progress: action.payload.progress || {},
cancelTasks: {},
cancelTriggered: false,
};
case PhotosActionTypes.MEDIA_UPLOAD_FAILURE:
return {
@@ -31,9 +35,12 @@ const photosReducer = (state = INITIAL_STATE, action) => {
progress: { ...state.progress, [action.payload.assetId]: { ...state.progress[action.payload.assetId], ...action.payload } }
};
case PhotosActionTypes.MEDIA_UPLOAD_SUCCESS_ONE:
const { [action.payload.assetId]: _, ...remainingTasks } = state.cancelTasks;
return {
...state,
progress: { ...state.progress, [action.payload.assetId]: { ...state.progress[action.payload.assetId], progress: 100, status: 'completed', endTime: new Date() } }
progress: { ...state.progress, [action.payload.assetId]: { ...state.progress[action.payload.assetId], progress: 100, status: 'completed', endTime: new Date() } },
cancelTasks: remainingTasks
};
case PhotosActionTypes.MEDIA_UPLOAD_PROGRESS_UPDATE_BULK:
return {
@@ -46,13 +53,35 @@ const photosReducer = (state = INITIAL_STATE, action) => {
uploadInProgress: false,
uploadError: null,
photos: [],
progress: {}
progress: {},
cancelTasks: {}
};
case PhotosActionTypes.CLEAR_UPLOAD_ERROR:
return {
...state,
photos: [], progress: {},
photos: [],
progress: {},
uploadError: null,
cancelTasks: {},
};
case PhotosActionTypes.ADD_UPLOAD_CANCEL_TASK:
return {
...state,
cancelTasks: {
...state.cancelTasks,
[action.payload.assetId]: action.payload.cancelTask,
},
};
case PhotosActionTypes.REMOVE_UPLOAD_CANCEL_TASK:
const { [action.payload.assetId]: _2, ...remainingTasks2 } = state.cancelTasks; //2 added for scoped variable conflict.
return {
...state,
cancelTasks: remainingTasks2,
};
case PhotosActionTypes.CANCEL_UPLOADS:
return {
...state,
cancelTriggered: true,
};
default:
return state;