@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,CA6N9B;CACF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,CAiBxF"}
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, 23, , 24]);
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*/, 12];
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
- if (((_j = this.config.settings) === null || _j === void 0 ? void 0 : _j.infinite.backfill) && !previousResults.length) {
195
- pageSize = ((_k = params.pagination) === null || _k === void 0 ? void 0 : _k.pageSize) || this.store.pagination.pageSize || this.store.pagination.defaultPageSize;
196
- pagesNeeded1 = ((_l = params.pagination) === null || _l === void 0 ? void 0 : _l.page) && ((_m = params.pagination) === null || _m === void 0 ? void 0 : _m.page) > ((_o = this.config.settings) === null || _o === void 0 ? void 0 : _o.infinite.backfill)
197
- ? (_p = this.config.settings) === null || _p === void 0 ? void 0 : _p.infinite.backfill
198
- : (_q = params.pagination) === null || _q === void 0 ? void 0 : _q.page;
199
- totalResultsNeeded = pageSize * (pagesNeeded1 || 1);
200
- apiLimit = 500;
201
- // our search api is limited to a certain amount per request.
202
- //so we will need to make more than one request if totalresultsneeded is greater.
203
- if (totalResultsNeeded < apiLimit) {
204
- backfillParams = (0, deepmerge_1.default)(__assign({}, params), { pagination: { pageSize: totalResultsNeeded, page: 1 } });
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
- if (!(backfills && backfills.length)) return [3 /*break*/, 9];
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 8:
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 = ((_r = params.pagination) === null || _r === void 0 ? void 0 : _r.pageSize) || this.store.pagination.pageSize || this.store.pagination.defaultPageSize;
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*/, 11];
248
- case 9: return [4 /*yield*/, this.client.search(params)];
249
- case 10:
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 = 11;
264
- case 11: return [3 /*break*/, 14];
265
- case 12: return [4 /*yield*/, this.client.search(params)];
266
- case 13:
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 = 14;
279
- case 14:
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 = 15;
284
- case 15:
285
- _u.trys.push([15, 17, , 18]);
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 16:
300
+ case 19:
292
301
  _u.sent();
293
- return [3 /*break*/, 18];
294
- case 17:
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*/, 18];
306
- case 18:
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 = 19;
316
- case 19:
317
- _u.trys.push([19, 21, , 22]);
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 20:
333
+ case 23:
324
334
  _u.sent();
325
- return [3 /*break*/, 22];
326
- case 21:
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*/, 22];
338
- case 22:
347
+ return [3 /*break*/, 25];
348
+ case 25:
339
349
  afterStoreProfile.stop();
340
350
  this.log.profile(afterStoreProfile);
341
- return [3 /*break*/, 24];
342
- case 23:
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*/, 24];
370
- case 24: return [2 /*return*/];
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,CA6N9B;CACF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,CAiBxF"}
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
- const pageSize = params.pagination?.pageSize || this.store.pagination.pageSize || this.store.pagination.defaultPageSize;
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 = params.pagination?.pageSize || this.store.pagination.pageSize || this.store.pagination.defaultPageSize;
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.38.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.38.0",
23
+ "@searchspring/snap-toolbox": "^0.39.0",
24
24
  "deepmerge": "4.2.2"
25
25
  },
26
26
  "devDependencies": {
27
- "@searchspring/snap-client": "^0.38.0",
28
- "@searchspring/snap-event-manager": "^0.38.0",
29
- "@searchspring/snap-logger": "^0.38.0",
30
- "@searchspring/snap-profiler": "^0.38.0",
31
- "@searchspring/snap-store-mobx": "^0.38.0",
32
- "@searchspring/snap-tracker": "^0.38.0",
33
- "@searchspring/snap-url-manager": "^0.38.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": "88f7d1f065081f9691f26563666320e198c45ca9"
39
+ "gitHead": "008ac73f9ffd82bbcf9036ae8cc9cad33dc7fb5a"
40
40
  }