CEC-4523: Add bulk archive support (#379)

* CEC-4523: add archive endpoint and action
This commit is contained in:
Tristan Timblin
2023-07-03 12:07:19 -04:00
committed by GitHub
parent a7c13306c5
commit 11406aa8da
8 changed files with 163 additions and 63 deletions

View File

@@ -0,0 +1,47 @@
import { useState } from "react";
import manifestsAPI from "../services/manifestsAPI";
import TaskRunner from "../utils/taskRunner";
export const useUpdateManifest = (token) => {
const [updateManifestIds, setUpdateManifestIds] = useState([]);
const [makeActive, setMakeActive] = useState(false);
const remove = async () => {
return new Promise((resolve) => {
const taskRunner = new TaskRunner(5, updateManifestIds.length);
let errorCount = 0;
const task = (id) => {
return async () => manifestsAPI.deleteManifest(id, token);
}
updateManifestIds.forEach((id) => taskRunner.push(task(id))
.then((response) => {
if (response.error) {
errorCount += 1;
}
})
);
taskRunner.onComplete().then((responses) => resolve({
summary: `${updateManifestIds.length - errorCount} out of ${updateManifestIds.length} manifests were deleted.`,
responses,
}));
});
}
const archive = async () => {
return manifestsAPI.archiveManifest({
ids: updateManifestIds,
active: makeActive,
}, token);
}
return {
updateManifestIds,
setUpdateManifestIds,
makeActive,
setMakeActive,
archive,
remove,
};
};