CEC-4523: Add bulk archive support (#379)
* CEC-4523: add archive endpoint and action
This commit is contained in:
47
src/hooks/useUpdateManifest.js
Normal file
47
src/hooks/useUpdateManifest.js
Normal 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,
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user