UNPKG

7.6 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports.fetchPageThunk = exports.graphqlThunk = exports.configureFetchPageThunk = exports.configureGraphqlThunk = void 0;
9
10var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
11
12var _objectSpread2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/objectSpread"));
13
14var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
15
16var _graphqlCall = _interopRequireDefault(require("@sharyn/shared/graphql-call"));
17
18var _spread = _interopRequireDefault(require("@sharyn/util/spread"));
19
20// flow-disable-next-line
21// flow-disable-next-line
22var configuredUrlBase;
23var configuredUrlPath;
24var configuredGraphqlRequest;
25var configuredGraphqlSuccess;
26var configuredGraphqlFailure;
27var configuredOptionsFn;
28var configuredFetchPageRequest;
29var configuredFetchPageSuccess;
30var configuredFetchPageFailure;
31var configuredOnDataErrors;
32var configuredOnCallError;
33
34var configureGraphqlThunk = function configureGraphqlThunk(_ref) {
35 var request = _ref.request,
36 success = _ref.success,
37 failure = _ref.failure,
38 urlBase = _ref.urlBase,
39 urlPath = _ref.urlPath,
40 _ref$options = _ref.options,
41 options = _ref$options === void 0 ? function () {
42 return {};
43 } : _ref$options,
44 onDataErrors = _ref.onDataErrors,
45 onCallError = _ref.onCallError;
46 configuredGraphqlRequest = request;
47 configuredGraphqlSuccess = success;
48 configuredGraphqlFailure = failure;
49 configuredUrlBase = urlBase;
50 configuredUrlPath = urlPath;
51 configuredOptionsFn = options;
52 configuredOnDataErrors = onDataErrors;
53 configuredOnCallError = onCallError;
54};
55
56exports.configureGraphqlThunk = configureGraphqlThunk;
57
58var configureFetchPageThunk = function configureFetchPageThunk(_ref2) {
59 var request = _ref2.request,
60 success = _ref2.success,
61 failure = _ref2.failure;
62 configuredFetchPageRequest = request;
63 configuredFetchPageSuccess = success;
64 configuredFetchPageFailure = failure;
65};
66
67exports.configureFetchPageThunk = configureFetchPageThunk;
68
69var graphqlThunk = function graphqlThunk(_ref3) {
70 var _ref3$urlBase = _ref3.urlBase,
71 urlBase = _ref3$urlBase === void 0 ? configuredUrlBase : _ref3$urlBase,
72 _ref3$urlPath = _ref3.urlPath,
73 urlPath = _ref3$urlPath === void 0 ? configuredUrlPath : _ref3$urlPath,
74 authorizationBearer = _ref3.authorizationBearer,
75 urlParams = _ref3.urlParams,
76 mapUrlParams = _ref3.mapUrlParams,
77 fields = _ref3.fields,
78 mapFields = _ref3.mapFields,
79 query = _ref3.query,
80 mapResp = _ref3.mapResp,
81 successRedirect = _ref3.successRedirect,
82 onSuccess = _ref3.onSuccess,
83 onInvalidFields = _ref3.onInvalidFields,
84 _ref3$onDataErrors = _ref3.onDataErrors,
85 onDataErrors = _ref3$onDataErrors === void 0 ? configuredOnDataErrors : _ref3$onDataErrors,
86 _ref3$onCallError = _ref3.onCallError,
87 onCallError = _ref3$onCallError === void 0 ? configuredOnCallError : _ref3$onCallError,
88 routerHistory = _ref3.routerHistory,
89 asyncKey = _ref3.asyncKey,
90 _ref3$request = _ref3.request,
91 request = _ref3$request === void 0 ? configuredGraphqlRequest : _ref3$request,
92 _ref3$success = _ref3.success,
93 success = _ref3$success === void 0 ? configuredGraphqlSuccess : _ref3$success,
94 _ref3$failure = _ref3.failure,
95 failure = _ref3$failure === void 0 ? configuredGraphqlFailure : _ref3$failure,
96 _ref3$options = _ref3.options,
97 optionsFn = _ref3$options === void 0 ? configuredOptionsFn : _ref3$options,
98 _ref3$throwErr = _ref3.throwErr,
99 throwErr = _ref3$throwErr === void 0 ? true : _ref3$throwErr;
100 return (
101 /*#__PURE__*/
102 function () {
103 var _ref4 = (0, _asyncToGenerator2.default)(
104 /*#__PURE__*/
105 _regenerator.default.mark(function _callee(dispatch) {
106 var data;
107 return _regenerator.default.wrap(function _callee$(_context) {
108 while (1) {
109 switch (_context.prev = _context.next) {
110 case 0:
111 if (request && success && failure) {
112 _context.next = 2;
113 break;
114 }
115
116 throw Error('You need to configure a request, success, and failure action creator before using graphqlThunk');
117
118 case 2:
119 dispatch(request(asyncKey));
120 _context.prev = 3;
121 _context.next = 6;
122 return (0, _graphqlCall.default)((0, _objectSpread2.default)({
123 urlBase: urlBase,
124 urlPath: urlPath,
125 authorizationBearer: authorizationBearer,
126 urlParams: urlParams,
127 mapUrlParams: mapUrlParams,
128 fields: fields,
129 mapFields: mapFields,
130 query: query,
131 mapResp: mapResp
132 }, optionsFn()));
133
134 case 6:
135 data = _context.sent;
136 dispatch(success((0, _objectSpread2.default)({
137 data: data
138 }, (0, _spread.default)({
139 asyncKey: asyncKey
140 }))));
141
142 if (data.errors) {
143 onDataErrors && onDataErrors(data);
144 }
145
146 if (data.invalidFields) {
147 onInvalidFields && onInvalidFields(data);
148 }
149
150 if (!(!data.errors && !data.invalidFields)) {
151 _context.next = 16;
152 break;
153 }
154
155 if (!successRedirect) {
156 _context.next = 15;
157 break;
158 }
159
160 if (routerHistory) {
161 _context.next = 14;
162 break;
163 }
164
165 throw Error('In order to use successRedirect, you need to provide a routerHistory to graphqlThunk');
166
167 case 14:
168 routerHistory.push(successRedirect instanceof Function ? successRedirect(data, fields) : successRedirect);
169
170 case 15:
171 onSuccess && onSuccess(data);
172
173 case 16:
174 return _context.abrupt("return", data);
175
176 case 19:
177 _context.prev = 19;
178 _context.t0 = _context["catch"](3);
179 dispatch(failure((0, _objectSpread2.default)({
180 error: _context.t0
181 }, (0, _spread.default)({
182 asyncKey: asyncKey
183 }))));
184 onCallError && onCallError(_context.t0);
185
186 if (!throwErr) {
187 _context.next = 25;
188 break;
189 }
190
191 throw _context.t0;
192
193 case 25:
194 return _context.abrupt("return", _context.t0);
195
196 case 26:
197 case "end":
198 return _context.stop();
199 }
200 }
201 }, _callee, this, [[3, 19]]);
202 }));
203
204 return function (_x) {
205 return _ref4.apply(this, arguments);
206 };
207 }()
208 );
209};
210
211exports.graphqlThunk = graphqlThunk;
212
213var fetchPageThunk = function fetchPageThunk(options) {
214 return graphqlThunk((0, _objectSpread2.default)({}, options, {
215 asyncKey: 'page',
216 request: configuredFetchPageRequest,
217 success: configuredFetchPageSuccess,
218 failure: configuredFetchPageFailure
219 }));
220};
221
222exports.fetchPageThunk = fetchPageThunk;
\No newline at end of file