UNPKG

@dabapps/django-s3-file-upload

Version:

Upload files from the browser to S3 - client side implementation

59 lines 2.61 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var redux_create_reducer_1 = require("@dabapps/redux-create-reducer"); var constants_1 = require("./constants"); exports.begin = function (state, action) { if (window.console && state.loading) { // tslint:disable-next-line:no-console console.error('New upload file action dispatched during existing upload. You should prevent uploading files during an existing upload to avoid strange loading states.'); } return __assign({}, constants_1.INITIAL_REDUCER_STATE, { fileCount: action.payload }); }; exports.request = function (state) { var inFlightCount = state.inFlightCount + 1; var loading = inFlightCount > 0; return __assign({}, state, { inFlightCount: inFlightCount, loading: loading }); }; exports.success = function (state, action) { var inFlightCount = Math.max(state.inFlightCount - 1, 0); var loading = inFlightCount > 0; var completeCount = state.completeCount + 1; var successCount = state.successCount + 1; var _a = state.data, data = _a === void 0 ? [] : _a; return __assign({}, state, { data: data.concat([action.payload]), loading: loading, inFlightCount: inFlightCount, completeCount: completeCount, successCount: successCount }); }; exports.failure = function (state, action) { var inFlightCount = Math.max(state.inFlightCount - 1, 0); var loading = inFlightCount > 0; var completeCount = state.completeCount + 1; var failureCount = state.failureCount + 1; var _a = state.error, error = _a === void 0 ? [] : _a; return __assign({}, state, { error: error.concat([action.payload]), loading: loading, inFlightCount: inFlightCount, completeCount: completeCount, failureCount: failureCount }); }; exports.createFileUploadReducer = function (actionSet) { var _a; return redux_create_reducer_1.createReducer((_a = {}, _a[actionSet.BEGIN] = exports.begin, _a[actionSet.REQUEST] = exports.request, _a[actionSet.SUCCESS] = exports.success, _a[actionSet.FAILURE] = exports.failure, _a), constants_1.INITIAL_REDUCER_STATE); }; //# sourceMappingURL=reducers.js.map