UNPKG

@rpldy/uploader

Version:

the processing and queuing engine for react-uploady

44 lines 1.89 kB
import { invariant, BATCH_STATES } from "@rpldy/shared"; import { UPLOADER_EVENTS } from "../consts"; import processFinishedRequest from "./processFinishedRequest"; import processQueueNext from "./processQueueNext"; import { getIsBatchFinalized, finalizeBatch } from "./batchHelpers"; const getFinalizeAbortedItem = queue => (id, data) => processFinishedRequest(queue, [{ id, info: data }], processQueueNext); const processAbortItem = (queue, id) => { const abortItemMethod = queue.getOptions().abortItem; invariant(!!abortItemMethod, "Abort Item method not provided yet abortItem was called"); const state = queue.getState(); return abortItemMethod(id, state.items, state.aborts, getFinalizeAbortedItem(queue)); }; const processAbortBatch = (queue, id) => { const abortBatchMethod = queue.getOptions().abortBatch; invariant(!!abortBatchMethod, "Abort Batch method not provided yet abortItem was called"); const state = queue.getState(), batchData = state.batches[id], batch = batchData?.batch; if (batch && !getIsBatchFinalized(batch)) { finalizeBatch(queue, id, UPLOADER_EVENTS.BATCH_ABORT, BATCH_STATES.ABORTED); const { isFast } = abortBatchMethod(batch, batchData.batchOptions, state.aborts, state.itemQueue, getFinalizeAbortedItem(queue), queue.getOptions()); if (isFast) { queue.clearBatchUploads(batch.id); } } }; const processAbortAll = queue => { const abortAllMethod = queue.getOptions().abortAll; invariant(!!abortAllMethod, "Abort All method not provided yet abortAll was called"); queue.trigger(UPLOADER_EVENTS.ALL_ABORT); const state = queue.getState(); const { isFast } = abortAllMethod(state.items, state.aborts, state.itemQueue, getFinalizeAbortedItem(queue), queue.getOptions()); if (isFast) { queue.clearAllUploads(); } }; export { processAbortItem, processAbortBatch, processAbortAll };