UNPKG

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