sharyn
Version:
Combines all the other packages under one.
212 lines (178 loc) • 7.09 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.fetchPageThunk = exports.graphqlThunk = exports.configureFetchPageThunk = exports.configureGraphqlThunk = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/objectSpread"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
var _graphqlCall = _interopRequireDefault(require("@sharyn/shared/graphql-call"));
var _spread = _interopRequireDefault(require("@sharyn/util/spread"));
// flow-disable-next-line
// flow-disable-next-line
var configuredUrlBase;
var configuredUrlPath;
var configuredGraphqlRequest;
var configuredGraphqlSuccess;
var configuredGraphqlFailure;
var configuredOptionsFn;
var configuredFetchPageRequest;
var configuredFetchPageSuccess;
var configuredFetchPageFailure;
var configureGraphqlThunk = function configureGraphqlThunk(_ref) {
var request = _ref.request,
success = _ref.success,
failure = _ref.failure,
urlBase = _ref.urlBase,
urlPath = _ref.urlPath,
_ref$options = _ref.options,
options = _ref$options === void 0 ? function () {
return {};
} : _ref$options;
configuredGraphqlRequest = request;
configuredGraphqlSuccess = success;
configuredGraphqlFailure = failure;
configuredUrlBase = urlBase;
configuredUrlPath = urlPath;
configuredOptionsFn = options;
};
exports.configureGraphqlThunk = configureGraphqlThunk;
var configureFetchPageThunk = function configureFetchPageThunk(_ref2) {
var request = _ref2.request,
success = _ref2.success,
failure = _ref2.failure;
configuredFetchPageRequest = request;
configuredFetchPageSuccess = success;
configuredFetchPageFailure = failure;
};
exports.configureFetchPageThunk = configureFetchPageThunk;
var graphqlThunk = function graphqlThunk(_ref3) {
var _ref3$urlBase = _ref3.urlBase,
urlBase = _ref3$urlBase === void 0 ? configuredUrlBase : _ref3$urlBase,
_ref3$urlPath = _ref3.urlPath,
urlPath = _ref3$urlPath === void 0 ? configuredUrlPath : _ref3$urlPath,
authorizationBearer = _ref3.authorizationBearer,
urlParams = _ref3.urlParams,
mapUrlParams = _ref3.mapUrlParams,
fields = _ref3.fields,
mapFields = _ref3.mapFields,
query = _ref3.query,
mapResp = _ref3.mapResp,
successRedirect = _ref3.successRedirect,
onSuccess = _ref3.onSuccess,
onDataErrors = _ref3.onDataErrors,
onInvalidFields = _ref3.onInvalidFields,
routerHistory = _ref3.routerHistory,
asyncKey = _ref3.asyncKey,
_ref3$request = _ref3.request,
request = _ref3$request === void 0 ? configuredGraphqlRequest : _ref3$request,
_ref3$success = _ref3.success,
success = _ref3$success === void 0 ? configuredGraphqlSuccess : _ref3$success,
_ref3$failure = _ref3.failure,
failure = _ref3$failure === void 0 ? configuredGraphqlFailure : _ref3$failure,
_ref3$options = _ref3.options,
optionsFn = _ref3$options === void 0 ? configuredOptionsFn : _ref3$options,
_ref3$throwErr = _ref3.throwErr,
throwErr = _ref3$throwErr === void 0 ? true : _ref3$throwErr;
return (
/*#__PURE__*/
function () {
var _ref4 = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee(dispatch) {
var data;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (request && success && failure) {
_context.next = 2;
break;
}
throw Error('You need to configure a request, success, and failure action creator before using graphqlThunk');
case 2:
dispatch(request(asyncKey));
_context.prev = 3;
_context.next = 6;
return (0, _graphqlCall.default)((0, _objectSpread2.default)({
urlBase: urlBase,
urlPath: urlPath,
authorizationBearer: authorizationBearer,
urlParams: urlParams,
mapUrlParams: mapUrlParams,
fields: fields,
mapFields: mapFields,
query: query,
mapResp: mapResp
}, optionsFn()));
case 6:
data = _context.sent;
dispatch(success((0, _objectSpread2.default)({
data: data
}, (0, _spread.default)({
asyncKey: asyncKey
}))));
if (data.errors) {
onDataErrors && onDataErrors(data);
}
if (data.invalidFields) {
onInvalidFields && onInvalidFields(data);
}
if (!(!data.errors && !data.invalidFields)) {
_context.next = 16;
break;
}
if (!successRedirect) {
_context.next = 15;
break;
}
if (routerHistory) {
_context.next = 14;
break;
}
throw Error('In order to use successRedirect, you need to provide a routerHistory to graphqlThunk');
case 14:
routerHistory.push(successRedirect instanceof Function ? successRedirect(data, fields) : successRedirect);
case 15:
onSuccess && onSuccess(data);
case 16:
return _context.abrupt("return", data);
case 19:
_context.prev = 19;
_context.t0 = _context["catch"](3);
dispatch(failure((0, _objectSpread2.default)({
error: _context.t0
}, (0, _spread.default)({
asyncKey: asyncKey
}))));
if (!throwErr) {
_context.next = 24;
break;
}
throw _context.t0;
case 24:
return _context.abrupt("return", _context.t0);
case 25:
case "end":
return _context.stop();
}
}
}, _callee, this, [[3, 19]]);
}));
return function (_x) {
return _ref4.apply(this, arguments);
};
}()
);
};
exports.graphqlThunk = graphqlThunk;
var fetchPageThunk = function fetchPageThunk(options) {
return graphqlThunk((0, _objectSpread2.default)({}, options, {
asyncKey: 'page',
request: configuredFetchPageRequest,
success: configuredFetchPageSuccess,
failure: configuredFetchPageFailure
}));
};
exports.fetchPageThunk = fetchPageThunk;