UNPKG

react-web-native-sketch

Version:

[TODO: We need an overview of how this can be used via npm vs as a local package]

87 lines 4.83 kB
"use strict"; var __assign = (this && this.__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; }; Object.defineProperty(exports, "__esModule", { value: true }); require("whatwg-fetch"); var navigation_1 = require("./reducers/navigation"); var s3upload_1 = require("./reducers/s3upload"); var utils_1 = require("./utils"); exports.s3UploadMiddleware = function (baseUrl, baseHeaders) { if (baseHeaders === void 0) { baseHeaders = {}; } return function (_a) { var dispatch = _a.dispatch, getState = _a.getState; return function (next) { return function (action) { var s3Upload = action.s3Upload, fields = action.fields, field = action.field, method = action.method, formName = action.formName, url = action.url, extraHeaders = action.extraHeaders, body = action.body, queryParameters = action.queryParameters, _a = action.requestPayload, requestPayload = _a === void 0 ? {} : _a, _b = action.successPayload, successPayload = _b === void 0 ? {} : _b, dispatchOnSuccess = action.dispatchOnSuccess, _c = action.failurePayload, failurePayload = _c === void 0 ? {} : _c, dispatchOnFailure = action.dispatchOnFailure; if (!s3Upload) { // Normal action: pass it on return next(action); } dispatch(__assign({ type: s3upload_1.TypeKeys.GET_S3_PHOTO_INFO }, requestPayload)); // @ts-ignore var persistedHeaders = (getState().persisted && getState().persisted.headers) || {}; var fetchParams = { method: method, body: JSON.stringify(body), headers: __assign({}, baseHeaders, persistedHeaders, (extraHeaders || {})), }; return fetch(baseUrl + utils_1.encodeParametersInUrl(url, queryParameters), fetchParams) .then(function (response) { return response .json() .then(function (json) { var actionType = s3upload_1.TypeKeys.GET_S3_PHOTO_INFO_FAIL, extraData = failurePayload; if (response.status >= 200 && response.status < 300) { actionType = s3upload_1.TypeKeys.GET_S3_PHOTO_INFO_SUCCESS; extraData = successPayload; dispatchOnSuccess && dispatch(dispatchOnSuccess); } else { if (json.error) { dispatch(navigation_1.showAlert(json.error)); } else { dispatch(navigation_1.showAlert('API_ERROR')); } dispatchOnFailure && dispatch(dispatchOnFailure); } dispatch(__assign({ response: json, type: actionType }, extraData)); if (actionType === s3upload_1.TypeKeys.GET_S3_PHOTO_INFO_SUCCESS) { // TODO show a message to the user that he can only upload max 20 files var backendData = fields.length > 1 ? json : [json]; for (var i in backendData) { var photo = fields[i].field, s3ExtraData = fields[i].s3ExtraData, s3Data = __assign({}, backendData[i], s3ExtraData), payload = { field: field, photo: photo, formName: formName, s3Key: s3Data.key, preview: fields[i].preview, }; dispatch({ formTypes: [ s3upload_1.TypeKeys.POST_S3_DATA, s3upload_1.TypeKeys.POST_S3_DATA_SUCCESS, s3upload_1.TypeKeys.POST_S3_DATA_FAIL ], data: s3Data, requestPayload: payload, successPayload: payload, failurePayload: payload, }); } } }); }).catch(function (error) { console.log(error); dispatch(__assign({ response: { error: error }, type: s3upload_1.TypeKeys.GET_S3_PHOTO_INFO_FAIL }, failurePayload)); dispatchOnFailure && dispatch(dispatchOnFailure); }); }; }; }; }; //# sourceMappingURL=s3UploadMiddleware.js.map