UNPKG

@wordpress/upload-media

Version:
228 lines (226 loc) 6.33 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // packages/upload-media/src/store/reducer.ts var reducer_exports = {}; __export(reducer_exports, { default: () => reducer_default }); module.exports = __toCommonJS(reducer_exports); var import_types = require("./types.cjs"); var import_constants = require("./constants.cjs"); var noop = () => { }; var DEFAULT_STATE = { queue: [], queueStatus: "active", blobUrls: {}, settings: { mediaUpload: noop, maxConcurrentUploads: import_constants.DEFAULT_MAX_CONCURRENT_UPLOADS, maxConcurrentImageProcessing: import_constants.DEFAULT_MAX_CONCURRENT_IMAGE_PROCESSING, retry: { ...import_constants.DEFAULT_RETRY_SETTINGS } } }; function reducer(state = DEFAULT_STATE, action = { type: import_types.Type.Unknown }) { switch (action.type) { case import_types.Type.PauseQueue: { return { ...state, queueStatus: "paused" }; } case import_types.Type.ResumeQueue: { return { ...state, queueStatus: "active" }; } case import_types.Type.PauseItem: return { ...state, queue: state.queue.map( (item) => item.id === action.id ? { ...item, status: import_types.ItemStatus.Paused } : item ) }; case import_types.Type.ResumeItem: return { ...state, queue: state.queue.map( (item) => item.id === action.id ? { ...item, status: import_types.ItemStatus.Processing } : item ) }; case import_types.Type.Add: return { ...state, queue: [...state.queue, action.item] }; case import_types.Type.Cancel: return { ...state, queue: state.queue.map( (item) => item.id === action.id ? { ...item, error: action.error } : item ) }; case import_types.Type.RetryItem: return { ...state, queue: state.queue.map( (item) => item.id === action.id ? { ...item, status: import_types.ItemStatus.Processing, error: void 0, retryCount: (item.retryCount ?? 0) + 1, abortController: new AbortController() } : item ) }; case import_types.Type.ScheduleRetry: return { ...state, queue: state.queue.map( (item) => item.id === action.id ? { ...item, status: import_types.ItemStatus.PendingRetry, error: action.error, retryCount: action.retryCount, nextRetryTimestamp: action.nextRetryTimestamp } : item ) }; case import_types.Type.Remove: return { ...state, queue: state.queue.filter((item) => item.id !== action.id) }; case import_types.Type.OperationStart: { return { ...state, queue: state.queue.map( (item) => item.id === action.id ? { ...item, currentOperation: action.operation } : item ) }; } case import_types.Type.AddOperations: return { ...state, queue: state.queue.map((item) => { if (item.id !== action.id) { return item; } return { ...item, operations: [ ...item.operations || [], ...action.operations ] }; }) }; case import_types.Type.OperationFinish: return { ...state, queue: state.queue.map((item) => { if (item.id !== action.id) { return item; } const operations = item.operations ? item.operations.slice(1) : []; const attachment = item.attachment || action.item.attachment ? { ...item.attachment, ...action.item.attachment } : void 0; return { ...item, currentOperation: void 0, operations, ...action.item, attachment, additionalData: { ...item.additionalData, ...action.item.additionalData } }; }) }; case import_types.Type.CacheBlobUrl: { const blobUrls = state.blobUrls[action.id] || []; return { ...state, blobUrls: { ...state.blobUrls, [action.id]: [...blobUrls, action.blobUrl] } }; } case import_types.Type.RevokeBlobUrls: { const newBlobUrls = { ...state.blobUrls }; delete newBlobUrls[action.id]; return { ...state, blobUrls: newBlobUrls }; } case import_types.Type.UpdateProgress: return { ...state, queue: state.queue.map( (item) => item.id === action.id ? { ...item, progress: action.progress } : item ) }; case import_types.Type.AccumulateSubSize: return { ...state, queue: state.queue.map( (item) => item.id === action.id ? { ...item, subSizes: [ ...item.subSizes || [], action.subSize ] } : item ) }; case import_types.Type.UpdateSettings: { return { ...state, settings: { ...state.settings, ...action.settings } }; } } return state; } var reducer_default = reducer; //# sourceMappingURL=reducer.cjs.map