@dabapps/django-s3-file-upload
Version:
Upload files from the browser to S3 - client side implementation
59 lines • 2.61 kB
JavaScript
;
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