@wordpress/upload-media
Version:
Core media upload logic.
8 lines (7 loc) • 11.1 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../src/store/reducer.ts"],
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport {\n\ttype AccumulateSubSizeAction,\n\ttype AddAction,\n\ttype AddOperationsAction,\n\ttype CacheBlobUrlAction,\n\ttype CancelAction,\n\tItemStatus,\n\ttype OperationFinishAction,\n\ttype OperationStartAction,\n\ttype PauseItemAction,\n\ttype PauseQueueAction,\n\ttype QueueItem,\n\ttype RemoveAction,\n\ttype ResumeItemAction,\n\ttype ResumeQueueAction,\n\ttype RetryItemAction,\n\ttype RevokeBlobUrlsAction,\n\ttype ScheduleRetryAction,\n\ttype State,\n\tType,\n\ttype UnknownAction,\n\ttype UpdateProgressAction,\n\ttype UpdateSettingsAction,\n} from './types';\nimport {\n\tDEFAULT_MAX_CONCURRENT_UPLOADS,\n\tDEFAULT_MAX_CONCURRENT_IMAGE_PROCESSING,\n\tDEFAULT_RETRY_SETTINGS,\n} from './constants';\n\nconst noop = () => {};\n\nconst DEFAULT_STATE: State = {\n\tqueue: [],\n\tqueueStatus: 'active',\n\tblobUrls: {},\n\tsettings: {\n\t\tmediaUpload: noop,\n\t\tmaxConcurrentUploads: DEFAULT_MAX_CONCURRENT_UPLOADS,\n\t\tmaxConcurrentImageProcessing: DEFAULT_MAX_CONCURRENT_IMAGE_PROCESSING,\n\t\tretry: { ...DEFAULT_RETRY_SETTINGS },\n\t},\n};\n\ntype Action =\n\t| AccumulateSubSizeAction\n\t| AddAction\n\t| RemoveAction\n\t| CancelAction\n\t| RetryItemAction\n\t| ScheduleRetryAction\n\t| PauseItemAction\n\t| ResumeItemAction\n\t| PauseQueueAction\n\t| ResumeQueueAction\n\t| AddOperationsAction\n\t| OperationFinishAction\n\t| OperationStartAction\n\t| CacheBlobUrlAction\n\t| RevokeBlobUrlsAction\n\t| UpdateProgressAction\n\t| UpdateSettingsAction\n\t| UnknownAction;\n\nfunction reducer(\n\tstate = DEFAULT_STATE,\n\taction: Action = { type: Type.Unknown }\n) {\n\tswitch ( action.type ) {\n\t\tcase Type.PauseQueue: {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tqueueStatus: 'paused',\n\t\t\t};\n\t\t}\n\n\t\tcase Type.ResumeQueue: {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tqueueStatus: 'active',\n\t\t\t};\n\t\t}\n\n\t\tcase Type.PauseItem:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tqueue: state.queue.map(\n\t\t\t\t\t( item ): QueueItem =>\n\t\t\t\t\t\titem.id === action.id\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...item,\n\t\t\t\t\t\t\t\t\tstatus: ItemStatus.Paused,\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: item\n\t\t\t\t),\n\t\t\t};\n\n\t\tcase Type.ResumeItem:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tqueue: state.queue.map(\n\t\t\t\t\t( item ): QueueItem =>\n\t\t\t\t\t\titem.id === action.id\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...item,\n\t\t\t\t\t\t\t\t\tstatus: ItemStatus.Processing,\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: item\n\t\t\t\t),\n\t\t\t};\n\n\t\tcase Type.Add:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tqueue: [ ...state.queue, action.item ],\n\t\t\t};\n\n\t\tcase Type.Cancel:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tqueue: state.queue.map(\n\t\t\t\t\t( item ): QueueItem =>\n\t\t\t\t\t\titem.id === action.id\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...item,\n\t\t\t\t\t\t\t\t\terror: action.error,\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: item\n\t\t\t\t),\n\t\t\t};\n\n\t\tcase Type.RetryItem:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tqueue: state.queue.map(\n\t\t\t\t\t( item ): QueueItem =>\n\t\t\t\t\t\titem.id === action.id\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...item,\n\t\t\t\t\t\t\t\t\tstatus: ItemStatus.Processing,\n\t\t\t\t\t\t\t\t\terror: undefined,\n\t\t\t\t\t\t\t\t\tretryCount: ( item.retryCount ?? 0 ) + 1,\n\t\t\t\t\t\t\t\t\tabortController: new AbortController(),\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: item\n\t\t\t\t),\n\t\t\t};\n\n\t\tcase Type.ScheduleRetry:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tqueue: state.queue.map(\n\t\t\t\t\t( item ): QueueItem =>\n\t\t\t\t\t\titem.id === action.id\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...item,\n\t\t\t\t\t\t\t\t\tstatus: ItemStatus.PendingRetry,\n\t\t\t\t\t\t\t\t\terror: action.error,\n\t\t\t\t\t\t\t\t\tretryCount: action.retryCount,\n\t\t\t\t\t\t\t\t\tnextRetryTimestamp:\n\t\t\t\t\t\t\t\t\t\taction.nextRetryTimestamp,\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: item\n\t\t\t\t),\n\t\t\t};\n\n\t\tcase Type.Remove:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tqueue: state.queue.filter( ( item ) => item.id !== action.id ),\n\t\t\t};\n\n\t\tcase Type.OperationStart: {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tqueue: state.queue.map(\n\t\t\t\t\t( item ): QueueItem =>\n\t\t\t\t\t\titem.id === action.id\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...item,\n\t\t\t\t\t\t\t\t\tcurrentOperation: action.operation,\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: item\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tcase Type.AddOperations:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tqueue: state.queue.map( ( item ): QueueItem => {\n\t\t\t\t\tif ( item.id !== action.id ) {\n\t\t\t\t\t\treturn item;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...item,\n\t\t\t\t\t\toperations: [\n\t\t\t\t\t\t\t...( item.operations || [] ),\n\t\t\t\t\t\t\t...action.operations,\n\t\t\t\t\t\t],\n\t\t\t\t\t};\n\t\t\t\t} ),\n\t\t\t};\n\n\t\tcase Type.OperationFinish:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tqueue: state.queue.map( ( item ): QueueItem => {\n\t\t\t\t\tif ( item.id !== action.id ) {\n\t\t\t\t\t\treturn item;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst operations = item.operations\n\t\t\t\t\t\t? item.operations.slice( 1 )\n\t\t\t\t\t\t: [];\n\n\t\t\t\t\t// Prevent an empty object if there's no attachment data.\n\t\t\t\t\tconst attachment =\n\t\t\t\t\t\titem.attachment || action.item.attachment\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...item.attachment,\n\t\t\t\t\t\t\t\t\t...action.item.attachment,\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...item,\n\t\t\t\t\t\tcurrentOperation: undefined,\n\t\t\t\t\t\toperations,\n\t\t\t\t\t\t...action.item,\n\t\t\t\t\t\tattachment,\n\t\t\t\t\t\tadditionalData: {\n\t\t\t\t\t\t\t...item.additionalData,\n\t\t\t\t\t\t\t...action.item.additionalData,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t} ),\n\t\t\t};\n\n\t\tcase Type.CacheBlobUrl: {\n\t\t\tconst blobUrls = state.blobUrls[ action.id ] || [];\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tblobUrls: {\n\t\t\t\t\t...state.blobUrls,\n\t\t\t\t\t[ action.id ]: [ ...blobUrls, action.blobUrl ],\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tcase Type.RevokeBlobUrls: {\n\t\t\tconst newBlobUrls = { ...state.blobUrls };\n\t\t\tdelete newBlobUrls[ action.id ];\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tblobUrls: newBlobUrls,\n\t\t\t};\n\t\t}\n\n\t\tcase Type.UpdateProgress:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tqueue: state.queue.map(\n\t\t\t\t\t( item ): QueueItem =>\n\t\t\t\t\t\titem.id === action.id\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...item,\n\t\t\t\t\t\t\t\t\tprogress: action.progress,\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: item\n\t\t\t\t),\n\t\t\t};\n\n\t\tcase Type.AccumulateSubSize:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tqueue: state.queue.map(\n\t\t\t\t\t( item ): QueueItem =>\n\t\t\t\t\t\titem.id === action.id\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...item,\n\t\t\t\t\t\t\t\t\tsubSizes: [\n\t\t\t\t\t\t\t\t\t\t...( item.subSizes || [] ),\n\t\t\t\t\t\t\t\t\t\taction.subSize,\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: item\n\t\t\t\t),\n\t\t\t};\n\n\t\tcase Type.UpdateSettings: {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tsettings: {\n\t\t\t\t\t...state.settings,\n\t\t\t\t\t...action.settings,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}\n\n\treturn state;\n}\n\nexport default reducer;\n"],
"mappings": "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",
"names": []
}