@searchspring/snap-controller 0.38.0 → 0.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AAErF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE7I,OAAO,KAAK,EAAE,kBAAkB,EAA2E,MAAM,2BAA2B,CAAC;AAqB7I,aAAK,kBAAkB,GAAG;IACzB,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KAC/D,CAAC;CACF,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,eAAe,CAAwC;gBAG9D,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA2F3B,KAAK,EAAE,kBAAkB,CA+BvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAgD/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AAErF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE7I,OAAO,KAAK,EAAE,kBAAkB,EAA2E,MAAM,2BAA2B,CAAC;AAqB7I,aAAK,kBAAkB,GAAG;IACzB,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KAC/D,CAAC;CACF,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,eAAe,CAAwC;gBAG9D,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA2F3B,KAAK,EAAE,kBAAkB,CA+BvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAgD/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAqO9B;CACF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,CAiBxF"}
|
|
@@ -135,7 +135,7 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
135
135
|
},
|
|
136
136
|
};
|
|
137
137
|
_this.search = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
138
|
-
var params, err_1, stringyParams, prevStringyParams, searchProfile, meta_1, response_1, preventBackfill, dontBackfill, previousResults, backfills, pageSize, pagesNeeded1, totalResultsNeeded, apiLimit, backfillParams, pagesNeeded, lastPageCount, i, backfillParams, backfillResults_1, backfillResponses, afterSearchProfile, err_2, afterStoreProfile, err_3, err_4;
|
|
138
|
+
var params, err_1, stringyParams, prevStringyParams, searchProfile, meta_1, response_1, preventBackfill, dontBackfill, previousResults, backfills, pageSize, meta_2, pagesNeeded1, totalResultsNeeded, apiLimit, backfillParams, pagesNeeded, lastPageCount, i, backfillParams, backfillResults_1, backfillResponses, afterSearchProfile, err_2, afterStoreProfile, err_3, err_4;
|
|
139
139
|
var _a, _b;
|
|
140
140
|
var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
|
141
141
|
return __generator(this, function (_u) {
|
|
@@ -150,7 +150,7 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
150
150
|
params = this.params;
|
|
151
151
|
_u.label = 3;
|
|
152
152
|
case 3:
|
|
153
|
-
_u.trys.push([3,
|
|
153
|
+
_u.trys.push([3, 26, , 27]);
|
|
154
154
|
_u.label = 4;
|
|
155
155
|
case 4:
|
|
156
156
|
_u.trys.push([4, 6, , 7]);
|
|
@@ -180,7 +180,7 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
180
180
|
return [2 /*return*/];
|
|
181
181
|
}
|
|
182
182
|
searchProfile = this.profiler.create({ type: 'event', name: 'search', context: params }).start();
|
|
183
|
-
if (!(((_c = this.config.settings) === null || _c === void 0 ? void 0 : _c.infinite) && ((_d = params.pagination) === null || _d === void 0 ? void 0 : _d.page) > 1)) return [3 /*break*/,
|
|
183
|
+
if (!(((_c = this.config.settings) === null || _c === void 0 ? void 0 : _c.infinite) && ((_d = params.pagination) === null || _d === void 0 ? void 0 : _d.page) > 1)) return [3 /*break*/, 15];
|
|
184
184
|
preventBackfill = ((_e = this.config.settings.infinite) === null || _e === void 0 ? void 0 : _e.backfill) && !this.store.results.length && ((_f = params.pagination) === null || _f === void 0 ? void 0 : _f.page) > this.config.settings.infinite.backfill;
|
|
185
185
|
dontBackfill = !((_g = this.config.settings.infinite) === null || _g === void 0 ? void 0 : _g.backfill) && !this.store.results.length && ((_h = params.pagination) === null || _h === void 0 ? void 0 : _h.page) > 1;
|
|
186
186
|
//if the page is higher than the backfill setting redirect back to page 1
|
|
@@ -191,32 +191,40 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
191
191
|
}
|
|
192
192
|
previousResults = this.previousResults;
|
|
193
193
|
backfills = [];
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
194
|
+
pageSize = ((_j = params.pagination) === null || _j === void 0 ? void 0 : _j.pageSize) || this.store.pagination.pageSize || this.store.pagination.defaultPageSize;
|
|
195
|
+
if (!(((_k = this.config.settings) === null || _k === void 0 ? void 0 : _k.infinite.backfill) && !previousResults.length)) return [3 /*break*/, 10];
|
|
196
|
+
if (!!pageSize) return [3 /*break*/, 9];
|
|
197
|
+
return [4 /*yield*/, this.client.meta()];
|
|
198
|
+
case 8:
|
|
199
|
+
meta_2 = _u.sent();
|
|
200
|
+
pageSize = (_l = meta_2.pagination) === null || _l === void 0 ? void 0 : _l.defaultPageSize;
|
|
201
|
+
_u.label = 9;
|
|
202
|
+
case 9:
|
|
203
|
+
pagesNeeded1 = ((_m = params.pagination) === null || _m === void 0 ? void 0 : _m.page) && ((_o = params.pagination) === null || _o === void 0 ? void 0 : _o.page) > ((_p = this.config.settings) === null || _p === void 0 ? void 0 : _p.infinite.backfill)
|
|
204
|
+
? (_q = this.config.settings) === null || _q === void 0 ? void 0 : _q.infinite.backfill
|
|
205
|
+
: (_r = params.pagination) === null || _r === void 0 ? void 0 : _r.page;
|
|
206
|
+
totalResultsNeeded = pageSize * (pagesNeeded1 || 1);
|
|
207
|
+
apiLimit = 500;
|
|
208
|
+
// our search api is limited to a certain amount per request.
|
|
209
|
+
//so we will need to make more than one request if totalresultsneeded is greater.
|
|
210
|
+
if (totalResultsNeeded < apiLimit) {
|
|
211
|
+
backfillParams = (0, deepmerge_1.default)(__assign({}, params), { pagination: { pageSize: totalResultsNeeded, page: 1 } });
|
|
212
|
+
backfills.push(this.client.search(backfillParams));
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
pagesNeeded = Math.ceil(totalResultsNeeded / apiLimit);
|
|
216
|
+
lastPageCount = apiLimit - (pagesNeeded * apiLimit - totalResultsNeeded);
|
|
217
|
+
for (i = 1; i <= pagesNeeded; i++) {
|
|
218
|
+
backfillParams = (0, deepmerge_1.default)(__assign({}, params), { pagination: { pageSize: i < pagesNeeded ? apiLimit : lastPageCount, page: i } });
|
|
205
219
|
backfills.push(this.client.search(backfillParams));
|
|
206
220
|
}
|
|
207
|
-
else {
|
|
208
|
-
pagesNeeded = Math.ceil(totalResultsNeeded / apiLimit);
|
|
209
|
-
lastPageCount = apiLimit - (pagesNeeded * apiLimit - totalResultsNeeded);
|
|
210
|
-
for (i = 1; i <= pagesNeeded; i++) {
|
|
211
|
-
backfillParams = (0, deepmerge_1.default)(__assign({}, params), { pagination: { pageSize: i < pagesNeeded ? apiLimit : lastPageCount, page: i } });
|
|
212
|
-
backfills.push(this.client.search(backfillParams));
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
221
|
}
|
|
216
|
-
|
|
222
|
+
_u.label = 10;
|
|
223
|
+
case 10:
|
|
224
|
+
if (!(backfills && backfills.length)) return [3 /*break*/, 12];
|
|
217
225
|
backfillResults_1 = [];
|
|
218
226
|
return [4 /*yield*/, Promise.all(backfills)];
|
|
219
|
-
case
|
|
227
|
+
case 11:
|
|
220
228
|
backfillResponses = _u.sent();
|
|
221
229
|
backfillResponses.map(function (_a) {
|
|
222
230
|
var Bmeta = _a[0], Bresponse = _a[1];
|
|
@@ -240,13 +248,14 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
240
248
|
response_1.meta = meta_1;
|
|
241
249
|
}
|
|
242
250
|
//we need to overwrite the pagination params so the ui doesnt get confused.
|
|
243
|
-
response_1.pagination.pageSize =
|
|
251
|
+
response_1.pagination.pageSize = pageSize;
|
|
252
|
+
response_1.pagination.totalPages = Math.ceil(response_1.pagination.totalResults / response_1.pagination.pageSize);
|
|
244
253
|
response_1.pagination.page = (_s = params.pagination) === null || _s === void 0 ? void 0 : _s.page;
|
|
245
254
|
//set the response results after all backfill promises are resolved.
|
|
246
255
|
response_1.results = backfillResults_1;
|
|
247
|
-
return [3 /*break*/,
|
|
248
|
-
case
|
|
249
|
-
case
|
|
256
|
+
return [3 /*break*/, 14];
|
|
257
|
+
case 12: return [4 /*yield*/, this.client.search(params)];
|
|
258
|
+
case 13:
|
|
250
259
|
// infinite with no backfills.
|
|
251
260
|
_a = _u.sent(), meta_1 = _a[0], response_1 = _a[1];
|
|
252
261
|
// @ts-ignore
|
|
@@ -260,10 +269,10 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
260
269
|
}
|
|
261
270
|
//append new results to previous results
|
|
262
271
|
response_1.results = __spreadArray(__spreadArray([], previousResults, true), (response_1.results || []), true);
|
|
263
|
-
_u.label =
|
|
264
|
-
case
|
|
265
|
-
case
|
|
266
|
-
case
|
|
272
|
+
_u.label = 14;
|
|
273
|
+
case 14: return [3 /*break*/, 17];
|
|
274
|
+
case 15: return [4 /*yield*/, this.client.search(params)];
|
|
275
|
+
case 16:
|
|
267
276
|
//standard.
|
|
268
277
|
_b = _u.sent(), meta_1 = _b[0], response_1 = _b[1];
|
|
269
278
|
// @ts-ignore
|
|
@@ -275,23 +284,23 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
275
284
|
// @ts-ignore
|
|
276
285
|
response_1.meta = meta_1;
|
|
277
286
|
}
|
|
278
|
-
_u.label =
|
|
279
|
-
case
|
|
287
|
+
_u.label = 17;
|
|
288
|
+
case 17:
|
|
280
289
|
searchProfile.stop();
|
|
281
290
|
this.log.profile(searchProfile);
|
|
282
291
|
afterSearchProfile = this.profiler.create({ type: 'event', name: 'afterSearch', context: params }).start();
|
|
283
|
-
_u.label =
|
|
284
|
-
case
|
|
285
|
-
_u.trys.push([
|
|
292
|
+
_u.label = 18;
|
|
293
|
+
case 18:
|
|
294
|
+
_u.trys.push([18, 20, , 21]);
|
|
286
295
|
return [4 /*yield*/, this.eventManager.fire('afterSearch', {
|
|
287
296
|
controller: this,
|
|
288
297
|
request: params,
|
|
289
298
|
response: response_1,
|
|
290
299
|
})];
|
|
291
|
-
case
|
|
300
|
+
case 19:
|
|
292
301
|
_u.sent();
|
|
293
|
-
return [3 /*break*/,
|
|
294
|
-
case
|
|
302
|
+
return [3 /*break*/, 21];
|
|
303
|
+
case 20:
|
|
295
304
|
err_2 = _u.sent();
|
|
296
305
|
if ((err_2 === null || err_2 === void 0 ? void 0 : err_2.message) == 'cancelled') {
|
|
297
306
|
this.log.warn("'afterSearch' middleware cancelled");
|
|
@@ -302,28 +311,29 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
302
311
|
this.log.error("error in 'afterSearch' middleware");
|
|
303
312
|
throw err_2;
|
|
304
313
|
}
|
|
305
|
-
return [3 /*break*/,
|
|
306
|
-
case
|
|
314
|
+
return [3 /*break*/, 21];
|
|
315
|
+
case 21:
|
|
307
316
|
afterSearchProfile.stop();
|
|
308
317
|
this.log.profile(afterSearchProfile);
|
|
318
|
+
// store previous results for infinite usage
|
|
309
319
|
if ((_t = this.config.settings) === null || _t === void 0 ? void 0 : _t.infinite) {
|
|
310
320
|
this.previousResults = JSON.parse(JSON.stringify(response_1.results));
|
|
311
321
|
}
|
|
312
322
|
// update the store
|
|
313
323
|
this.store.update(response_1);
|
|
314
324
|
afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
|
|
315
|
-
_u.label =
|
|
316
|
-
case
|
|
317
|
-
_u.trys.push([
|
|
325
|
+
_u.label = 22;
|
|
326
|
+
case 22:
|
|
327
|
+
_u.trys.push([22, 24, , 25]);
|
|
318
328
|
return [4 /*yield*/, this.eventManager.fire('afterStore', {
|
|
319
329
|
controller: this,
|
|
320
330
|
request: params,
|
|
321
331
|
response: response_1,
|
|
322
332
|
})];
|
|
323
|
-
case
|
|
333
|
+
case 23:
|
|
324
334
|
_u.sent();
|
|
325
|
-
return [3 /*break*/,
|
|
326
|
-
case
|
|
335
|
+
return [3 /*break*/, 25];
|
|
336
|
+
case 24:
|
|
327
337
|
err_3 = _u.sent();
|
|
328
338
|
if ((err_3 === null || err_3 === void 0 ? void 0 : err_3.message) == 'cancelled') {
|
|
329
339
|
this.log.warn("'afterStore' middleware cancelled");
|
|
@@ -334,12 +344,12 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
334
344
|
this.log.error("error in 'afterStore' middleware");
|
|
335
345
|
throw err_3;
|
|
336
346
|
}
|
|
337
|
-
return [3 /*break*/,
|
|
338
|
-
case
|
|
347
|
+
return [3 /*break*/, 25];
|
|
348
|
+
case 25:
|
|
339
349
|
afterStoreProfile.stop();
|
|
340
350
|
this.log.profile(afterStoreProfile);
|
|
341
|
-
return [3 /*break*/,
|
|
342
|
-
case
|
|
351
|
+
return [3 /*break*/, 27];
|
|
352
|
+
case 26:
|
|
343
353
|
err_4 = _u.sent();
|
|
344
354
|
if (err_4) {
|
|
345
355
|
switch (err_4) {
|
|
@@ -366,8 +376,8 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
366
376
|
this.store.loading = false;
|
|
367
377
|
this.handleError(err_4);
|
|
368
378
|
}
|
|
369
|
-
return [3 /*break*/,
|
|
370
|
-
case
|
|
379
|
+
return [3 /*break*/, 27];
|
|
380
|
+
case 27: return [2 /*return*/];
|
|
371
381
|
}
|
|
372
382
|
});
|
|
373
383
|
}); };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AAErF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE7I,OAAO,KAAK,EAAE,kBAAkB,EAA2E,MAAM,2BAA2B,CAAC;AAqB7I,aAAK,kBAAkB,GAAG;IACzB,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KAC/D,CAAC;CACF,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,eAAe,CAAwC;gBAG9D,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA2F3B,KAAK,EAAE,kBAAkB,CA+BvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAgD/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AAErF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE7I,OAAO,KAAK,EAAE,kBAAkB,EAA2E,MAAM,2BAA2B,CAAC;AAqB7I,aAAK,kBAAkB,GAAG;IACzB,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KAC/D,CAAC;CACF,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,eAAe,CAAwC;gBAG9D,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA2F3B,KAAK,EAAE,kBAAkB,CA+BvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAgD/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAqO9B;CACF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,CAiBxF"}
|
|
@@ -97,9 +97,14 @@ export class SearchController extends AbstractController {
|
|
|
97
97
|
// if no results fetch results...
|
|
98
98
|
let previousResults = this.previousResults;
|
|
99
99
|
const backfills = [];
|
|
100
|
+
let pageSize = params.pagination?.pageSize || this.store.pagination.pageSize || this.store.pagination.defaultPageSize;
|
|
100
101
|
if (this.config.settings?.infinite.backfill && !previousResults.length) {
|
|
101
102
|
// figure out how many pages of results to backfill and wait on all responses
|
|
102
|
-
|
|
103
|
+
if (!pageSize) {
|
|
104
|
+
//unfortunatly we need to fetch meta to know the default pagesize before we can continue.
|
|
105
|
+
const meta = await this.client.meta();
|
|
106
|
+
pageSize = meta.pagination?.defaultPageSize;
|
|
107
|
+
}
|
|
103
108
|
let pagesNeeded1 = params.pagination?.page && params.pagination?.page > this.config.settings?.infinite.backfill
|
|
104
109
|
? this.config.settings?.infinite.backfill
|
|
105
110
|
: params.pagination?.page;
|
|
@@ -148,7 +153,8 @@ export class SearchController extends AbstractController {
|
|
|
148
153
|
response.meta = meta;
|
|
149
154
|
}
|
|
150
155
|
//we need to overwrite the pagination params so the ui doesnt get confused.
|
|
151
|
-
response.pagination.pageSize =
|
|
156
|
+
response.pagination.pageSize = pageSize;
|
|
157
|
+
response.pagination.totalPages = Math.ceil(response.pagination.totalResults / response.pagination.pageSize);
|
|
152
158
|
response.pagination.page = params.pagination?.page;
|
|
153
159
|
//set the response results after all backfill promises are resolved.
|
|
154
160
|
response.results = backfillResults;
|
|
@@ -205,6 +211,7 @@ export class SearchController extends AbstractController {
|
|
|
205
211
|
}
|
|
206
212
|
afterSearchProfile.stop();
|
|
207
213
|
this.log.profile(afterSearchProfile);
|
|
214
|
+
// store previous results for infinite usage
|
|
208
215
|
if (this.config.settings?.infinite) {
|
|
209
216
|
this.previousResults = JSON.parse(JSON.stringify(response.results));
|
|
210
217
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@searchspring/snap-controller",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.39.0",
|
|
4
4
|
"description": "Snap Controllers",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -20,21 +20,21 @@
|
|
|
20
20
|
"test:watch": "jest --watch"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@searchspring/snap-toolbox": "^0.
|
|
23
|
+
"@searchspring/snap-toolbox": "^0.39.0",
|
|
24
24
|
"deepmerge": "4.2.2"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@searchspring/snap-client": "^0.
|
|
28
|
-
"@searchspring/snap-event-manager": "^0.
|
|
29
|
-
"@searchspring/snap-logger": "^0.
|
|
30
|
-
"@searchspring/snap-profiler": "^0.
|
|
31
|
-
"@searchspring/snap-store-mobx": "^0.
|
|
32
|
-
"@searchspring/snap-tracker": "^0.
|
|
33
|
-
"@searchspring/snap-url-manager": "^0.
|
|
27
|
+
"@searchspring/snap-client": "^0.39.0",
|
|
28
|
+
"@searchspring/snap-event-manager": "^0.39.0",
|
|
29
|
+
"@searchspring/snap-logger": "^0.39.0",
|
|
30
|
+
"@searchspring/snap-profiler": "^0.39.0",
|
|
31
|
+
"@searchspring/snap-store-mobx": "^0.39.0",
|
|
32
|
+
"@searchspring/snap-tracker": "^0.39.0",
|
|
33
|
+
"@searchspring/snap-url-manager": "^0.39.0"
|
|
34
34
|
},
|
|
35
35
|
"sideEffects": false,
|
|
36
36
|
"files": [
|
|
37
37
|
"dist/**/*"
|
|
38
38
|
],
|
|
39
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "008ac73f9ffd82bbcf9036ae8cc9cad33dc7fb5a"
|
|
40
40
|
}
|