48 lines
1.2 KiB
JavaScript
48 lines
1.2 KiB
JavaScript
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(30, 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,
|
|
};
|
|
};
|