stream-chat 8.38.0 → 8.40.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.
Files changed (42) hide show
  1. package/README.md +15 -2
  2. package/dist/browser.es.js +1667 -372
  3. package/dist/browser.es.js.map +1 -1
  4. package/dist/browser.full-bundle.min.js +1 -1
  5. package/dist/browser.full-bundle.min.js.map +1 -1
  6. package/dist/browser.js +1668 -371
  7. package/dist/browser.js.map +1 -1
  8. package/dist/index.es.js +1667 -372
  9. package/dist/index.es.js.map +1 -1
  10. package/dist/index.js +1668 -371
  11. package/dist/index.js.map +1 -1
  12. package/dist/types/channel.d.ts +6 -8
  13. package/dist/types/channel.d.ts.map +1 -1
  14. package/dist/types/channel_state.d.ts +14 -22
  15. package/dist/types/channel_state.d.ts.map +1 -1
  16. package/dist/types/client.d.ts +3 -1
  17. package/dist/types/client.d.ts.map +1 -1
  18. package/dist/types/constants.d.ts +7 -0
  19. package/dist/types/constants.d.ts.map +1 -0
  20. package/dist/types/index.d.ts +2 -0
  21. package/dist/types/index.d.ts.map +1 -1
  22. package/dist/types/store.d.ts +14 -0
  23. package/dist/types/store.d.ts.map +1 -0
  24. package/dist/types/thread.d.ts +93 -29
  25. package/dist/types/thread.d.ts.map +1 -1
  26. package/dist/types/thread_manager.d.ts +51 -0
  27. package/dist/types/thread_manager.d.ts.map +1 -0
  28. package/dist/types/types.d.ts +35 -18
  29. package/dist/types/types.d.ts.map +1 -1
  30. package/dist/types/utils.d.ts +48 -7
  31. package/dist/types/utils.d.ts.map +1 -1
  32. package/package.json +7 -6
  33. package/src/channel.ts +28 -13
  34. package/src/channel_state.ts +30 -27
  35. package/src/client.ts +182 -104
  36. package/src/constants.ts +4 -0
  37. package/src/index.ts +2 -0
  38. package/src/store.ts +57 -0
  39. package/src/thread.ts +470 -107
  40. package/src/thread_manager.ts +297 -0
  41. package/src/types.ts +34 -19
  42. package/src/utils.ts +362 -43
package/dist/browser.js CHANGED
@@ -118,9 +118,9 @@ var decodeBase64 = function decodeBase64(s) {
118
118
 
119
119
  var https = null;
120
120
 
121
- function ownKeys$9(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
121
+ function ownKeys$b(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
122
122
 
123
- function _objectSpread$9(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$9(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$9(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
123
+ function _objectSpread$b(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$b(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$b(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
124
124
 
125
125
  function _createForOfIteratorHelper$4(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$4(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function (_e) { function e(_x) { return _e.apply(this, arguments); } e.toString = function () { return _e.toString(); }; return e; }(function (e) { throw e; }), f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function (_e2) { function e(_x2) { return _e2.apply(this, arguments); } e.toString = function () { return _e2.toString(); }; return e; }(function (e) { didErr = true; err = e; }), f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
126
126
 
@@ -374,89 +374,120 @@ var axiosParamsSerializer = function axiosParamsSerializer(params) {
374
374
  return newParams.join('&');
375
375
  };
376
376
  /**
377
- * formatMessage - Takes the message object. Parses the dates, sets __html
378
- * and sets the status to received if missing. Returns a message object
379
- *
380
- * @param {MessageResponse<StreamChatGenerics>} message a message object
377
+ * Takes the message object, parses the dates, sets `__html`
378
+ * and sets the status to `received` if missing; returns a new message object.
381
379
  *
380
+ * @param {MessageResponse<StreamChatGenerics>} message `MessageResponse` object
382
381
  */
383
382
 
384
383
  function formatMessage(message) {
385
- return _objectSpread$9(_objectSpread$9({}, message), {}, {
384
+ return _objectSpread$b(_objectSpread$b({}, message), {}, {
386
385
  /**
387
386
  * @deprecated please use `html`
388
387
  */
389
388
  __html: message.html,
390
- // parse the date..
389
+ // parse the dates
391
390
  pinned_at: message.pinned_at ? new Date(message.pinned_at) : null,
392
391
  created_at: message.created_at ? new Date(message.created_at) : new Date(),
393
392
  updated_at: message.updated_at ? new Date(message.updated_at) : new Date(),
393
+ deleted_at: message.deleted_at ? new Date(message.deleted_at) : null,
394
394
  status: message.status || 'received',
395
395
  reaction_groups: maybeGetReactionGroupsFallback(message.reaction_groups, message.reaction_counts, message.reaction_scores)
396
396
  });
397
397
  }
398
- function addToMessageList(messages, message) {
398
+ var findIndexInSortedArray = function findIndexInSortedArray(_ref) {
399
+ var needle = _ref.needle,
400
+ sortedArray = _ref.sortedArray,
401
+ _ref$selectValueToCom = _ref.selectValueToCompare,
402
+ selectValueToCompare = _ref$selectValueToCom === void 0 ? function (e) {
403
+ return e;
404
+ } : _ref$selectValueToCom,
405
+ _ref$sortDirection = _ref.sortDirection,
406
+ sortDirection = _ref$sortDirection === void 0 ? 'ascending' : _ref$sortDirection;
407
+ if (!sortedArray.length) return 0;
408
+ var left = 0;
409
+ var right = sortedArray.length - 1;
410
+ var middle = 0;
411
+
412
+ var recalculateMiddle = function recalculateMiddle() {
413
+ middle = Math.round((left + right) / 2);
414
+ };
415
+
416
+ var actualNeedle = selectValueToCompare(needle);
417
+ recalculateMiddle();
418
+
419
+ while (left <= right) {
420
+ // if (actualNeedle === selectValueToCompare(sortedArray[middle])) return middle;
421
+ if (sortDirection === 'ascending' && actualNeedle < selectValueToCompare(sortedArray[middle]) || sortDirection === 'descending' && actualNeedle > selectValueToCompare(sortedArray[middle])) {
422
+ right = middle - 1;
423
+ } else {
424
+ left = middle + 1;
425
+ }
426
+
427
+ recalculateMiddle();
428
+ }
429
+
430
+ return left;
431
+ };
432
+ function addToMessageList(messages, newMessage) {
399
433
  var timestampChanged = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
400
434
  var sortBy = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'created_at';
401
435
  var addIfDoesNotExist = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
402
436
  var addMessageToList = addIfDoesNotExist || timestampChanged;
403
- var messageArr = messages; // if created_at has changed, message should be filtered and re-inserted in correct order
437
+
438
+ var newMessages = _toConsumableArray__default['default'](messages); // if created_at has changed, message should be filtered and re-inserted in correct order
404
439
  // slow op but usually this only happens for a message inserted to state before actual response with correct timestamp
405
440
 
441
+
406
442
  if (timestampChanged) {
407
- messageArr = messageArr.filter(function (msg) {
408
- return !(msg.id && message.id === msg.id);
443
+ newMessages = newMessages.filter(function (message) {
444
+ return !(message.id && newMessage.id === message.id);
409
445
  });
410
- } // Get array length after filtering
446
+ } // for empty list just concat and return unless it's an update or deletion
411
447
 
412
448
 
413
- var messageArrayLength = messageArr.length; // for empty list just concat and return unless it's an update or deletion
449
+ if (!newMessages.length && addMessageToList) {
450
+ return newMessages.concat(newMessage);
451
+ } // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
414
452
 
415
- if (messageArrayLength === 0 && addMessageToList) {
416
- return messageArr.concat(message);
417
- } else if (messageArrayLength === 0) {
418
- return _toConsumableArray__default['default'](messageArr);
419
- }
420
453
 
421
- var messageTime = message[sortBy].getTime();
422
- var messageIsNewest = messageArr[messageArrayLength - 1][sortBy].getTime() < messageTime; // if message is newer than last item in the list concat and return unless it's an update or deletion
454
+ var messageTime = newMessage[sortBy].getTime(); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
455
+
456
+ var messageIsNewest = newMessages.at(-1)[sortBy].getTime() < messageTime; // if message is newer than last item in the list concat and return unless it's an update or deletion
423
457
 
424
458
  if (messageIsNewest && addMessageToList) {
425
- return messageArr.concat(message);
426
- } else if (messageIsNewest) {
427
- return _toConsumableArray__default['default'](messageArr);
459
+ return newMessages.concat(newMessage);
428
460
  } // find the closest index to push the new message
429
461
 
430
462
 
431
- var left = 0;
432
- var middle = 0;
433
- var right = messageArrayLength - 1;
434
-
435
- while (left <= right) {
436
- middle = Math.floor((right + left) / 2);
437
- if (messageArr[middle][sortBy].getTime() <= messageTime) left = middle + 1;else right = middle - 1;
438
- } // message already exists and not filtered due to timestampChanged, update and return
439
-
463
+ var insertionIndex = findIndexInSortedArray({
464
+ needle: newMessage,
465
+ sortedArray: messages,
466
+ sortDirection: 'ascending',
467
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
468
+ selectValueToCompare: function selectValueToCompare(m) {
469
+ return m[sortBy].getTime();
470
+ }
471
+ }); // message already exists and not filtered with timestampChanged, update and return
440
472
 
441
- if (!timestampChanged && message.id) {
442
- if (messageArr[left] && message.id === messageArr[left].id) {
443
- messageArr[left] = message;
444
- return _toConsumableArray__default['default'](messageArr);
473
+ if (!timestampChanged && newMessage.id) {
474
+ if (newMessages[insertionIndex] && newMessage.id === newMessages[insertionIndex].id) {
475
+ newMessages[insertionIndex] = newMessage;
476
+ return newMessages;
445
477
  }
446
478
 
447
- if (messageArr[left - 1] && message.id === messageArr[left - 1].id) {
448
- messageArr[left - 1] = message;
449
- return _toConsumableArray__default['default'](messageArr);
479
+ if (newMessages[insertionIndex - 1] && newMessage.id === newMessages[insertionIndex - 1].id) {
480
+ newMessages[insertionIndex - 1] = newMessage;
481
+ return newMessages;
450
482
  }
451
- } // Do not add updated or deleted messages to the list if they do not already exist
452
- // or have a timestamp change.
483
+ } // do not add updated or deleted messages to the list if they already exist or come with a timestamp change
453
484
 
454
485
 
455
486
  if (addMessageToList) {
456
- messageArr.splice(left, 0, message);
487
+ newMessages.splice(insertionIndex, 0, newMessage);
457
488
  }
458
489
 
459
- return _toConsumableArray__default['default'](messageArr);
490
+ return newMessages;
460
491
  }
461
492
 
462
493
  function maybeGetReactionGroupsFallback(groups, counts, scores) {
@@ -479,11 +510,259 @@ function maybeGetReactionGroupsFallback(groups, counts, scores) {
479
510
  }
480
511
 
481
512
  return null;
513
+ } // works exactly the same as lodash.throttle
514
+
515
+
516
+ var throttle = function throttle(fn) {
517
+ var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 200;
518
+
519
+ var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
520
+ _ref2$leading = _ref2.leading,
521
+ leading = _ref2$leading === void 0 ? true : _ref2$leading,
522
+ _ref2$trailing = _ref2.trailing,
523
+ trailing = _ref2$trailing === void 0 ? false : _ref2$trailing;
524
+
525
+ var runningTimeout = null;
526
+ var storedArgs = null;
527
+ return function () {
528
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
529
+ args[_key] = arguments[_key];
530
+ }
531
+
532
+ if (runningTimeout) {
533
+ if (trailing) storedArgs = args;
534
+ return;
535
+ }
536
+
537
+ if (leading) fn.apply(void 0, args);
538
+
539
+ var timeoutHandler = function timeoutHandler() {
540
+ if (storedArgs) {
541
+ fn.apply(void 0, _toConsumableArray__default['default'](storedArgs));
542
+ storedArgs = null;
543
+ runningTimeout = setTimeout(timeoutHandler, timeout);
544
+ return;
545
+ }
546
+
547
+ runningTimeout = null;
548
+ };
549
+
550
+ runningTimeout = setTimeout(timeoutHandler, timeout);
551
+ };
552
+ };
553
+ function binarySearchByDateEqualOrNearestGreater(array, targetDate) {
554
+ var left = 0;
555
+ var right = array.length - 1;
556
+
557
+ while (left <= right) {
558
+ var mid = Math.floor((left + right) / 2);
559
+ var midCreatedAt = array[mid].created_at;
560
+
561
+ if (!midCreatedAt) {
562
+ left += 1;
563
+ continue;
564
+ }
565
+
566
+ var midDate = new Date(midCreatedAt);
567
+
568
+ if (midDate.getTime() === targetDate.getTime()) {
569
+ return mid;
570
+ } else if (midDate.getTime() < targetDate.getTime()) {
571
+ left = mid + 1;
572
+ } else {
573
+ right = mid - 1;
574
+ }
575
+ }
576
+
577
+ return left;
482
578
  }
483
579
 
484
- function ownKeys$8(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
580
+ var messagePaginationCreatedAtAround = function messagePaginationCreatedAtAround(_ref3) {
581
+ var parentSet = _ref3.parentSet,
582
+ requestedPageSize = _ref3.requestedPageSize,
583
+ returnedPage = _ref3.returnedPage,
584
+ messagePaginationOptions = _ref3.messagePaginationOptions;
585
+
586
+ var newPagination = _objectSpread$b({}, parentSet.pagination);
587
+
588
+ if (!(messagePaginationOptions !== null && messagePaginationOptions !== void 0 && messagePaginationOptions.created_at_around)) return newPagination;
589
+ var hasPrev;
590
+ var hasNext;
591
+ var updateHasPrev;
592
+ var updateHasNext;
593
+ var createdAtAroundDate = new Date(messagePaginationOptions.created_at_around);
594
+ var _ref4 = [returnedPage[0], returnedPage.slice(-1)[0]],
595
+ firstPageMsg = _ref4[0],
596
+ lastPageMsg = _ref4[1]; // expect ASC order (from oldest to newest)
597
+
598
+ var wholePageHasNewerMessages = !!(firstPageMsg !== null && firstPageMsg !== void 0 && firstPageMsg.created_at) && new Date(firstPageMsg.created_at) > createdAtAroundDate;
599
+ var wholePageHasOlderMessages = !!(lastPageMsg !== null && lastPageMsg !== void 0 && lastPageMsg.created_at) && new Date(lastPageMsg.created_at) < createdAtAroundDate;
600
+ var requestedPageSizeNotMet = requestedPageSize > parentSet.messages.length && requestedPageSize > returnedPage.length;
601
+ var noMoreMessages = (requestedPageSize > parentSet.messages.length || parentSet.messages.length >= returnedPage.length) && requestedPageSize > returnedPage.length;
602
+
603
+ if (wholePageHasNewerMessages) {
604
+ hasPrev = false;
605
+ updateHasPrev = true;
606
+
607
+ if (requestedPageSizeNotMet) {
608
+ hasNext = false;
609
+ updateHasNext = true;
610
+ }
611
+ } else if (wholePageHasOlderMessages) {
612
+ hasNext = false;
613
+ updateHasNext = true;
614
+
615
+ if (requestedPageSizeNotMet) {
616
+ hasPrev = false;
617
+ updateHasPrev = true;
618
+ }
619
+ } else if (noMoreMessages) {
620
+ hasNext = hasPrev = false;
621
+ updateHasPrev = updateHasNext = true;
622
+ } else {
623
+ var _parentSet$messages$, _parentSet$messages$s;
485
624
 
486
- function _objectSpread$8(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$8(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$8(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
625
+ var firstPageMsgIsFirstInSet = (firstPageMsg === null || firstPageMsg === void 0 ? void 0 : firstPageMsg.id) && firstPageMsg.id === ((_parentSet$messages$ = parentSet.messages[0]) === null || _parentSet$messages$ === void 0 ? void 0 : _parentSet$messages$.id),
626
+ lastPageMsgIsLastInSet = (lastPageMsg === null || lastPageMsg === void 0 ? void 0 : lastPageMsg.id) && lastPageMsg.id === ((_parentSet$messages$s = parentSet.messages.slice(-1)[0]) === null || _parentSet$messages$s === void 0 ? void 0 : _parentSet$messages$s.id);
627
+ updateHasPrev = firstPageMsgIsFirstInSet;
628
+ updateHasNext = lastPageMsgIsLastInSet;
629
+ var midPointByCount = Math.floor(returnedPage.length / 2);
630
+ var midPointByCreationDate = binarySearchByDateEqualOrNearestGreater(returnedPage, createdAtAroundDate);
631
+
632
+ if (midPointByCreationDate !== -1) {
633
+ hasPrev = midPointByCount <= midPointByCreationDate;
634
+ hasNext = midPointByCount >= midPointByCreationDate;
635
+ }
636
+ }
637
+
638
+ if (updateHasPrev && typeof hasPrev !== 'undefined') newPagination.hasPrev = hasPrev;
639
+ if (updateHasNext && typeof hasNext !== 'undefined') newPagination.hasNext = hasNext;
640
+ return newPagination;
641
+ };
642
+
643
+ var messagePaginationIdAround = function messagePaginationIdAround(_ref5) {
644
+ var _parentSet$messages$2, _parentSet$messages$s2;
645
+
646
+ var parentSet = _ref5.parentSet,
647
+ requestedPageSize = _ref5.requestedPageSize,
648
+ returnedPage = _ref5.returnedPage,
649
+ messagePaginationOptions = _ref5.messagePaginationOptions;
650
+
651
+ var newPagination = _objectSpread$b({}, parentSet.pagination);
652
+
653
+ var _ref6 = messagePaginationOptions || {},
654
+ id_around = _ref6.id_around;
655
+
656
+ if (!id_around) return newPagination;
657
+ var hasPrev;
658
+ var hasNext;
659
+ var _ref7 = [returnedPage[0], returnedPage.slice(-1)[0]],
660
+ firstPageMsg = _ref7[0],
661
+ lastPageMsg = _ref7[1];
662
+ var firstPageMsgIsFirstInSet = (firstPageMsg === null || firstPageMsg === void 0 ? void 0 : firstPageMsg.id) === ((_parentSet$messages$2 = parentSet.messages[0]) === null || _parentSet$messages$2 === void 0 ? void 0 : _parentSet$messages$2.id),
663
+ lastPageMsgIsLastInSet = (lastPageMsg === null || lastPageMsg === void 0 ? void 0 : lastPageMsg.id) === ((_parentSet$messages$s2 = parentSet.messages.slice(-1)[0]) === null || _parentSet$messages$s2 === void 0 ? void 0 : _parentSet$messages$s2.id);
664
+ var updateHasPrev = firstPageMsgIsFirstInSet;
665
+ var updateHasNext = lastPageMsgIsLastInSet;
666
+ var midPoint = Math.floor(returnedPage.length / 2);
667
+ var noMoreMessages = (requestedPageSize > parentSet.messages.length || parentSet.messages.length >= returnedPage.length) && requestedPageSize > returnedPage.length;
668
+
669
+ if (noMoreMessages) {
670
+ hasNext = hasPrev = false;
671
+ updateHasPrev = updateHasNext = true;
672
+ } else if (!returnedPage[midPoint]) {
673
+ return newPagination;
674
+ } else if (returnedPage[midPoint].id === id_around) {
675
+ hasPrev = hasNext = true;
676
+ } else {
677
+ var targetMsg;
678
+ var halves = [returnedPage.slice(0, midPoint), returnedPage.slice(midPoint)];
679
+ hasPrev = hasNext = true;
680
+
681
+ for (var i = 0; i < halves.length; i++) {
682
+ targetMsg = halves[i].find(function (message) {
683
+ return message.id === id_around;
684
+ });
685
+
686
+ if (targetMsg && i === 0) {
687
+ hasPrev = false;
688
+ }
689
+
690
+ if (targetMsg && i === 1) {
691
+ hasNext = false;
692
+ }
693
+ }
694
+ }
695
+
696
+ if (updateHasPrev && typeof hasPrev !== 'undefined') newPagination.hasPrev = hasPrev;
697
+ if (updateHasNext && typeof hasNext !== 'undefined') newPagination.hasNext = hasNext;
698
+ return newPagination;
699
+ };
700
+
701
+ var messagePaginationLinear = function messagePaginationLinear(_ref8) {
702
+ var _parentSet$messages$3, _parentSet$messages$s3;
703
+
704
+ var parentSet = _ref8.parentSet,
705
+ requestedPageSize = _ref8.requestedPageSize,
706
+ returnedPage = _ref8.returnedPage,
707
+ messagePaginationOptions = _ref8.messagePaginationOptions;
708
+
709
+ var newPagination = _objectSpread$b({}, parentSet.pagination);
710
+
711
+ var hasPrev;
712
+ var hasNext;
713
+ var _ref9 = [returnedPage[0], returnedPage.slice(-1)[0]],
714
+ firstPageMsg = _ref9[0],
715
+ lastPageMsg = _ref9[1];
716
+ var firstPageMsgIsFirstInSet = (firstPageMsg === null || firstPageMsg === void 0 ? void 0 : firstPageMsg.id) && firstPageMsg.id === ((_parentSet$messages$3 = parentSet.messages[0]) === null || _parentSet$messages$3 === void 0 ? void 0 : _parentSet$messages$3.id),
717
+ lastPageMsgIsLastInSet = (lastPageMsg === null || lastPageMsg === void 0 ? void 0 : lastPageMsg.id) && lastPageMsg.id === ((_parentSet$messages$s3 = parentSet.messages.slice(-1)[0]) === null || _parentSet$messages$s3 === void 0 ? void 0 : _parentSet$messages$s3.id);
718
+ var queriedNextMessages = messagePaginationOptions && (messagePaginationOptions.created_at_after_or_equal || messagePaginationOptions.created_at_after || messagePaginationOptions.id_gt || messagePaginationOptions.id_gte);
719
+ var queriedPrevMessages = typeof messagePaginationOptions === 'undefined' ? true : messagePaginationOptions.created_at_before_or_equal || messagePaginationOptions.created_at_before || messagePaginationOptions.id_lt || messagePaginationOptions.id_lte || messagePaginationOptions.offset;
720
+ var containsUnrecognizedOptionsOnly = !queriedNextMessages && !queriedPrevMessages && !(messagePaginationOptions !== null && messagePaginationOptions !== void 0 && messagePaginationOptions.id_around) && !(messagePaginationOptions !== null && messagePaginationOptions !== void 0 && messagePaginationOptions.created_at_around);
721
+ var hasMore = returnedPage.length >= requestedPageSize;
722
+
723
+ if (typeof queriedPrevMessages !== 'undefined' || containsUnrecognizedOptionsOnly) {
724
+ hasPrev = hasMore;
725
+ }
726
+
727
+ if (typeof queriedNextMessages !== 'undefined') {
728
+ hasNext = hasMore;
729
+ }
730
+
731
+ var returnedPageIsEmpty = returnedPage.length === 0;
732
+ if ((firstPageMsgIsFirstInSet || returnedPageIsEmpty) && typeof hasPrev !== 'undefined') newPagination.hasPrev = hasPrev;
733
+ if ((lastPageMsgIsLastInSet || returnedPageIsEmpty) && typeof hasNext !== 'undefined') newPagination.hasNext = hasNext;
734
+ return newPagination;
735
+ };
736
+
737
+ var messageSetPagination = function messageSetPagination(params) {
738
+ var _params$messagePagina, _params$messagePagina2;
739
+
740
+ if (params.parentSet.messages.length < params.returnedPage.length) {
741
+ var _params$logger;
742
+
743
+ (_params$logger = params.logger) === null || _params$logger === void 0 ? void 0 : _params$logger.call(params, 'error', 'Corrupted message set state: parent set size < returned page size');
744
+ return params.parentSet.pagination;
745
+ }
746
+
747
+ if ((_params$messagePagina = params.messagePaginationOptions) !== null && _params$messagePagina !== void 0 && _params$messagePagina.created_at_around) {
748
+ return messagePaginationCreatedAtAround(params);
749
+ } else if ((_params$messagePagina2 = params.messagePaginationOptions) !== null && _params$messagePagina2 !== void 0 && _params$messagePagina2.id_around) {
750
+ return messagePaginationIdAround(params);
751
+ } else {
752
+ return messagePaginationLinear(params);
753
+ }
754
+ };
755
+
756
+ var DEFAULT_QUERY_CHANNELS_MESSAGE_LIST_PAGE_SIZE = 25;
757
+ var DEFAULT_QUERY_CHANNEL_MESSAGE_LIST_PAGE_SIZE = 100;
758
+ var DEFAULT_MESSAGE_SET_PAGINATION = {
759
+ hasNext: true,
760
+ hasPrev: true
761
+ };
762
+
763
+ function ownKeys$a(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
764
+
765
+ function _objectSpread$a(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$a(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$a(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
487
766
 
488
767
  /**
489
768
  * ChannelState - A container class for the channel state.
@@ -538,6 +817,10 @@ var ChannelState = /*#__PURE__*/function () {
538
817
 
539
818
  _defineProperty__default['default'](this, "messageSets", []);
540
819
 
820
+ _defineProperty__default['default'](this, "formatMessage", function (message) {
821
+ return formatMessage(message);
822
+ });
823
+
541
824
  _defineProperty__default['default'](this, "setIsUpToDate", function (isUpToDate) {
542
825
  _this.isUpToDate = isUpToDate;
543
826
  });
@@ -560,7 +843,7 @@ var ChannelState = /*#__PURE__*/function () {
560
843
  if (!message) return;
561
844
  if (message.poll_id !== pollVote.poll_id) return;
562
845
 
563
- var updatedPoll = _objectSpread$8({}, poll);
846
+ var updatedPoll = _objectSpread$a({}, poll);
564
847
 
565
848
  var ownVotes = _toConsumableArray__default['default'](((_message$poll = message.poll) === null || _message$poll === void 0 ? void 0 : _message$poll.own_votes) || []);
566
849
 
@@ -582,7 +865,7 @@ var ChannelState = /*#__PURE__*/function () {
582
865
 
583
866
  updatedPoll.own_votes = ownVotes;
584
867
 
585
- var newMessage = _objectSpread$8(_objectSpread$8({}, message), {}, {
868
+ var newMessage = _objectSpread$a(_objectSpread$a({}, message), {}, {
586
869
  poll: updatedPoll
587
870
  });
588
871
 
@@ -597,7 +880,7 @@ var ChannelState = /*#__PURE__*/function () {
597
880
  if (!message) return;
598
881
  if (message.poll_id !== pollVote.poll_id) return;
599
882
 
600
- var updatedPoll = _objectSpread$8({}, poll);
883
+ var updatedPoll = _objectSpread$a({}, poll);
601
884
 
602
885
  var ownVotes = _toConsumableArray__default['default'](((_message$poll2 = message.poll) === null || _message$poll2 === void 0 ? void 0 : _message$poll2.own_votes) || []);
603
886
 
@@ -607,7 +890,7 @@ var ChannelState = /*#__PURE__*/function () {
607
890
 
608
891
  updatedPoll.own_votes = ownVotes;
609
892
 
610
- var newMessage = _objectSpread$8(_objectSpread$8({}, message), {}, {
893
+ var newMessage = _objectSpread$a(_objectSpread$a({}, message), {}, {
611
894
  poll: updatedPoll
612
895
  });
613
896
 
@@ -622,7 +905,7 @@ var ChannelState = /*#__PURE__*/function () {
622
905
  if (!message) return;
623
906
  if (message.poll_id !== pollVote.poll_id) return;
624
907
 
625
- var updatedPoll = _objectSpread$8({}, poll);
908
+ var updatedPoll = _objectSpread$a({}, poll);
626
909
 
627
910
  var ownVotes = _toConsumableArray__default['default'](((_message$poll3 = message.poll) === null || _message$poll3 === void 0 ? void 0 : _message$poll3.own_votes) || []);
628
911
 
@@ -638,7 +921,7 @@ var ChannelState = /*#__PURE__*/function () {
638
921
 
639
922
  updatedPoll.own_votes = ownVotes;
640
923
 
641
- var newMessage = _objectSpread$8(_objectSpread$8({}, message), {}, {
924
+ var newMessage = _objectSpread$a(_objectSpread$a({}, message), {}, {
642
925
  poll: updatedPoll
643
926
  });
644
927
 
@@ -652,11 +935,11 @@ var ChannelState = /*#__PURE__*/function () {
652
935
 
653
936
  if (!message) return;
654
937
 
655
- var updatedPoll = _objectSpread$8(_objectSpread$8({}, poll), {}, {
938
+ var updatedPoll = _objectSpread$a(_objectSpread$a({}, poll), {}, {
656
939
  own_votes: _toConsumableArray__default['default'](((_message$poll4 = message.poll) === null || _message$poll4 === void 0 ? void 0 : _message$poll4.own_votes) || [])
657
940
  });
658
941
 
659
- var newMessage = _objectSpread$8(_objectSpread$8({}, message), {}, {
942
+ var newMessage = _objectSpread$a(_objectSpread$a({}, message), {}, {
660
943
  poll: updatedPoll
661
944
  });
662
945
 
@@ -671,7 +954,7 @@ var ChannelState = /*#__PURE__*/function () {
671
954
  var m = messages[i];
672
955
 
673
956
  if (((_m$user = m.user) === null || _m$user === void 0 ? void 0 : _m$user.id) === user.id) {
674
- messages[i] = _objectSpread$8(_objectSpread$8({}, m), {}, {
957
+ messages[i] = _objectSpread$a(_objectSpread$a({}, m), {}, {
675
958
  user: user
676
959
  });
677
960
  }
@@ -726,9 +1009,9 @@ var ChannelState = /*#__PURE__*/function () {
726
1009
  user: m.user
727
1010
  };
728
1011
  } else {
729
- messages[i] = _objectSpread$8(_objectSpread$8({}, m), {}, {
1012
+ messages[i] = _objectSpread$a(_objectSpread$a({}, m), {}, {
730
1013
  type: 'deleted',
731
- deleted_at: user.deleted_at
1014
+ deleted_at: user.deleted_at ? new Date(user.deleted_at) : null
732
1015
  });
733
1016
  }
734
1017
  }
@@ -805,6 +1088,15 @@ var ChannelState = /*#__PURE__*/function () {
805
1088
  });
806
1089
  this.messageSets[index].messages = messages;
807
1090
  }
1091
+ }, {
1092
+ key: "messagePagination",
1093
+ get: function get() {
1094
+ var _this$messageSets$fin3;
1095
+
1096
+ return ((_this$messageSets$fin3 = this.messageSets.find(function (s) {
1097
+ return s.isCurrent;
1098
+ })) === null || _this$messageSets$fin3 === void 0 ? void 0 : _this$messageSets$fin3.pagination) || DEFAULT_MESSAGE_SET_PAGINATION;
1099
+ }
808
1100
  /**
809
1101
  * addMessageSorted - Add a message to the state
810
1102
  *
@@ -823,28 +1115,15 @@ var ChannelState = /*#__PURE__*/function () {
823
1115
  return this.addMessagesSorted([newMessage], timestampChanged, false, addIfDoesNotExist, messageSetToAddToIfDoesNotExist);
824
1116
  }
825
1117
  /**
826
- * formatMessage - Takes the message object. Parses the dates, sets __html
827
- * and sets the status to received if missing. Returns a message object
828
- *
829
- * @param {MessageResponse<StreamChatGenerics>} message a message object
1118
+ * Takes the message object, parses the dates, sets `__html`
1119
+ * and sets the status to `received` if missing; returns a new message object.
830
1120
  *
1121
+ * @param {MessageResponse<StreamChatGenerics>} message `MessageResponse` object
831
1122
  */
832
1123
 
833
1124
  }, {
834
- key: "formatMessage",
835
- value: function formatMessage(message) {
836
- return _objectSpread$8(_objectSpread$8({}, message), {}, {
837
- /**
838
- * @deprecated please use `html`
839
- */
840
- __html: message.html,
841
- // parse the date..
842
- pinned_at: message.pinned_at ? new Date(message.pinned_at) : null,
843
- created_at: message.created_at ? new Date(message.created_at) : new Date(),
844
- updated_at: message.updated_at ? new Date(message.updated_at) : new Date(),
845
- status: message.status || 'received'
846
- });
847
- }
1125
+ key: "addMessagesSorted",
1126
+ value:
848
1127
  /**
849
1128
  * addMessagesSorted - Add the list of messages to state and resorts the messages
850
1129
  *
@@ -855,10 +1134,7 @@ var ChannelState = /*#__PURE__*/function () {
855
1134
  * @param {MessageSetType} messageSetToAddToIfDoesNotExist Which message set to add to if messages are not in the list (only used if addIfDoesNotExist is true)
856
1135
  *
857
1136
  */
858
-
859
- }, {
860
- key: "addMessagesSorted",
861
- value: function addMessagesSorted(newMessages) {
1137
+ function addMessagesSorted(newMessages) {
862
1138
  var timestampChanged = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
863
1139
  var initializing = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
864
1140
  var addIfDoesNotExist = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
@@ -1051,7 +1327,7 @@ var ChannelState = /*#__PURE__*/function () {
1051
1327
  var parseMessage = function parseMessage(m) {
1052
1328
  var _m$pinned_at, _m$updated_at;
1053
1329
 
1054
- return _objectSpread$8(_objectSpread$8({}, m), {}, {
1330
+ return _objectSpread$a(_objectSpread$a({}, m), {}, {
1055
1331
  created_at: m.created_at.toISOString(),
1056
1332
  pinned_at: (_m$pinned_at = m.pinned_at) === null || _m$pinned_at === void 0 ? void 0 : _m$pinned_at.toISOString(),
1057
1333
  updated_at: (_m$updated_at = m.updated_at) === null || _m$updated_at === void 0 ? void 0 : _m$updated_at.toISOString()
@@ -1061,8 +1337,8 @@ var ChannelState = /*#__PURE__*/function () {
1061
1337
  var update = function update(messages) {
1062
1338
  var updatedMessages = messages.reduce(function (acc, msg) {
1063
1339
  if (msg.quoted_message_id === message.id) {
1064
- acc.push(_objectSpread$8(_objectSpread$8({}, parseMessage(msg)), {}, {
1065
- quoted_message: remove ? _objectSpread$8(_objectSpread$8({}, message), {}, {
1340
+ acc.push(_objectSpread$a(_objectSpread$a({}, parseMessage(msg)), {}, {
1341
+ quoted_message: remove ? _objectSpread$a(_objectSpread$a({}, message), {}, {
1066
1342
  attachments: []
1067
1343
  }) : message
1068
1344
  }));
@@ -1258,7 +1534,8 @@ var ChannelState = /*#__PURE__*/function () {
1258
1534
  this.messageSets = [{
1259
1535
  messages: [],
1260
1536
  isLatest: true,
1261
- isCurrent: true
1537
+ isCurrent: true,
1538
+ pagination: DEFAULT_MESSAGE_SET_PAGINATION
1262
1539
  }];
1263
1540
  }
1264
1541
  /**
@@ -1266,6 +1543,7 @@ var ChannelState = /*#__PURE__*/function () {
1266
1543
  *
1267
1544
  * @param {string} messageId The id of the message, or 'latest' to indicate switching to the latest messages
1268
1545
  * @param {string} parentMessageId The id of the parent message, if we want load a thread reply
1546
+ * @param {number} limit The page size if the message has to be queried from the server
1269
1547
  */
1270
1548
 
1271
1549
  }, {
@@ -1474,7 +1752,8 @@ var ChannelState = /*#__PURE__*/function () {
1474
1752
  this.messageSets.push({
1475
1753
  messages: [],
1476
1754
  isCurrent: false,
1477
- isLatest: false
1755
+ isLatest: false,
1756
+ pagination: DEFAULT_MESSAGE_SET_PAGINATION
1478
1757
  });
1479
1758
  targetMessageSetIndex = this.messageSets.length - 1;
1480
1759
  }
@@ -1515,6 +1794,8 @@ var ChannelState = /*#__PURE__*/function () {
1515
1794
  sources.forEach(function (messageSet) {
1516
1795
  target.isLatest = target.isLatest || messageSet.isLatest;
1517
1796
  target.isCurrent = target.isCurrent || messageSet.isCurrent;
1797
+ target.pagination.hasPrev = messageSet.messages[0].created_at < target.messages[0].created_at ? messageSet.pagination.hasPrev : target.pagination.hasPrev;
1798
+ target.pagination.hasNext = target.messages.slice(-1)[0].created_at < messageSet.messages.slice(-1)[0].created_at ? messageSet.pagination.hasNext : target.pagination.hasNext;
1518
1799
  messagesToAdd = [].concat(_toConsumableArray__default['default'](messagesToAdd), _toConsumableArray__default['default'](messageSet.messages));
1519
1800
  });
1520
1801
  sources.forEach(function (s) {
@@ -1546,13 +1827,13 @@ function _unsupportedIterableToArray$3(o, minLen) { if (!o) return; if (typeof o
1546
1827
 
1547
1828
  function _arrayLikeToArray$3(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
1548
1829
 
1549
- function ownKeys$7(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1550
-
1551
- function _objectSpread$7(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$7(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$7(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
1830
+ function ownKeys$9(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1552
1831
 
1832
+ function _objectSpread$9(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$9(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$9(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
1553
1833
  /**
1554
1834
  * Channel - The Channel class manages it's own state.
1555
1835
  */
1836
+
1556
1837
  var Channel = /*#__PURE__*/function () {
1557
1838
  /** */
1558
1839
 
@@ -1621,7 +1902,7 @@ var Channel = /*#__PURE__*/function () {
1621
1902
  while (1) {
1622
1903
  switch (_context.prev = _context.next) {
1623
1904
  case 0:
1624
- defaultOptions = _objectSpread$7(_objectSpread$7({}, options), {}, {
1905
+ defaultOptions = _objectSpread$9(_objectSpread$9({}, options), {}, {
1625
1906
  watch: false,
1626
1907
  state: false,
1627
1908
  presence: false
@@ -1673,7 +1954,7 @@ var Channel = /*#__PURE__*/function () {
1673
1954
  throw new Error('channel id is not defined');
1674
1955
  }
1675
1956
 
1676
- return "".concat(_this.getClient().baseURL, "/channels/").concat(_this.type, "/").concat(_this.id);
1957
+ return "".concat(_this.getClient().baseURL, "/channels/").concat(encodeURIComponent(_this.type), "/").concat(encodeURIComponent(_this.id));
1677
1958
  });
1678
1959
 
1679
1960
  var validTypeRe = /^[\w_-]+$/;
@@ -1693,7 +1974,7 @@ var Channel = /*#__PURE__*/function () {
1693
1974
 
1694
1975
  this.data = data; // this._data is used for the requests...
1695
1976
 
1696
- this._data = _objectSpread$7({}, data);
1977
+ this._data = _objectSpread$9({}, data);
1697
1978
  this.cid = "".concat(type, ":").concat(id);
1698
1979
  this.listeners = {}; // perhaps the state variable should be private
1699
1980
 
@@ -1755,7 +2036,7 @@ var Channel = /*#__PURE__*/function () {
1755
2036
  switch (_context2.prev = _context2.next) {
1756
2037
  case 0:
1757
2038
  _context2.next = 2;
1758
- return this.getClient().post(this._channelURL() + '/message', _objectSpread$7({
2039
+ return this.getClient().post(this._channelURL() + '/message', _objectSpread$9({
1759
2040
  message: message
1760
2041
  }, options));
1761
2042
 
@@ -1871,7 +2152,7 @@ var Channel = /*#__PURE__*/function () {
1871
2152
 
1872
2153
  case 3:
1873
2154
  // Return a list of channels
1874
- payload = _objectSpread$7(_objectSpread$7({
2155
+ payload = _objectSpread$9(_objectSpread$9({
1875
2156
  filter_conditions: {
1876
2157
  cid: this.cid
1877
2158
  }
@@ -1968,7 +2249,7 @@ var Channel = /*#__PURE__*/function () {
1968
2249
 
1969
2250
  _context5.next = 6;
1970
2251
  return this.getClient().get(this.getClient().baseURL + '/members', {
1971
- payload: _objectSpread$7({
2252
+ payload: _objectSpread$9({
1972
2253
  type: type,
1973
2254
  id: id,
1974
2255
  members: members,
@@ -2029,7 +2310,7 @@ var Channel = /*#__PURE__*/function () {
2029
2310
 
2030
2311
  case 4:
2031
2312
  _context6.next = 6;
2032
- return this.getClient().post(this.getClient().baseURL + "/messages/".concat(messageID, "/reaction"), _objectSpread$7({
2313
+ return this.getClient().post(this.getClient().baseURL + "/messages/".concat(encodeURIComponent(messageID), "/reaction"), _objectSpread$9({
2033
2314
  reaction: reaction
2034
2315
  }, options));
2035
2316
 
@@ -2069,7 +2350,7 @@ var Channel = /*#__PURE__*/function () {
2069
2350
  throw Error('Deleting a reaction requires specifying both the message and reaction type');
2070
2351
  }
2071
2352
 
2072
- var url = this.getClient().baseURL + "/messages/".concat(messageID, "/reaction/").concat(reactionType); //provided when server side request
2353
+ var url = this.getClient().baseURL + "/messages/".concat(encodeURIComponent(messageID), "/reaction/").concat(encodeURIComponent(reactionType)); //provided when server side request
2073
2354
 
2074
2355
  if (user_id) {
2075
2356
  return this.getClient().delete(url, {
@@ -2110,7 +2391,7 @@ var Channel = /*#__PURE__*/function () {
2110
2391
  delete channelData[key];
2111
2392
  });
2112
2393
  _context7.next = 7;
2113
- return this._update(_objectSpread$7({
2394
+ return this._update(_objectSpread$9({
2114
2395
  message: updateMessage,
2115
2396
  data: channelData
2116
2397
  }, options));
@@ -2282,7 +2563,7 @@ var Channel = /*#__PURE__*/function () {
2282
2563
  case 0:
2283
2564
  options = _args11.length > 0 && _args11[0] !== undefined ? _args11[0] : {};
2284
2565
  _context11.next = 3;
2285
- return this.getClient().delete(this._channelURL(), _objectSpread$7({}, options));
2566
+ return this.getClient().delete(this._channelURL(), _objectSpread$9({}, options));
2286
2567
 
2287
2568
  case 3:
2288
2569
  return _context11.abrupt("return", _context11.sent);
@@ -2358,7 +2639,7 @@ var Channel = /*#__PURE__*/function () {
2358
2639
  case 0:
2359
2640
  options = _args13.length > 0 && _args13[0] !== undefined ? _args13[0] : {};
2360
2641
  _context13.next = 3;
2361
- return this._update(_objectSpread$7({
2642
+ return this._update(_objectSpread$9({
2362
2643
  accept_invite: true
2363
2644
  }, options));
2364
2645
 
@@ -2399,7 +2680,7 @@ var Channel = /*#__PURE__*/function () {
2399
2680
  case 0:
2400
2681
  options = _args14.length > 0 && _args14[0] !== undefined ? _args14[0] : {};
2401
2682
  _context14.next = 3;
2402
- return this._update(_objectSpread$7({
2683
+ return this._update(_objectSpread$9({
2403
2684
  reject_invite: true
2404
2685
  }, options));
2405
2686
 
@@ -2441,7 +2722,7 @@ var Channel = /*#__PURE__*/function () {
2441
2722
  case 0:
2442
2723
  options = _args15.length > 2 && _args15[2] !== undefined ? _args15[2] : {};
2443
2724
  _context15.next = 3;
2444
- return this._update(_objectSpread$7({
2725
+ return this._update(_objectSpread$9({
2445
2726
  add_members: members,
2446
2727
  message: message
2447
2728
  }, options));
@@ -2484,7 +2765,7 @@ var Channel = /*#__PURE__*/function () {
2484
2765
  case 0:
2485
2766
  options = _args16.length > 2 && _args16[2] !== undefined ? _args16[2] : {};
2486
2767
  _context16.next = 3;
2487
- return this._update(_objectSpread$7({
2768
+ return this._update(_objectSpread$9({
2488
2769
  add_moderators: members,
2489
2770
  message: message
2490
2771
  }, options));
@@ -2527,7 +2808,7 @@ var Channel = /*#__PURE__*/function () {
2527
2808
  case 0:
2528
2809
  options = _args17.length > 2 && _args17[2] !== undefined ? _args17[2] : {};
2529
2810
  _context17.next = 3;
2530
- return this._update(_objectSpread$7({
2811
+ return this._update(_objectSpread$9({
2531
2812
  assign_roles: roles,
2532
2813
  message: message
2533
2814
  }, options));
@@ -2570,7 +2851,7 @@ var Channel = /*#__PURE__*/function () {
2570
2851
  case 0:
2571
2852
  options = _args18.length > 2 && _args18[2] !== undefined ? _args18[2] : {};
2572
2853
  _context18.next = 3;
2573
- return this._update(_objectSpread$7({
2854
+ return this._update(_objectSpread$9({
2574
2855
  invites: members,
2575
2856
  message: message
2576
2857
  }, options));
@@ -2613,7 +2894,7 @@ var Channel = /*#__PURE__*/function () {
2613
2894
  case 0:
2614
2895
  options = _args19.length > 2 && _args19[2] !== undefined ? _args19[2] : {};
2615
2896
  _context19.next = 3;
2616
- return this._update(_objectSpread$7({
2897
+ return this._update(_objectSpread$9({
2617
2898
  remove_members: members,
2618
2899
  message: message
2619
2900
  }, options));
@@ -2656,7 +2937,7 @@ var Channel = /*#__PURE__*/function () {
2656
2937
  case 0:
2657
2938
  options = _args20.length > 2 && _args20[2] !== undefined ? _args20[2] : {};
2658
2939
  _context20.next = 3;
2659
- return this._update(_objectSpread$7({
2940
+ return this._update(_objectSpread$9({
2660
2941
  demote_moderators: members,
2661
2942
  message: message
2662
2943
  }, options));
@@ -2741,7 +3022,7 @@ var Channel = /*#__PURE__*/function () {
2741
3022
  case 0:
2742
3023
  opts = _args22.length > 0 && _args22[0] !== undefined ? _args22[0] : {};
2743
3024
  _context22.next = 3;
2744
- return this.getClient().post(this.getClient().baseURL + '/moderation/mute/channel', _objectSpread$7({
3025
+ return this.getClient().post(this.getClient().baseURL + '/moderation/mute/channel', _objectSpread$9({
2745
3026
  channel_cid: this.cid
2746
3027
  }, opts));
2747
3028
 
@@ -2783,7 +3064,7 @@ var Channel = /*#__PURE__*/function () {
2783
3064
  case 0:
2784
3065
  opts = _args23.length > 0 && _args23[0] !== undefined ? _args23[0] : {};
2785
3066
  _context23.next = 3;
2786
- return this.getClient().post(this.getClient().baseURL + '/moderation/unmute/channel', _objectSpread$7({
3067
+ return this.getClient().post(this.getClient().baseURL + '/moderation/unmute/channel', _objectSpread$9({
2787
3068
  channel_cid: this.cid
2788
3069
  }, opts));
2789
3070
 
@@ -2825,7 +3106,7 @@ var Channel = /*#__PURE__*/function () {
2825
3106
  throw Error("Message id is missing");
2826
3107
  }
2827
3108
 
2828
- return this.getClient().post(this.getClient().baseURL + "/messages/".concat(messageID, "/action"), {
3109
+ return this.getClient().post(this.getClient().baseURL + "/messages/".concat(encodeURIComponent(messageID), "/action"), {
2829
3110
  message_id: messageID,
2830
3111
  form_data: formData,
2831
3112
  id: this.id,
@@ -2868,7 +3149,7 @@ var Channel = /*#__PURE__*/function () {
2868
3149
 
2869
3150
  this.lastTypingEvent = new Date();
2870
3151
  _context24.next = 10;
2871
- return this.sendEvent(_objectSpread$7({
3152
+ return this.sendEvent(_objectSpread$9({
2872
3153
  type: 'typing.start',
2873
3154
  parent_id: parent_id
2874
3155
  }, options || {}));
@@ -2912,7 +3193,7 @@ var Channel = /*#__PURE__*/function () {
2912
3193
  this.lastTypingEvent = null;
2913
3194
  this.isTyping = false;
2914
3195
  _context25.next = 6;
2915
- return this.sendEvent(_objectSpread$7({
3196
+ return this.sendEvent(_objectSpread$9({
2916
3197
  type: 'typing.stop',
2917
3198
  parent_id: parent_id
2918
3199
  }, options || {}));
@@ -2999,7 +3280,7 @@ var Channel = /*#__PURE__*/function () {
2999
3280
 
3000
3281
  case 4:
3001
3282
  _context26.next = 6;
3002
- return this.getClient().post(this._channelURL() + '/read', _objectSpread$7({}, data));
3283
+ return this.getClient().post(this._channelURL() + '/read', _objectSpread$9({}, data));
3003
3284
 
3004
3285
  case 6:
3005
3286
  return _context26.abrupt("return", _context26.sent);
@@ -3046,7 +3327,7 @@ var Channel = /*#__PURE__*/function () {
3046
3327
 
3047
3328
  case 3:
3048
3329
  _context27.next = 5;
3049
- return this.getClient().post(this._channelURL() + '/unread', _objectSpread$7({}, data));
3330
+ return this.getClient().post(this._channelURL() + '/unread', _objectSpread$9({}, data));
3050
3331
 
3051
3332
  case 5:
3052
3333
  return _context27.abrupt("return", _context27.sent);
@@ -3114,7 +3395,7 @@ var Channel = /*#__PURE__*/function () {
3114
3395
  defaultOptions.watch = false;
3115
3396
  }
3116
3397
 
3117
- combined = _objectSpread$7(_objectSpread$7({}, defaultOptions), options);
3398
+ combined = _objectSpread$9(_objectSpread$9({}, defaultOptions), options);
3118
3399
  _context28.next = 7;
3119
3400
  return this.query(combined, 'latest');
3120
3401
 
@@ -3187,7 +3468,9 @@ var Channel = /*#__PURE__*/function () {
3187
3468
  return stopWatching;
3188
3469
  }()
3189
3470
  /**
3190
- * getReplies - List the message replies for a parent message
3471
+ * getReplies - List the message replies for a parent message.
3472
+ *
3473
+ * The recommended way of working with threads is to use the Thread class.
3191
3474
  *
3192
3475
  * @param {string} parent_id The message parent id, ie the top of the thread
3193
3476
  * @param {MessagePaginationOptions & { user?: UserResponse<StreamChatGenerics>; user_id?: string }} options Pagination params, ie {limit:10, id_lte: 10}
@@ -3206,7 +3489,7 @@ var Channel = /*#__PURE__*/function () {
3206
3489
  case 0:
3207
3490
  normalizedSort = sort ? normalizeQuerySort(sort) : undefined;
3208
3491
  _context30.next = 3;
3209
- return this.getClient().get(this.getClient().baseURL + "/messages/".concat(parent_id, "/replies"), _objectSpread$7({
3492
+ return this.getClient().get(this.getClient().baseURL + "/messages/".concat(encodeURIComponent(parent_id), "/replies"), _objectSpread$9({
3210
3493
  sort: normalizedSort
3211
3494
  }, options));
3212
3495
 
@@ -3255,8 +3538,8 @@ var Channel = /*#__PURE__*/function () {
3255
3538
  case 0:
3256
3539
  sort = _args31.length > 1 && _args31[1] !== undefined ? _args31[1] : [];
3257
3540
  _context31.next = 3;
3258
- return this.getClient().get(this.getClient().baseURL + "/channels/".concat(this.type, "/").concat(this.id, "/pinned_messages"), {
3259
- payload: _objectSpread$7(_objectSpread$7({}, options), {}, {
3541
+ return this.getClient().get(this._channelURL() + '/pinned_messages', {
3542
+ payload: _objectSpread$9(_objectSpread$9({}, options), {}, {
3260
3543
  sort: normalizeQuerySort(sort)
3261
3544
  })
3262
3545
  });
@@ -3290,7 +3573,7 @@ var Channel = /*#__PURE__*/function () {
3290
3573
  }, {
3291
3574
  key: "getReactions",
3292
3575
  value: function getReactions(message_id, options) {
3293
- return this.getClient().get(this.getClient().baseURL + "/messages/".concat(message_id, "/reactions"), _objectSpread$7({}, options));
3576
+ return this.getClient().get(this.getClient().baseURL + "/messages/".concat(encodeURIComponent(message_id), "/reactions"), _objectSpread$9({}, options));
3294
3577
  }
3295
3578
  /**
3296
3579
  * getMessagesById - Retrieves a list of messages by ID
@@ -3410,7 +3693,7 @@ var Channel = /*#__PURE__*/function () {
3410
3693
  */
3411
3694
  function () {
3412
3695
  var _query = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee32(options) {
3413
- var _this$data6, _this$data7;
3696
+ var _options$messages$lim, _options$messages, _this$data6, _this$data7;
3414
3697
 
3415
3698
  var messageSetToAddToIfDoesNotExist,
3416
3699
  queryURL,
@@ -3431,14 +3714,14 @@ var Channel = /*#__PURE__*/function () {
3431
3714
  return this.getClient().wsPromise;
3432
3715
 
3433
3716
  case 3:
3434
- queryURL = "".concat(this.getClient().baseURL, "/channels/").concat(this.type);
3717
+ queryURL = "".concat(this.getClient().baseURL, "/channels/").concat(encodeURIComponent(this.type));
3435
3718
 
3436
3719
  if (this.id) {
3437
- queryURL += "/".concat(this.id);
3720
+ queryURL += "/".concat(encodeURIComponent(this.id));
3438
3721
  }
3439
3722
 
3440
3723
  _context32.next = 7;
3441
- return this.getClient().post(queryURL + '/query', _objectSpread$7({
3724
+ return this.getClient().post(queryURL + '/query', _objectSpread$9({
3442
3725
  data: this._data,
3443
3726
  state: true
3444
3727
  }, options));
@@ -3473,6 +3756,13 @@ var Channel = /*#__PURE__*/function () {
3473
3756
 
3474
3757
 
3475
3758
  _this$_initializeStat = this._initializeState(state, messageSetToAddToIfDoesNotExist), messageSet = _this$_initializeStat.messageSet;
3759
+ messageSet.pagination = _objectSpread$9(_objectSpread$9({}, messageSet.pagination), messageSetPagination({
3760
+ parentSet: messageSet,
3761
+ messagePaginationOptions: options === null || options === void 0 ? void 0 : options.messages,
3762
+ requestedPageSize: (_options$messages$lim = options === null || options === void 0 ? void 0 : (_options$messages = options.messages) === null || _options$messages === void 0 ? void 0 : _options$messages.limit) !== null && _options$messages$lim !== void 0 ? _options$messages$lim : DEFAULT_QUERY_CHANNEL_MESSAGE_LIST_PAGE_SIZE,
3763
+ returnedPage: state.messages,
3764
+ logger: this.getClient().logger
3765
+ }));
3476
3766
  areCapabilitiesChanged = _toConsumableArray__default['default'](state.channel.own_capabilities || []).sort().join() !== _toConsumableArray__default['default'](Array.isArray((_this$data6 = this.data) === null || _this$data6 === void 0 ? void 0 : _this$data6.own_capabilities) ? (_this$data7 = this.data) === null || _this$data7 === void 0 ? void 0 : _this$data7.own_capabilities : []).sort().join();
3477
3767
  this.data = state.channel;
3478
3768
  this.offlineMode = false;
@@ -3494,7 +3784,7 @@ var Channel = /*#__PURE__*/function () {
3494
3784
  });
3495
3785
  return _context32.abrupt("return", state);
3496
3786
 
3497
- case 17:
3787
+ case 18:
3498
3788
  case "end":
3499
3789
  return _context32.stop();
3500
3790
  }
@@ -3527,7 +3817,7 @@ var Channel = /*#__PURE__*/function () {
3527
3817
  this._checkInitialized();
3528
3818
 
3529
3819
  _context33.next = 3;
3530
- return this.getClient().banUser(targetUserID, _objectSpread$7(_objectSpread$7({}, options), {}, {
3820
+ return this.getClient().banUser(targetUserID, _objectSpread$9(_objectSpread$9({}, options), {}, {
3531
3821
  type: this.type,
3532
3822
  id: this.id
3533
3823
  }));
@@ -3699,7 +3989,7 @@ var Channel = /*#__PURE__*/function () {
3699
3989
  this._checkInitialized();
3700
3990
 
3701
3991
  _context37.next = 3;
3702
- return this.getClient().shadowBan(targetUserID, _objectSpread$7(_objectSpread$7({}, options), {}, {
3992
+ return this.getClient().shadowBan(targetUserID, _objectSpread$9(_objectSpread$9({}, options), {}, {
3703
3993
  type: this.type,
3704
3994
  id: this.id
3705
3995
  }));
@@ -4153,7 +4443,7 @@ var Channel = /*#__PURE__*/function () {
4153
4443
  });
4154
4444
  }
4155
4445
 
4156
- channel.data = _objectSpread$7(_objectSpread$7({}, event.channel), {}, {
4446
+ channel.data = _objectSpread$9(_objectSpread$9({}, event.channel), {}, {
4157
4447
  hidden: (_event$channel$hidden = (_event$channel3 = event.channel) === null || _event$channel3 === void 0 ? void 0 : _event$channel3.hidden) !== null && _event$channel$hidden !== void 0 ? _event$channel$hidden : (_channel$data2 = channel.data) === null || _channel$data2 === void 0 ? void 0 : _channel$data2.hidden,
4158
4448
  own_capabilities: (_event$channel$own_ca = (_event$channel4 = event.channel) === null || _event$channel4 === void 0 ? void 0 : _event$channel4.own_capabilities) !== null && _event$channel$own_ca !== void 0 ? _event$channel$own_ca : (_channel$data3 = channel.data) === null || _channel$data3 === void 0 ? void 0 : _channel$data3.own_capabilities
4159
4449
  });
@@ -4227,7 +4517,7 @@ var Channel = /*#__PURE__*/function () {
4227
4517
  break;
4228
4518
 
4229
4519
  case 'channel.hidden':
4230
- channel.data = _objectSpread$7(_objectSpread$7({}, channel.data), {}, {
4520
+ channel.data = _objectSpread$9(_objectSpread$9({}, channel.data), {}, {
4231
4521
  hidden: true
4232
4522
  });
4233
4523
 
@@ -4238,26 +4528,26 @@ var Channel = /*#__PURE__*/function () {
4238
4528
  break;
4239
4529
 
4240
4530
  case 'channel.visible':
4241
- channel.data = _objectSpread$7(_objectSpread$7({}, channel.data), {}, {
4531
+ channel.data = _objectSpread$9(_objectSpread$9({}, channel.data), {}, {
4242
4532
  hidden: false
4243
4533
  });
4244
4534
  break;
4245
4535
 
4246
4536
  case 'user.banned':
4247
4537
  if (!((_event$user11 = event.user) !== null && _event$user11 !== void 0 && _event$user11.id)) break;
4248
- channelState.members[event.user.id] = _objectSpread$7(_objectSpread$7({}, channelState.members[event.user.id] || {}), {}, {
4538
+ channelState.members[event.user.id] = _objectSpread$9(_objectSpread$9({}, channelState.members[event.user.id] || {}), {}, {
4249
4539
  shadow_banned: !!event.shadow,
4250
4540
  banned: !event.shadow,
4251
- user: _objectSpread$7(_objectSpread$7({}, ((_channelState$members = channelState.members[event.user.id]) === null || _channelState$members === void 0 ? void 0 : _channelState$members.user) || {}), event.user)
4541
+ user: _objectSpread$9(_objectSpread$9({}, ((_channelState$members = channelState.members[event.user.id]) === null || _channelState$members === void 0 ? void 0 : _channelState$members.user) || {}), event.user)
4252
4542
  });
4253
4543
  break;
4254
4544
 
4255
4545
  case 'user.unbanned':
4256
4546
  if (!((_event$user12 = event.user) !== null && _event$user12 !== void 0 && _event$user12.id)) break;
4257
- channelState.members[event.user.id] = _objectSpread$7(_objectSpread$7({}, channelState.members[event.user.id] || {}), {}, {
4547
+ channelState.members[event.user.id] = _objectSpread$9(_objectSpread$9({}, channelState.members[event.user.id] || {}), {}, {
4258
4548
  shadow_banned: false,
4259
4549
  banned: false,
4260
- user: _objectSpread$7(_objectSpread$7({}, ((_channelState$members2 = channelState.members[event.user.id]) === null || _channelState$members2 === void 0 ? void 0 : _channelState$members2.user) || {}), event.user)
4550
+ user: _objectSpread$9(_objectSpread$9({}, ((_channelState$members2 = channelState.members[event.user.id]) === null || _channelState$members2 === void 0 ? void 0 : _channelState$members2.user) || {}), event.user)
4261
4551
  });
4262
4552
  break;
4263
4553
  } // any event can send over the online count
@@ -4511,9 +4801,9 @@ var ClientState = /*#__PURE__*/function () {
4511
4801
  return ClientState;
4512
4802
  }();
4513
4803
 
4514
- function ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
4804
+ function ownKeys$8(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
4515
4805
 
4516
- function _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$6(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4806
+ function _objectSpread$8(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$8(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$8(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4517
4807
  var InsightMetrics = function InsightMetrics() {
4518
4808
  _classCallCheck__default['default'](this, InsightMetrics);
4519
4809
 
@@ -4592,7 +4882,7 @@ var postInsights = /*#__PURE__*/function () {
4592
4882
  };
4593
4883
  }();
4594
4884
  function buildWsFatalInsight(connection, event) {
4595
- return _objectSpread$6(_objectSpread$6({}, event), buildWsBaseInsight(connection));
4885
+ return _objectSpread$8(_objectSpread$8({}, event), buildWsBaseInsight(connection));
4596
4886
  }
4597
4887
 
4598
4888
  function buildWsBaseInsight(connection) {
@@ -4625,9 +4915,9 @@ function buildWsSuccessAfterFailureInsight(connection) {
4625
4915
  return buildWsBaseInsight(connection);
4626
4916
  }
4627
4917
 
4628
- function ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
4918
+ function ownKeys$7(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
4629
4919
 
4630
- function _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$5(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4920
+ function _objectSpread$7(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$7(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$7(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4631
4921
 
4632
4922
  // Type guards to check WebSocket error type
4633
4923
  var isCloseEvent = function isCloseEvent(res) {
@@ -4991,7 +5281,7 @@ var StableWSConnection = /*#__PURE__*/function () {
4991
5281
  value: function _log(msg) {
4992
5282
  var extra = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
4993
5283
  var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'info';
4994
- this.client.logger(level, 'connection:' + msg, _objectSpread$5({
5284
+ this.client.logger(level, 'connection:' + msg, _objectSpread$7({
4995
5285
  tags: ['connection']
4996
5286
  }, extra));
4997
5287
  }
@@ -5586,9 +5876,9 @@ var jwt = null;
5586
5876
 
5587
5877
  var crypto$1 = null;
5588
5878
 
5589
- function ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
5879
+ function ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
5590
5880
 
5591
- function _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$4(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
5881
+ function _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$6(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
5592
5882
 
5593
5883
  /**
5594
5884
  * Creates the JWT token that can be used for a UserSession
@@ -5609,7 +5899,7 @@ function JWTUserToken(apiSecret, userId) {
5609
5899
  throw new TypeError('userId should be a string');
5610
5900
  }
5611
5901
 
5612
- var payload = _objectSpread$4({
5902
+ var payload = _objectSpread$6({
5613
5903
  user_id: userId
5614
5904
  }, extraData); // make sure we return a clear error when jwt is shimmed (ie. browser build)
5615
5905
 
@@ -6013,9 +6303,9 @@ function isErrorResponse(res) {
6013
6303
  return !res.status || res.status < 200 || 300 <= res.status;
6014
6304
  }
6015
6305
 
6016
- function ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
6306
+ function ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
6017
6307
 
6018
- function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$3(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
6308
+ function _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$5(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
6019
6309
  var ConnectionState;
6020
6310
 
6021
6311
  (function (ConnectionState) {
@@ -6078,7 +6368,7 @@ var WSConnectionFallback = /*#__PURE__*/function () {
6078
6368
  _context.next = 4;
6079
6369
  return _this.client.doAxiosRequest('get', _this.client.baseURL.replace(':3030', ':8900') + '/longpoll', // replace port if present for testing with local API
6080
6370
  undefined, {
6081
- config: _objectSpread$3(_objectSpread$3({}, config), {}, {
6371
+ config: _objectSpread$5(_objectSpread$5({}, config), {}, {
6082
6372
  cancelToken: (_this$cancelToken2 = _this.cancelToken) === null || _this$cancelToken2 === void 0 ? void 0 : _this$cancelToken2.token
6083
6373
  }),
6084
6374
  params: params
@@ -6356,7 +6646,7 @@ var WSConnectionFallback = /*#__PURE__*/function () {
6356
6646
  value: function _log(msg) {
6357
6647
  var extra = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
6358
6648
  var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'info';
6359
- this.client.logger(level, 'WSConnectionFallback:' + msg, _objectSpread$3({
6649
+ this.client.logger(level, 'WSConnectionFallback:' + msg, _objectSpread$5({
6360
6650
  tags: ['connection_fallback', 'connection']
6361
6651
  }, extra));
6362
6652
  }
@@ -6936,168 +7226,710 @@ exports.VotingVisibility = void 0;
6936
7226
  VotingVisibility["public"] = "public";
6937
7227
  })(exports.VotingVisibility || (exports.VotingVisibility = {}));
6938
7228
 
6939
- var _excluded$1 = ["parent_message_id", "parent_message", "latest_replies", "thread_participants", "reply_count", "channel", "read"];
7229
+ function ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
6940
7230
 
6941
- function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
7231
+ function _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$4(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
6942
7232
 
6943
- function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
7233
+ function isPatch(value) {
7234
+ return typeof value === 'function';
7235
+ }
6944
7236
 
6945
- function _createForOfIteratorHelper$1(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
7237
+ var StateStore = function StateStore(value) {
7238
+ var _this = this;
6946
7239
 
6947
- function _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }
7240
+ _classCallCheck__default['default'](this, StateStore);
6948
7241
 
6949
- function _arrayLikeToArray$1(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
7242
+ this.value = value;
7243
+
7244
+ _defineProperty__default['default'](this, "handlerSet", new Set());
7245
+
7246
+ _defineProperty__default['default'](this, "next", function (newValueOrPatch) {
7247
+ // newValue (or patch output) should never be mutated previous value
7248
+ var newValue = isPatch(newValueOrPatch) ? newValueOrPatch(_this.value) : newValueOrPatch; // do not notify subscribers if the value hasn't changed
7249
+
7250
+ if (newValue === _this.value) return;
7251
+ var oldValue = _this.value;
7252
+ _this.value = newValue;
7253
+
7254
+ _this.handlerSet.forEach(function (handler) {
7255
+ return handler(_this.value, oldValue);
7256
+ });
7257
+ });
7258
+
7259
+ _defineProperty__default['default'](this, "partialNext", function (partial) {
7260
+ return _this.next(function (current) {
7261
+ return _objectSpread$4(_objectSpread$4({}, current), partial);
7262
+ });
7263
+ });
7264
+
7265
+ _defineProperty__default['default'](this, "getLatestValue", function () {
7266
+ return _this.value;
7267
+ });
7268
+
7269
+ _defineProperty__default['default'](this, "subscribe", function (handler) {
7270
+ handler(_this.value, undefined);
7271
+
7272
+ _this.handlerSet.add(handler);
7273
+
7274
+ return function () {
7275
+ _this.handlerSet.delete(handler);
7276
+ };
7277
+ });
7278
+
7279
+ _defineProperty__default['default'](this, "subscribeWithSelector", function (selector, handler) {
7280
+ // begin with undefined to reduce amount of selector calls
7281
+ var selectedValues;
7282
+
7283
+ var wrappedHandler = function wrappedHandler(nextValue) {
7284
+ var _selectedValues$some, _selectedValues;
7285
+
7286
+ var newlySelectedValues = selector(nextValue);
7287
+ var hasUpdatedValues = (_selectedValues$some = (_selectedValues = selectedValues) === null || _selectedValues === void 0 ? void 0 : _selectedValues.some(function (value, index) {
7288
+ return value !== newlySelectedValues[index];
7289
+ })) !== null && _selectedValues$some !== void 0 ? _selectedValues$some : true;
7290
+ if (!hasUpdatedValues) return;
7291
+ var oldSelectedValues = selectedValues;
7292
+ selectedValues = newlySelectedValues;
7293
+ handler(newlySelectedValues, oldSelectedValues);
7294
+ };
7295
+
7296
+ return _this.subscribe(wrappedHandler);
7297
+ });
7298
+ };
7299
+
7300
+ var _excluded$1 = ["limit", "sort"];
7301
+
7302
+ function ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
7303
+
7304
+ function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$3(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
7305
+ var DEFAULT_PAGE_LIMIT = 50;
7306
+ var DEFAULT_SORT = [{
7307
+ created_at: -1
7308
+ }];
7309
+ var MARK_AS_READ_THROTTLE_TIMEOUT = 1000;
6950
7310
  var Thread = /*#__PURE__*/function () {
6951
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
6952
- function Thread(client, t) {
7311
+ function Thread(_ref) {
7312
+ var _this = this,
7313
+ _threadData$read,
7314
+ _threadData$reply_cou;
7315
+
7316
+ var client = _ref.client,
7317
+ threadData = _ref.threadData;
7318
+
6953
7319
  _classCallCheck__default['default'](this, Thread);
6954
7320
 
7321
+ _defineProperty__default['default'](this, "state", void 0);
7322
+
6955
7323
  _defineProperty__default['default'](this, "id", void 0);
6956
7324
 
6957
- _defineProperty__default['default'](this, "latestReplies", []);
7325
+ _defineProperty__default['default'](this, "client", void 0);
6958
7326
 
6959
- _defineProperty__default['default'](this, "participants", []);
7327
+ _defineProperty__default['default'](this, "unsubscribeFunctions", new Set());
6960
7328
 
6961
- _defineProperty__default['default'](this, "message", void 0);
7329
+ _defineProperty__default['default'](this, "failedRepliesMap", new Map());
6962
7330
 
6963
- _defineProperty__default['default'](this, "channel", void 0);
7331
+ _defineProperty__default['default'](this, "activate", function () {
7332
+ _this.state.partialNext({
7333
+ active: true
7334
+ });
7335
+ });
6964
7336
 
6965
- _defineProperty__default['default'](this, "_channel", void 0);
7337
+ _defineProperty__default['default'](this, "deactivate", function () {
7338
+ _this.state.partialNext({
7339
+ active: false
7340
+ });
7341
+ });
6966
7342
 
6967
- _defineProperty__default['default'](this, "replyCount", 0);
7343
+ _defineProperty__default['default'](this, "reload", /*#__PURE__*/_asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee() {
7344
+ var thread;
7345
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
7346
+ while (1) {
7347
+ switch (_context.prev = _context.next) {
7348
+ case 0:
7349
+ if (!_this.state.getLatestValue().isLoading) {
7350
+ _context.next = 2;
7351
+ break;
7352
+ }
6968
7353
 
6969
- _defineProperty__default['default'](this, "_client", void 0);
7354
+ return _context.abrupt("return");
6970
7355
 
6971
- _defineProperty__default['default'](this, "read", {});
6972
-
6973
- _defineProperty__default['default'](this, "data", {});
6974
-
6975
- var parent_message_id = t.parent_message_id,
6976
- parent_message = t.parent_message,
6977
- latest_replies = t.latest_replies,
6978
- thread_participants = t.thread_participants,
6979
- reply_count = t.reply_count,
6980
- channel = t.channel,
6981
- read = t.read,
6982
- data = _objectWithoutProperties__default['default'](t, _excluded$1);
6983
-
6984
- this.id = parent_message_id;
6985
- this.message = formatMessage(parent_message);
6986
- this.latestReplies = latest_replies.map(formatMessage);
6987
- this.participants = thread_participants;
6988
- this.replyCount = reply_count;
6989
- this.channel = channel;
6990
- this._channel = client.channel(t.channel.type, t.channel.id);
6991
- this._client = client;
7356
+ case 2:
7357
+ _this.state.partialNext({
7358
+ isLoading: true
7359
+ });
6992
7360
 
6993
- if (read) {
6994
- var _iterator = _createForOfIteratorHelper$1(read),
6995
- _step;
7361
+ _context.prev = 3;
7362
+ _context.next = 6;
7363
+ return _this.client.getThread(_this.id, {
7364
+ watch: true
7365
+ });
6996
7366
 
6997
- try {
6998
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
6999
- var r = _step.value;
7000
- this.read[r.user.id] = _objectSpread$2(_objectSpread$2({}, r), {}, {
7001
- last_read: new Date(r.last_read)
7002
- });
7003
- }
7004
- } catch (err) {
7005
- _iterator.e(err);
7006
- } finally {
7007
- _iterator.f();
7008
- }
7009
- }
7367
+ case 6:
7368
+ thread = _context.sent;
7010
7369
 
7011
- this.data = data;
7012
- }
7370
+ _this.hydrateState(thread);
7013
7371
 
7014
- _createClass__default['default'](Thread, [{
7015
- key: "getClient",
7016
- value: function getClient() {
7017
- return this._client;
7018
- }
7019
- /**
7020
- * addReply - Adds or updates a latestReplies to the thread
7021
- *
7022
- * @param {MessageResponse<StreamChatGenerics>} message reply message to be added.
7023
- */
7372
+ case 8:
7373
+ _context.prev = 8;
7024
7374
 
7025
- }, {
7026
- key: "addReply",
7027
- value: function addReply(message) {
7028
- if (message.parent_id !== this.message.id) {
7029
- throw new Error('Message does not belong to this thread');
7030
- }
7375
+ _this.state.partialNext({
7376
+ isLoading: false
7377
+ });
7031
7378
 
7032
- this.latestReplies = addToMessageList(this.latestReplies, formatMessage(message), true);
7033
- }
7034
- }, {
7035
- key: "updateReply",
7036
- value: function updateReply(message) {
7037
- this.latestReplies = this.latestReplies.map(function (m) {
7038
- if (m.id === message.id) {
7039
- return formatMessage(message);
7379
+ return _context.finish(8);
7380
+
7381
+ case 11:
7382
+ case "end":
7383
+ return _context.stop();
7384
+ }
7040
7385
  }
7386
+ }, _callee, null, [[3,, 8, 11]]);
7387
+ })));
7041
7388
 
7042
- return m;
7043
- });
7044
- }
7045
- }, {
7046
- key: "updateMessageOrReplyIfExists",
7047
- value: function updateMessageOrReplyIfExists(message) {
7048
- if (!message.parent_id && message.id !== this.message.id) {
7389
+ _defineProperty__default['default'](this, "hydrateState", function (thread) {
7390
+ if (thread === _this) {
7391
+ // skip if the instances are the same
7049
7392
  return;
7050
7393
  }
7051
7394
 
7052
- if (message.parent_id && message.parent_id !== this.message.id) {
7053
- return;
7395
+ if (thread.id !== _this.id) {
7396
+ throw new Error("Cannot hydrate thread state with using thread's state");
7054
7397
  }
7055
7398
 
7056
- if (message.parent_id && message.parent_id === this.message.id) {
7057
- this.updateReply(message);
7058
- return;
7059
- }
7399
+ var _thread$state$getLate = thread.state.getLatestValue(),
7400
+ read = _thread$state$getLate.read,
7401
+ replyCount = _thread$state$getLate.replyCount,
7402
+ replies = _thread$state$getLate.replies,
7403
+ parentMessage = _thread$state$getLate.parentMessage,
7404
+ participants = _thread$state$getLate.participants,
7405
+ createdAt = _thread$state$getLate.createdAt,
7406
+ deletedAt = _thread$state$getLate.deletedAt,
7407
+ updatedAt = _thread$state$getLate.updatedAt; // Preserve pending replies and append them to the updated list of replies
7060
7408
 
7061
- if (!message.parent_id && message.id === this.message.id) {
7062
- this.message = formatMessage(message);
7063
- }
7064
- }
7065
- }, {
7066
- key: "addReaction",
7067
- value: function addReaction(reaction, message, enforce_unique) {
7068
- var _this = this;
7069
7409
 
7070
- if (!message) return;
7071
- this.latestReplies = this.latestReplies.map(function (m) {
7072
- if (m.id === message.id) {
7073
- return formatMessage(_this._channel.state.addReaction(reaction, message, enforce_unique));
7074
- }
7410
+ var pendingReplies = Array.from(_this.failedRepliesMap.values());
7075
7411
 
7076
- return m;
7412
+ _this.state.partialNext({
7413
+ read: read,
7414
+ replyCount: replyCount,
7415
+ replies: pendingReplies.length ? replies.concat(pendingReplies) : replies,
7416
+ parentMessage: parentMessage,
7417
+ participants: participants,
7418
+ createdAt: createdAt,
7419
+ deletedAt: deletedAt,
7420
+ updatedAt: updatedAt,
7421
+ isStateStale: false
7077
7422
  });
7078
- }
7079
- }, {
7080
- key: "removeReaction",
7081
- value: function removeReaction(reaction, message) {
7082
- var _this2 = this;
7423
+ });
7083
7424
 
7084
- if (!message) return;
7085
- this.latestReplies = this.latestReplies.map(function (m) {
7086
- if (m.id === message.id) {
7087
- return formatMessage(_this2._channel.state.removeReaction(reaction, message));
7088
- }
7425
+ _defineProperty__default['default'](this, "registerSubscriptions", function () {
7426
+ if (_this.unsubscribeFunctions.size) {
7427
+ // Thread is already listening for events and changes
7428
+ return;
7429
+ }
7089
7430
 
7090
- return m;
7091
- });
7092
- }
7093
- }]);
7431
+ _this.unsubscribeFunctions.add(_this.subscribeMarkActiveThreadRead());
7094
7432
 
7095
- return Thread;
7096
- }();
7433
+ _this.unsubscribeFunctions.add(_this.subscribeReloadActiveStaleThread());
7097
7434
 
7098
- function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
7435
+ _this.unsubscribeFunctions.add(_this.subscribeMarkThreadStale());
7099
7436
 
7100
- function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
7437
+ _this.unsubscribeFunctions.add(_this.subscribeNewReplies());
7438
+
7439
+ _this.unsubscribeFunctions.add(_this.subscribeRepliesRead());
7440
+
7441
+ _this.unsubscribeFunctions.add(_this.subscribeReplyDeleted());
7442
+
7443
+ _this.unsubscribeFunctions.add(_this.subscribeMessageUpdated());
7444
+ });
7445
+
7446
+ _defineProperty__default['default'](this, "subscribeMarkActiveThreadRead", function () {
7447
+ return _this.state.subscribeWithSelector(function (nextValue) {
7448
+ return [nextValue.active, ownUnreadCountSelector(_this.client.userID)(nextValue)];
7449
+ }, function (_ref3) {
7450
+ var _ref4 = _slicedToArray__default['default'](_ref3, 2),
7451
+ active = _ref4[0],
7452
+ unreadMessageCount = _ref4[1];
7453
+
7454
+ if (!active || !unreadMessageCount) return;
7455
+
7456
+ _this.throttledMarkAsRead();
7457
+ });
7458
+ });
7459
+
7460
+ _defineProperty__default['default'](this, "subscribeReloadActiveStaleThread", function () {
7461
+ return _this.state.subscribeWithSelector(function (nextValue) {
7462
+ return [nextValue.active, nextValue.isStateStale];
7463
+ }, function (_ref5) {
7464
+ var _ref6 = _slicedToArray__default['default'](_ref5, 2),
7465
+ active = _ref6[0],
7466
+ isStateStale = _ref6[1];
7467
+
7468
+ if (active && isStateStale) {
7469
+ _this.reload();
7470
+ }
7471
+ });
7472
+ });
7473
+
7474
+ _defineProperty__default['default'](this, "subscribeMarkThreadStale", function () {
7475
+ return _this.client.on('user.watching.stop', function (event) {
7476
+ var _event$user, _event$channel;
7477
+
7478
+ var _this$state$getLatest = _this.state.getLatestValue(),
7479
+ channel = _this$state$getLatest.channel;
7480
+
7481
+ if (!_this.client.userID || _this.client.userID !== ((_event$user = event.user) === null || _event$user === void 0 ? void 0 : _event$user.id) || ((_event$channel = event.channel) === null || _event$channel === void 0 ? void 0 : _event$channel.cid) !== channel.cid) {
7482
+ return;
7483
+ }
7484
+
7485
+ _this.state.partialNext({
7486
+ isStateStale: true
7487
+ });
7488
+ }).unsubscribe;
7489
+ });
7490
+
7491
+ _defineProperty__default['default'](this, "subscribeNewReplies", function () {
7492
+ return _this.client.on('message.new', function (event) {
7493
+ var _event$message, _event$message$user;
7494
+
7495
+ if (!_this.client.userID || ((_event$message = event.message) === null || _event$message === void 0 ? void 0 : _event$message.parent_id) !== _this.id) {
7496
+ return;
7497
+ }
7498
+
7499
+ var isOwnMessage = ((_event$message$user = event.message.user) === null || _event$message$user === void 0 ? void 0 : _event$message$user.id) === _this.client.userID;
7500
+
7501
+ var _this$state$getLatest2 = _this.state.getLatestValue(),
7502
+ active = _this$state$getLatest2.active,
7503
+ read = _this$state$getLatest2.read;
7504
+
7505
+ _this.upsertReplyLocally({
7506
+ message: event.message,
7507
+ // Message from current user could have been added optimistically,
7508
+ // so the actual timestamp might differ in the event
7509
+ timestampChanged: isOwnMessage
7510
+ });
7511
+
7512
+ if (active) {
7513
+ _this.throttledMarkAsRead();
7514
+ }
7515
+
7516
+ var nextRead = {};
7517
+
7518
+ for (var _i = 0, _Object$keys = Object.keys(read); _i < _Object$keys.length; _i++) {
7519
+ var userId = _Object$keys[_i];
7520
+ var userRead = read[userId];
7521
+
7522
+ if (userRead) {
7523
+ var _event$user2;
7524
+
7525
+ var nextUserRead = userRead;
7526
+
7527
+ if (userId === ((_event$user2 = event.user) === null || _event$user2 === void 0 ? void 0 : _event$user2.id)) {
7528
+ // The user who just sent a message to the thread has no unread messages
7529
+ // in that thread
7530
+ nextUserRead = _objectSpread$3(_objectSpread$3({}, nextUserRead), {}, {
7531
+ lastReadAt: event.created_at ? new Date(event.created_at) : new Date(),
7532
+ user: event.user,
7533
+ unreadMessageCount: 0
7534
+ });
7535
+ } else if (active && userId === _this.client.userID) ; else {
7536
+ // Increment unread count for all users except the author of the new message
7537
+ nextUserRead = _objectSpread$3(_objectSpread$3({}, nextUserRead), {}, {
7538
+ unreadMessageCount: userRead.unreadMessageCount + 1
7539
+ });
7540
+ }
7541
+
7542
+ nextRead[userId] = nextUserRead;
7543
+ }
7544
+ }
7545
+
7546
+ _this.state.partialNext({
7547
+ read: nextRead
7548
+ });
7549
+ }).unsubscribe;
7550
+ });
7551
+
7552
+ _defineProperty__default['default'](this, "subscribeRepliesRead", function () {
7553
+ return _this.client.on('message.read', function (event) {
7554
+ if (!event.user || !event.created_at || !event.thread) return;
7555
+ if (event.thread.parent_message_id !== _this.id) return;
7556
+ var userId = event.user.id;
7557
+ var createdAt = event.created_at;
7558
+ var user = event.user;
7559
+
7560
+ _this.state.next(function (current) {
7561
+ return _objectSpread$3(_objectSpread$3({}, current), {}, {
7562
+ read: _objectSpread$3(_objectSpread$3({}, current.read), {}, _defineProperty__default['default']({}, userId, {
7563
+ lastReadAt: new Date(createdAt),
7564
+ user: user,
7565
+ lastReadMessageId: event.last_read_message_id,
7566
+ unreadMessageCount: 0
7567
+ }))
7568
+ });
7569
+ });
7570
+ }).unsubscribe;
7571
+ });
7572
+
7573
+ _defineProperty__default['default'](this, "subscribeReplyDeleted", function () {
7574
+ return _this.client.on('message.deleted', function (event) {
7575
+ var _event$message2;
7576
+
7577
+ if (((_event$message2 = event.message) === null || _event$message2 === void 0 ? void 0 : _event$message2.parent_id) === _this.id && event.hard_delete) {
7578
+ return _this.deleteReplyLocally({
7579
+ message: event.message
7580
+ });
7581
+ }
7582
+ }).unsubscribe;
7583
+ });
7584
+
7585
+ _defineProperty__default['default'](this, "subscribeMessageUpdated", function () {
7586
+ var unsubscribeFunctions = ['message.updated', 'reaction.new', 'reaction.deleted'].map(function (eventType) {
7587
+ return _this.client.on(eventType, function (event) {
7588
+ if (event.message) {
7589
+ _this.updateParentMessageOrReplyLocally(event.message);
7590
+ }
7591
+ }).unsubscribe;
7592
+ });
7593
+ return function () {
7594
+ return unsubscribeFunctions.forEach(function (unsubscribe) {
7595
+ return unsubscribe();
7596
+ });
7597
+ };
7598
+ });
7599
+
7600
+ _defineProperty__default['default'](this, "unregisterSubscriptions", function () {
7601
+ _this.unsubscribeFunctions.forEach(function (cleanupFunction) {
7602
+ return cleanupFunction();
7603
+ });
7604
+
7605
+ _this.unsubscribeFunctions.clear();
7606
+ });
7607
+
7608
+ _defineProperty__default['default'](this, "deleteReplyLocally", function (_ref7) {
7609
+ var _replies$index, _replies;
7610
+
7611
+ var message = _ref7.message;
7612
+
7613
+ var _this$state$getLatest3 = _this.state.getLatestValue(),
7614
+ replies = _this$state$getLatest3.replies;
7615
+
7616
+ var index = findIndexInSortedArray({
7617
+ needle: formatMessage(message),
7618
+ sortedArray: replies,
7619
+ sortDirection: 'ascending',
7620
+ selectValueToCompare: function selectValueToCompare(reply) {
7621
+ return reply.created_at.getTime();
7622
+ }
7623
+ });
7624
+ var actualIndex = ((_replies$index = replies[index]) === null || _replies$index === void 0 ? void 0 : _replies$index.id) === message.id ? index : ((_replies = replies[index - 1]) === null || _replies === void 0 ? void 0 : _replies.id) === message.id ? index - 1 : null;
7625
+
7626
+ if (actualIndex === null) {
7627
+ return;
7628
+ }
7629
+
7630
+ var updatedReplies = _toConsumableArray__default['default'](replies);
7631
+
7632
+ updatedReplies.splice(actualIndex, 1);
7633
+
7634
+ _this.state.partialNext({
7635
+ replies: updatedReplies
7636
+ });
7637
+ });
7638
+
7639
+ _defineProperty__default['default'](this, "upsertReplyLocally", function (_ref8) {
7640
+ var message = _ref8.message,
7641
+ _ref8$timestampChange = _ref8.timestampChanged,
7642
+ timestampChanged = _ref8$timestampChange === void 0 ? false : _ref8$timestampChange;
7643
+
7644
+ if (message.parent_id !== _this.id) {
7645
+ throw new Error('Reply does not belong to this thread');
7646
+ }
7647
+
7648
+ var formattedMessage = formatMessage(message);
7649
+
7650
+ if (message.status === 'failed') {
7651
+ // store failed reply so that it's not lost when reloading or hydrating
7652
+ _this.failedRepliesMap.set(formattedMessage.id, formattedMessage);
7653
+ } else if (_this.failedRepliesMap.has(message.id)) {
7654
+ _this.failedRepliesMap.delete(message.id);
7655
+ }
7656
+
7657
+ _this.state.next(function (current) {
7658
+ return _objectSpread$3(_objectSpread$3({}, current), {}, {
7659
+ replies: addToMessageList(current.replies, formattedMessage, timestampChanged)
7660
+ });
7661
+ });
7662
+ });
7663
+
7664
+ _defineProperty__default['default'](this, "updateParentMessageLocally", function (message) {
7665
+ if (message.id !== _this.id) {
7666
+ throw new Error('Message does not belong to this thread');
7667
+ }
7668
+
7669
+ _this.state.next(function (current) {
7670
+ var _message$reply_count;
7671
+
7672
+ var formattedMessage = formatMessage(message);
7673
+
7674
+ var newData = _objectSpread$3(_objectSpread$3({}, current), {}, {
7675
+ deletedAt: formattedMessage.deleted_at,
7676
+ parentMessage: formattedMessage,
7677
+ replyCount: (_message$reply_count = message.reply_count) !== null && _message$reply_count !== void 0 ? _message$reply_count : current.replyCount
7678
+ }); // update channel on channelData change (unlikely but handled anyway)
7679
+
7680
+
7681
+ if (message.channel) {
7682
+ newData['channel'] = _this.client.channel(message.channel.type, message.channel.id, message.channel);
7683
+ }
7684
+
7685
+ return newData;
7686
+ });
7687
+ });
7688
+
7689
+ _defineProperty__default['default'](this, "updateParentMessageOrReplyLocally", function (message) {
7690
+ if (message.parent_id === _this.id) {
7691
+ _this.upsertReplyLocally({
7692
+ message: message
7693
+ });
7694
+ }
7695
+
7696
+ if (!message.parent_id && message.id === _this.id) {
7697
+ _this.updateParentMessageLocally(message);
7698
+ }
7699
+ });
7700
+
7701
+ _defineProperty__default['default'](this, "markAsRead", /*#__PURE__*/_asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2() {
7702
+ var _ref10,
7703
+ _ref10$force,
7704
+ force,
7705
+ _args2 = arguments;
7706
+
7707
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
7708
+ while (1) {
7709
+ switch (_context2.prev = _context2.next) {
7710
+ case 0:
7711
+ _ref10 = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {}, _ref10$force = _ref10.force, force = _ref10$force === void 0 ? false : _ref10$force;
7712
+
7713
+ if (!(_this.ownUnreadCount === 0 && !force)) {
7714
+ _context2.next = 3;
7715
+ break;
7716
+ }
7717
+
7718
+ return _context2.abrupt("return", null);
7719
+
7720
+ case 3:
7721
+ _context2.next = 5;
7722
+ return _this.channel.markRead({
7723
+ thread_id: _this.id
7724
+ });
7725
+
7726
+ case 5:
7727
+ return _context2.abrupt("return", _context2.sent);
7728
+
7729
+ case 6:
7730
+ case "end":
7731
+ return _context2.stop();
7732
+ }
7733
+ }
7734
+ }, _callee2);
7735
+ })));
7736
+
7737
+ _defineProperty__default['default'](this, "throttledMarkAsRead", throttle(function () {
7738
+ return _this.markAsRead();
7739
+ }, MARK_AS_READ_THROTTLE_TIMEOUT, {
7740
+ trailing: true
7741
+ }));
7742
+
7743
+ _defineProperty__default['default'](this, "queryReplies", function () {
7744
+ var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7745
+
7746
+ var _ref11$limit = _ref11.limit,
7747
+ limit = _ref11$limit === void 0 ? DEFAULT_PAGE_LIMIT : _ref11$limit,
7748
+ _ref11$sort = _ref11.sort,
7749
+ sort = _ref11$sort === void 0 ? DEFAULT_SORT : _ref11$sort,
7750
+ otherOptions = _objectWithoutProperties__default['default'](_ref11, _excluded$1);
7751
+
7752
+ return _this.channel.getReplies(_this.id, _objectSpread$3({
7753
+ limit: limit
7754
+ }, otherOptions), sort);
7755
+ });
7756
+
7757
+ _defineProperty__default['default'](this, "loadNextPage", function () {
7758
+ var _ref12 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
7759
+ _ref12$limit = _ref12.limit,
7760
+ limit = _ref12$limit === void 0 ? DEFAULT_PAGE_LIMIT : _ref12$limit;
7761
+
7762
+ return _this.loadPage(limit);
7763
+ });
7764
+
7765
+ _defineProperty__default['default'](this, "loadPrevPage", function () {
7766
+ var _ref13 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
7767
+ _ref13$limit = _ref13.limit,
7768
+ limit = _ref13$limit === void 0 ? DEFAULT_PAGE_LIMIT : _ref13$limit;
7769
+
7770
+ return _this.loadPage(-limit);
7771
+ });
7772
+
7773
+ _defineProperty__default['default'](this, "loadPage", /*#__PURE__*/function () {
7774
+ var _ref14 = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee3(count) {
7775
+ var _this$state$getLatest4, pagination, _ref15, _ref16, loadingKey, cursorKey, insertionMethodKey, queryOptions, limit, _replies$at$id, _replies$at, data, replies, maybeNextCursor;
7776
+
7777
+ return _regeneratorRuntime__default['default'].wrap(function _callee3$(_context3) {
7778
+ while (1) {
7779
+ switch (_context3.prev = _context3.next) {
7780
+ case 0:
7781
+ _this$state$getLatest4 = _this.state.getLatestValue(), pagination = _this$state$getLatest4.pagination;
7782
+ _ref15 = count > 0 ? ['isLoadingNext', 'nextCursor', 'push'] : ['isLoadingPrev', 'prevCursor', 'unshift'], _ref16 = _slicedToArray__default['default'](_ref15, 3), loadingKey = _ref16[0], cursorKey = _ref16[1], insertionMethodKey = _ref16[2];
7783
+
7784
+ if (!(pagination[loadingKey] || pagination[cursorKey] === null)) {
7785
+ _context3.next = 4;
7786
+ break;
7787
+ }
7788
+
7789
+ return _context3.abrupt("return");
7790
+
7791
+ case 4:
7792
+ queryOptions = _defineProperty__default['default']({}, count > 0 ? 'id_gt' : 'id_lt', pagination[cursorKey]);
7793
+ limit = Math.abs(count);
7794
+
7795
+ _this.state.partialNext({
7796
+ pagination: _objectSpread$3(_objectSpread$3({}, pagination), {}, _defineProperty__default['default']({}, loadingKey, true))
7797
+ });
7798
+
7799
+ _context3.prev = 7;
7800
+ _context3.next = 10;
7801
+ return _this.queryReplies(_objectSpread$3(_objectSpread$3({}, queryOptions), {}, {
7802
+ limit: limit
7803
+ }));
7804
+
7805
+ case 10:
7806
+ data = _context3.sent;
7807
+ replies = data.messages.map(formatMessage);
7808
+ maybeNextCursor = (_replies$at$id = (_replies$at = replies.at(count > 0 ? -1 : 0)) === null || _replies$at === void 0 ? void 0 : _replies$at.id) !== null && _replies$at$id !== void 0 ? _replies$at$id : null;
7809
+
7810
+ _this.state.next(function (current) {
7811
+ var _objectSpread4;
7812
+
7813
+ var nextReplies = current.replies; // prevent re-creating array if there's nothing to add to the current one
7814
+
7815
+ if (replies.length > 0) {
7816
+ var _nextReplies;
7817
+
7818
+ nextReplies = _toConsumableArray__default['default'](current.replies);
7819
+
7820
+ (_nextReplies = nextReplies)[insertionMethodKey].apply(_nextReplies, _toConsumableArray__default['default'](replies));
7821
+ }
7822
+
7823
+ return _objectSpread$3(_objectSpread$3({}, current), {}, {
7824
+ replies: nextReplies,
7825
+ pagination: _objectSpread$3(_objectSpread$3({}, current.pagination), {}, (_objectSpread4 = {}, _defineProperty__default['default'](_objectSpread4, cursorKey, data.messages.length < limit ? null : maybeNextCursor), _defineProperty__default['default'](_objectSpread4, loadingKey, false), _objectSpread4))
7826
+ });
7827
+ });
7828
+
7829
+ _context3.next = 20;
7830
+ break;
7831
+
7832
+ case 16:
7833
+ _context3.prev = 16;
7834
+ _context3.t0 = _context3["catch"](7);
7835
+
7836
+ _this.client.logger('error', _context3.t0.message);
7837
+
7838
+ _this.state.next(function (current) {
7839
+ return _objectSpread$3(_objectSpread$3({}, current), {}, {
7840
+ pagination: _objectSpread$3(_objectSpread$3({}, current.pagination), {}, _defineProperty__default['default']({}, loadingKey, false))
7841
+ });
7842
+ });
7843
+
7844
+ case 20:
7845
+ case "end":
7846
+ return _context3.stop();
7847
+ }
7848
+ }
7849
+ }, _callee3, null, [[7, 16]]);
7850
+ }));
7851
+
7852
+ return function (_x) {
7853
+ return _ref14.apply(this, arguments);
7854
+ };
7855
+ }());
7856
+
7857
+ this.state = new StateStore({
7858
+ active: false,
7859
+ channel: client.channel(threadData.channel.type, threadData.channel.id),
7860
+ createdAt: new Date(threadData.created_at),
7861
+ deletedAt: threadData.deleted_at ? new Date(threadData.deleted_at) : null,
7862
+ isLoading: false,
7863
+ isStateStale: false,
7864
+ pagination: repliesPaginationFromInitialThread(threadData),
7865
+ parentMessage: formatMessage(threadData.parent_message),
7866
+ participants: threadData.thread_participants,
7867
+ read: formatReadState((_threadData$read = threadData.read) !== null && _threadData$read !== void 0 ? _threadData$read : []),
7868
+ replies: threadData.latest_replies.map(formatMessage),
7869
+ replyCount: (_threadData$reply_cou = threadData.reply_count) !== null && _threadData$reply_cou !== void 0 ? _threadData$reply_cou : 0,
7870
+ updatedAt: threadData.updated_at ? new Date(threadData.updated_at) : null
7871
+ });
7872
+ this.id = threadData.parent_message_id;
7873
+ this.client = client;
7874
+ }
7875
+
7876
+ _createClass__default['default'](Thread, [{
7877
+ key: "channel",
7878
+ get: function get() {
7879
+ return this.state.getLatestValue().channel;
7880
+ }
7881
+ }, {
7882
+ key: "hasStaleState",
7883
+ get: function get() {
7884
+ return this.state.getLatestValue().isStateStale;
7885
+ }
7886
+ }, {
7887
+ key: "ownUnreadCount",
7888
+ get: function get() {
7889
+ return ownUnreadCountSelector(this.client.userID)(this.state.getLatestValue());
7890
+ }
7891
+ }]);
7892
+
7893
+ return Thread;
7894
+ }();
7895
+
7896
+ var formatReadState = function formatReadState(read) {
7897
+ return read.reduce(function (state, userRead) {
7898
+ var _userRead$unread_mess;
7899
+
7900
+ state[userRead.user.id] = {
7901
+ user: userRead.user,
7902
+ lastReadMessageId: userRead.last_read_message_id,
7903
+ unreadMessageCount: (_userRead$unread_mess = userRead.unread_messages) !== null && _userRead$unread_mess !== void 0 ? _userRead$unread_mess : 0,
7904
+ lastReadAt: new Date(userRead.last_read)
7905
+ };
7906
+ return state;
7907
+ }, {});
7908
+ };
7909
+
7910
+ var repliesPaginationFromInitialThread = function repliesPaginationFromInitialThread(thread) {
7911
+ var _thread$latest_replie, _thread$latest_replie2;
7912
+
7913
+ var latestRepliesContainsAllReplies = thread.latest_replies.length === thread.reply_count;
7914
+ return {
7915
+ nextCursor: null,
7916
+ prevCursor: latestRepliesContainsAllReplies ? null : (_thread$latest_replie = (_thread$latest_replie2 = thread.latest_replies.at(0)) === null || _thread$latest_replie2 === void 0 ? void 0 : _thread$latest_replie2.id) !== null && _thread$latest_replie !== void 0 ? _thread$latest_replie : null,
7917
+ isLoadingNext: false,
7918
+ isLoadingPrev: false
7919
+ };
7920
+ };
7921
+
7922
+ var ownUnreadCountSelector = function ownUnreadCountSelector(currentUserId) {
7923
+ return function (state) {
7924
+ var _state$read$currentUs;
7925
+
7926
+ return currentUserId && ((_state$read$currentUs = state.read[currentUserId]) === null || _state$read$currentUs === void 0 ? void 0 : _state$read$currentUs.unreadMessageCount) || 0;
7927
+ };
7928
+ };
7929
+
7930
+ function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
7931
+
7932
+ function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
7101
7933
  var MODERATION_ENTITY_TYPES = {
7102
7934
  user: 'stream:user',
7103
7935
  message: 'stream:chat:v1:message'
@@ -7214,7 +8046,7 @@ var Moderation = /*#__PURE__*/function () {
7214
8046
  case 0:
7215
8047
  options = _args3.length > 4 && _args3[4] !== undefined ? _args3[4] : {};
7216
8048
  _context3.next = 3;
7217
- return this.client.post(this.client.baseURL + '/api/v2/moderation/flag', _objectSpread$1({
8049
+ return this.client.post(this.client.baseURL + '/api/v2/moderation/flag', _objectSpread$2({
7218
8050
  entity_type: entityType,
7219
8051
  entity_id: entityId,
7220
8052
  entity_creator_id: entityCreatorID,
@@ -7259,7 +8091,7 @@ var Moderation = /*#__PURE__*/function () {
7259
8091
  case 0:
7260
8092
  options = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : {};
7261
8093
  _context4.next = 3;
7262
- return this.client.post(this.client.baseURL + '/api/v2/moderation/mute', _objectSpread$1({
8094
+ return this.client.post(this.client.baseURL + '/api/v2/moderation/mute', _objectSpread$2({
7263
8095
  target_ids: [targetID]
7264
8096
  }, options));
7265
8097
 
@@ -7297,7 +8129,7 @@ var Moderation = /*#__PURE__*/function () {
7297
8129
  switch (_context5.prev = _context5.next) {
7298
8130
  case 0:
7299
8131
  _context5.next = 2;
7300
- return this.client.post(this.client.baseURL + '/api/v2/moderation/unmute', _objectSpread$1({
8132
+ return this.client.post(this.client.baseURL + '/api/v2/moderation/unmute', _objectSpread$2({
7301
8133
  target_ids: [targetID]
7302
8134
  }, options));
7303
8135
 
@@ -7339,7 +8171,7 @@ var Moderation = /*#__PURE__*/function () {
7339
8171
  case 0:
7340
8172
  options = _args6.length > 1 && _args6[1] !== undefined ? _args6[1] : {};
7341
8173
  _context6.next = 3;
7342
- return this.client.get(this.client.baseURL + "/api/v2/moderation/user_report", _objectSpread$1({
8174
+ return this.client.get(this.client.baseURL + "/api/v2/moderation/user_report", _objectSpread$2({
7343
8175
  user_id: userID
7344
8176
  }, options));
7345
8177
 
@@ -7383,7 +8215,7 @@ var Moderation = /*#__PURE__*/function () {
7383
8215
  sort = _args7.length > 1 && _args7[1] !== undefined ? _args7[1] : [];
7384
8216
  options = _args7.length > 2 && _args7[2] !== undefined ? _args7[2] : {};
7385
8217
  _context7.next = 5;
7386
- return this.client.post(this.client.baseURL + '/api/v2/moderation/review_queue', _objectSpread$1({
8218
+ return this.client.post(this.client.baseURL + '/api/v2/moderation/review_queue', _objectSpread$2({
7387
8219
  filter: filterConditions,
7388
8220
  sort: normalizeQuerySort(sort)
7389
8221
  }, options));
@@ -7486,7 +8318,7 @@ var Moderation = /*#__PURE__*/function () {
7486
8318
  case 0:
7487
8319
  options = _args10.length > 2 && _args10[2] !== undefined ? _args10[2] : {};
7488
8320
  _context10.next = 3;
7489
- return this.client.post(this.client.baseURL + '/api/v2/moderation/submit_action', _objectSpread$1({
8321
+ return this.client.post(this.client.baseURL + '/api/v2/moderation/submit_action', _objectSpread$2({
7490
8322
  action_type: actionType,
7491
8323
  item_id: itemID
7492
8324
  }, options));
@@ -7513,6 +8345,454 @@ var Moderation = /*#__PURE__*/function () {
7513
8345
  return Moderation;
7514
8346
  }();
7515
8347
 
8348
+ function _createForOfIteratorHelper$1(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
8349
+
8350
+ function _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }
8351
+
8352
+ function _arrayLikeToArray$1(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
8353
+
8354
+ function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
8355
+
8356
+ function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
8357
+ var DEFAULT_CONNECTION_RECOVERY_THROTTLE_DURATION = 1000;
8358
+ var MAX_QUERY_THREADS_LIMIT = 25;
8359
+ var ThreadManager = /*#__PURE__*/function () {
8360
+ function ThreadManager(_ref) {
8361
+ var _this = this;
8362
+
8363
+ var client = _ref.client;
8364
+
8365
+ _classCallCheck__default['default'](this, ThreadManager);
8366
+
8367
+ _defineProperty__default['default'](this, "state", void 0);
8368
+
8369
+ _defineProperty__default['default'](this, "client", void 0);
8370
+
8371
+ _defineProperty__default['default'](this, "unsubscribeFunctions", new Set());
8372
+
8373
+ _defineProperty__default['default'](this, "threadsByIdGetterCache", void 0);
8374
+
8375
+ _defineProperty__default['default'](this, "activate", function () {
8376
+ _this.state.partialNext({
8377
+ active: true
8378
+ });
8379
+ });
8380
+
8381
+ _defineProperty__default['default'](this, "deactivate", function () {
8382
+ _this.state.partialNext({
8383
+ active: false
8384
+ });
8385
+ });
8386
+
8387
+ _defineProperty__default['default'](this, "registerSubscriptions", function () {
8388
+ if (_this.unsubscribeFunctions.size) return;
8389
+
8390
+ _this.unsubscribeFunctions.add(_this.subscribeUnreadThreadsCountChange());
8391
+
8392
+ _this.unsubscribeFunctions.add(_this.subscribeManageThreadSubscriptions());
8393
+
8394
+ _this.unsubscribeFunctions.add(_this.subscribeReloadOnActivation());
8395
+
8396
+ _this.unsubscribeFunctions.add(_this.subscribeNewReplies());
8397
+
8398
+ _this.unsubscribeFunctions.add(_this.subscribeRecoverAfterConnectionDrop());
8399
+ });
8400
+
8401
+ _defineProperty__default['default'](this, "subscribeUnreadThreadsCountChange", function () {
8402
+ var _ref3;
8403
+
8404
+ // initiate
8405
+ var _ref2 = (_ref3 = _this.client.user) !== null && _ref3 !== void 0 ? _ref3 : {},
8406
+ _ref2$unread_threads = _ref2.unread_threads,
8407
+ unreadThreadCount = _ref2$unread_threads === void 0 ? 0 : _ref2$unread_threads;
8408
+
8409
+ _this.state.partialNext({
8410
+ unreadThreadCount: unreadThreadCount
8411
+ });
8412
+
8413
+ var unsubscribeFunctions = ['health.check', 'notification.mark_read', 'notification.thread_message_new', 'notification.channel_deleted'].map(function (eventType) {
8414
+ return _this.client.on(eventType, function (event) {
8415
+ var _event$me;
8416
+
8417
+ var _ref4 = (_event$me = event.me) !== null && _event$me !== void 0 ? _event$me : event,
8418
+ unreadThreadCount = _ref4.unread_threads;
8419
+
8420
+ if (typeof unreadThreadCount === 'number') {
8421
+ _this.state.partialNext({
8422
+ unreadThreadCount: unreadThreadCount
8423
+ });
8424
+ }
8425
+ }).unsubscribe;
8426
+ });
8427
+ return function () {
8428
+ return unsubscribeFunctions.forEach(function (unsubscribe) {
8429
+ return unsubscribe();
8430
+ });
8431
+ };
8432
+ });
8433
+
8434
+ _defineProperty__default['default'](this, "subscribeManageThreadSubscriptions", function () {
8435
+ return _this.state.subscribeWithSelector(function (nextValue) {
8436
+ return [nextValue.threads];
8437
+ }, function (_ref5, prev) {
8438
+ var _ref6 = _slicedToArray__default['default'](_ref5, 1),
8439
+ nextThreads = _ref6[0];
8440
+
8441
+ var _ref7 = prev !== null && prev !== void 0 ? prev : [],
8442
+ _ref8 = _slicedToArray__default['default'](_ref7, 1),
8443
+ _ref8$ = _ref8[0],
8444
+ prevThreads = _ref8$ === void 0 ? [] : _ref8$; // Thread instance was removed if there's no thread with the given id at all,
8445
+ // or it was replaced with a new instance
8446
+
8447
+
8448
+ var removedThreads = prevThreads.filter(function (thread) {
8449
+ return thread !== _this.threadsById[thread.id];
8450
+ });
8451
+ nextThreads.forEach(function (thread) {
8452
+ return thread.registerSubscriptions();
8453
+ });
8454
+ removedThreads.forEach(function (thread) {
8455
+ return thread.unregisterSubscriptions();
8456
+ });
8457
+ });
8458
+ });
8459
+
8460
+ _defineProperty__default['default'](this, "subscribeReloadOnActivation", function () {
8461
+ return _this.state.subscribeWithSelector(function (nextValue) {
8462
+ return [nextValue.active];
8463
+ }, function (_ref9) {
8464
+ var _ref10 = _slicedToArray__default['default'](_ref9, 1),
8465
+ active = _ref10[0];
8466
+
8467
+ if (active) _this.reload();
8468
+ });
8469
+ });
8470
+
8471
+ _defineProperty__default['default'](this, "subscribeNewReplies", function () {
8472
+ return _this.client.on('notification.thread_message_new', function (event) {
8473
+ var _event$message;
8474
+
8475
+ var parentId = (_event$message = event.message) === null || _event$message === void 0 ? void 0 : _event$message.parent_id;
8476
+ if (!parentId) return;
8477
+
8478
+ var _this$state$getLatest = _this.state.getLatestValue(),
8479
+ unseenThreadIds = _this$state$getLatest.unseenThreadIds,
8480
+ ready = _this$state$getLatest.ready;
8481
+
8482
+ if (!ready) return;
8483
+
8484
+ if (_this.threadsById[parentId]) {
8485
+ _this.state.partialNext({
8486
+ isThreadOrderStale: true
8487
+ });
8488
+ } else if (!unseenThreadIds.includes(parentId)) {
8489
+ _this.state.partialNext({
8490
+ unseenThreadIds: unseenThreadIds.concat(parentId)
8491
+ });
8492
+ }
8493
+ }).unsubscribe;
8494
+ });
8495
+
8496
+ _defineProperty__default['default'](this, "subscribeRecoverAfterConnectionDrop", function () {
8497
+ var unsubscribeConnectionDropped = _this.client.on('connection.changed', function (event) {
8498
+ if (event.online === false) {
8499
+ _this.state.next(function (current) {
8500
+ return current.lastConnectionDropAt ? current : _objectSpread$1(_objectSpread$1({}, current), {}, {
8501
+ lastConnectionDropAt: new Date()
8502
+ });
8503
+ });
8504
+ }
8505
+ }).unsubscribe;
8506
+
8507
+ var throttledHandleConnectionRecovered = throttle(function () {
8508
+ var _this$state$getLatest2 = _this.state.getLatestValue(),
8509
+ lastConnectionDropAt = _this$state$getLatest2.lastConnectionDropAt;
8510
+
8511
+ if (!lastConnectionDropAt) return;
8512
+
8513
+ _this.reload({
8514
+ force: true
8515
+ });
8516
+ }, DEFAULT_CONNECTION_RECOVERY_THROTTLE_DURATION, {
8517
+ trailing: true
8518
+ });
8519
+
8520
+ var unsubscribeConnectionRecovered = _this.client.on('connection.recovered', throttledHandleConnectionRecovered).unsubscribe;
8521
+
8522
+ return function () {
8523
+ unsubscribeConnectionDropped();
8524
+ unsubscribeConnectionRecovered();
8525
+ };
8526
+ });
8527
+
8528
+ _defineProperty__default['default'](this, "unregisterSubscriptions", function () {
8529
+ _this.state.getLatestValue().threads.forEach(function (thread) {
8530
+ return thread.unregisterSubscriptions();
8531
+ });
8532
+
8533
+ _this.unsubscribeFunctions.forEach(function (cleanupFunction) {
8534
+ return cleanupFunction();
8535
+ });
8536
+
8537
+ _this.unsubscribeFunctions.clear();
8538
+ });
8539
+
8540
+ _defineProperty__default['default'](this, "reload", /*#__PURE__*/_asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee() {
8541
+ var _ref12,
8542
+ _ref12$force,
8543
+ force,
8544
+ _this$state$getLatest3,
8545
+ threads,
8546
+ unseenThreadIds,
8547
+ isThreadOrderStale,
8548
+ pagination,
8549
+ ready,
8550
+ limit,
8551
+ response,
8552
+ currentThreads,
8553
+ nextThreads,
8554
+ _iterator,
8555
+ _step,
8556
+ incomingThread,
8557
+ existingThread,
8558
+ _args = arguments;
8559
+
8560
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
8561
+ while (1) {
8562
+ switch (_context.prev = _context.next) {
8563
+ case 0:
8564
+ _ref12 = _args.length > 0 && _args[0] !== undefined ? _args[0] : {}, _ref12$force = _ref12.force, force = _ref12$force === void 0 ? false : _ref12$force;
8565
+ _this$state$getLatest3 = _this.state.getLatestValue(), threads = _this$state$getLatest3.threads, unseenThreadIds = _this$state$getLatest3.unseenThreadIds, isThreadOrderStale = _this$state$getLatest3.isThreadOrderStale, pagination = _this$state$getLatest3.pagination, ready = _this$state$getLatest3.ready;
8566
+
8567
+ if (!pagination.isLoading) {
8568
+ _context.next = 4;
8569
+ break;
8570
+ }
8571
+
8572
+ return _context.abrupt("return");
8573
+
8574
+ case 4:
8575
+ if (!(!force && ready && !unseenThreadIds.length && !isThreadOrderStale)) {
8576
+ _context.next = 6;
8577
+ break;
8578
+ }
8579
+
8580
+ return _context.abrupt("return");
8581
+
8582
+ case 6:
8583
+ limit = threads.length + unseenThreadIds.length;
8584
+ _context.prev = 7;
8585
+
8586
+ _this.state.next(function (current) {
8587
+ return _objectSpread$1(_objectSpread$1({}, current), {}, {
8588
+ pagination: _objectSpread$1(_objectSpread$1({}, current.pagination), {}, {
8589
+ isLoading: true
8590
+ })
8591
+ });
8592
+ });
8593
+
8594
+ _context.next = 11;
8595
+ return _this.queryThreads({
8596
+ limit: Math.min(limit, MAX_QUERY_THREADS_LIMIT)
8597
+ });
8598
+
8599
+ case 11:
8600
+ response = _context.sent;
8601
+ currentThreads = _this.threadsById;
8602
+ nextThreads = [];
8603
+ _iterator = _createForOfIteratorHelper$1(response.threads);
8604
+
8605
+ try {
8606
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
8607
+ incomingThread = _step.value;
8608
+ existingThread = currentThreads[incomingThread.id];
8609
+
8610
+ if (existingThread) {
8611
+ // Reuse thread instances if possible
8612
+ nextThreads.push(existingThread);
8613
+
8614
+ if (existingThread.hasStaleState) {
8615
+ existingThread.hydrateState(incomingThread);
8616
+ }
8617
+ } else {
8618
+ nextThreads.push(incomingThread);
8619
+ }
8620
+ }
8621
+ } catch (err) {
8622
+ _iterator.e(err);
8623
+ } finally {
8624
+ _iterator.f();
8625
+ }
8626
+
8627
+ _this.state.next(function (current) {
8628
+ var _response$next;
8629
+
8630
+ return _objectSpread$1(_objectSpread$1({}, current), {}, {
8631
+ threads: nextThreads,
8632
+ unseenThreadIds: [],
8633
+ isThreadOrderStale: false,
8634
+ pagination: _objectSpread$1(_objectSpread$1({}, current.pagination), {}, {
8635
+ isLoading: false,
8636
+ nextCursor: (_response$next = response.next) !== null && _response$next !== void 0 ? _response$next : null
8637
+ }),
8638
+ ready: true
8639
+ });
8640
+ });
8641
+
8642
+ _context.next = 23;
8643
+ break;
8644
+
8645
+ case 19:
8646
+ _context.prev = 19;
8647
+ _context.t0 = _context["catch"](7);
8648
+
8649
+ _this.client.logger('error', _context.t0.message);
8650
+
8651
+ _this.state.next(function (current) {
8652
+ return _objectSpread$1(_objectSpread$1({}, current), {}, {
8653
+ pagination: _objectSpread$1(_objectSpread$1({}, current.pagination), {}, {
8654
+ isLoading: false
8655
+ })
8656
+ });
8657
+ });
8658
+
8659
+ case 23:
8660
+ case "end":
8661
+ return _context.stop();
8662
+ }
8663
+ }
8664
+ }, _callee, null, [[7, 19]]);
8665
+ })));
8666
+
8667
+ _defineProperty__default['default'](this, "queryThreads", function () {
8668
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
8669
+ return _this.client.queryThreads(_objectSpread$1({
8670
+ limit: 25,
8671
+ participant_limit: 10,
8672
+ reply_limit: 10,
8673
+ watch: true
8674
+ }, options));
8675
+ });
8676
+
8677
+ _defineProperty__default['default'](this, "loadNextPage", /*#__PURE__*/_asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2() {
8678
+ var options,
8679
+ _this$state$getLatest4,
8680
+ pagination,
8681
+ response,
8682
+ _args2 = arguments;
8683
+
8684
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
8685
+ while (1) {
8686
+ switch (_context2.prev = _context2.next) {
8687
+ case 0:
8688
+ options = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {};
8689
+ _this$state$getLatest4 = _this.state.getLatestValue(), pagination = _this$state$getLatest4.pagination;
8690
+
8691
+ if (!(pagination.isLoadingNext || !pagination.nextCursor)) {
8692
+ _context2.next = 4;
8693
+ break;
8694
+ }
8695
+
8696
+ return _context2.abrupt("return");
8697
+
8698
+ case 4:
8699
+ _context2.prev = 4;
8700
+
8701
+ _this.state.partialNext({
8702
+ pagination: _objectSpread$1(_objectSpread$1({}, pagination), {}, {
8703
+ isLoadingNext: true
8704
+ })
8705
+ });
8706
+
8707
+ _context2.next = 8;
8708
+ return _this.queryThreads(_objectSpread$1(_objectSpread$1({}, options), {}, {
8709
+ next: pagination.nextCursor
8710
+ }));
8711
+
8712
+ case 8:
8713
+ response = _context2.sent;
8714
+
8715
+ _this.state.next(function (current) {
8716
+ var _response$next2;
8717
+
8718
+ return _objectSpread$1(_objectSpread$1({}, current), {}, {
8719
+ threads: response.threads.length ? current.threads.concat(response.threads) : current.threads,
8720
+ pagination: _objectSpread$1(_objectSpread$1({}, current.pagination), {}, {
8721
+ nextCursor: (_response$next2 = response.next) !== null && _response$next2 !== void 0 ? _response$next2 : null,
8722
+ isLoadingNext: false
8723
+ })
8724
+ });
8725
+ });
8726
+
8727
+ _context2.next = 16;
8728
+ break;
8729
+
8730
+ case 12:
8731
+ _context2.prev = 12;
8732
+ _context2.t0 = _context2["catch"](4);
8733
+
8734
+ _this.client.logger('error', _context2.t0.message);
8735
+
8736
+ _this.state.next(function (current) {
8737
+ return _objectSpread$1(_objectSpread$1({}, current), {}, {
8738
+ pagination: _objectSpread$1(_objectSpread$1({}, current.pagination), {}, {
8739
+ isLoadingNext: false
8740
+ })
8741
+ });
8742
+ });
8743
+
8744
+ case 16:
8745
+ case "end":
8746
+ return _context2.stop();
8747
+ }
8748
+ }
8749
+ }, _callee2, null, [[4, 12]]);
8750
+ })));
8751
+
8752
+ this.client = client;
8753
+ this.state = new StateStore({
8754
+ active: false,
8755
+ isThreadOrderStale: false,
8756
+ threads: [],
8757
+ unreadThreadCount: 0,
8758
+ unseenThreadIds: [],
8759
+ lastConnectionDropAt: null,
8760
+ pagination: {
8761
+ isLoading: false,
8762
+ isLoadingNext: false,
8763
+ nextCursor: null
8764
+ },
8765
+ ready: false
8766
+ });
8767
+ this.threadsByIdGetterCache = {
8768
+ threads: [],
8769
+ threadsById: {}
8770
+ };
8771
+ }
8772
+
8773
+ _createClass__default['default'](ThreadManager, [{
8774
+ key: "threadsById",
8775
+ get: function get() {
8776
+ var _this$state$getLatest5 = this.state.getLatestValue(),
8777
+ threads = _this$state$getLatest5.threads;
8778
+
8779
+ if (threads === this.threadsByIdGetterCache.threads) {
8780
+ return this.threadsByIdGetterCache.threadsById;
8781
+ }
8782
+
8783
+ var threadsById = threads.reduce(function (newThreadsById, thread) {
8784
+ newThreadsById[thread.id] = thread;
8785
+ return newThreadsById;
8786
+ }, {});
8787
+ this.threadsByIdGetterCache.threads = threads;
8788
+ this.threadsByIdGetterCache.threadsById = threadsById;
8789
+ return threadsById;
8790
+ }
8791
+ }]);
8792
+
8793
+ return ThreadManager;
8794
+ }();
8795
+
7516
8796
  var _excluded = ["created_at", "updated_at", "last_active", "online"],
7517
8797
  _excluded2 = ["params", "headers"];
7518
8798
 
@@ -7541,6 +8821,8 @@ var StreamChat = /*#__PURE__*/function () {
7541
8821
 
7542
8822
  _defineProperty__default['default'](this, "activeChannels", void 0);
7543
8823
 
8824
+ _defineProperty__default['default'](this, "threads", void 0);
8825
+
7544
8826
  _defineProperty__default['default'](this, "anonymous", void 0);
7545
8827
 
7546
8828
  _defineProperty__default['default'](this, "persistUserOnConnectionFailure", void 0);
@@ -7772,7 +9054,7 @@ var StreamChat = /*#__PURE__*/function () {
7772
9054
  tags: ['connection', 'client']
7773
9055
  });
7774
9056
 
7775
- return _context3.abrupt("return", Promise.resolve());
9057
+ return _context3.abrupt("return");
7776
9058
 
7777
9059
  case 8:
7778
9060
  _this.clientID = "".concat(_this.userID, "--").concat(randomId());
@@ -8380,8 +9662,8 @@ var StreamChat = /*#__PURE__*/function () {
8380
9662
  this.tokenManager = new TokenManager(this.secret);
8381
9663
  this.consecutiveFailures = 0;
8382
9664
  this.insightMetrics = new InsightMetrics();
8383
- this.defaultWSTimeoutWithFallback = 6000;
8384
- this.defaultWSTimeout = 15000;
9665
+ this.defaultWSTimeoutWithFallback = 6 * 1000;
9666
+ this.defaultWSTimeout = 15 * 1000;
8385
9667
  this.axiosInstance.defaults.paramsSerializer = axiosParamsSerializer;
8386
9668
  /**
8387
9669
  * logger function should accept 3 parameters:
@@ -8436,6 +9718,9 @@ var StreamChat = /*#__PURE__*/function () {
8436
9718
  return null;
8437
9719
  };
8438
9720
  this.recoverStateOnReconnect = this.options.recoverStateOnReconnect;
9721
+ this.threads = new ThreadManager({
9722
+ client: this
9723
+ });
8439
9724
  }
8440
9725
  /**
8441
9726
  * Get a client instance
@@ -9586,7 +10871,7 @@ var StreamChat = /*#__PURE__*/function () {
9586
10871
  isLatestMessageSet: true
9587
10872
  }
9588
10873
  });
9589
- return _context20.abrupt("return", this.hydrateActiveChannels(data.channels, stateOptions));
10874
+ return _context20.abrupt("return", this.hydrateActiveChannels(data.channels, stateOptions, options));
9590
10875
 
9591
10876
  case 13:
9592
10877
  case "end":
@@ -9636,7 +10921,7 @@ var StreamChat = /*#__PURE__*/function () {
9636
10921
  sort: normalizeQuerySort(sort)
9637
10922
  }, options);
9638
10923
  _context21.next = 7;
9639
- return this.post(this.baseURL + '/messages/' + messageID + '/reactions', payload);
10924
+ return this.post(this.baseURL + '/messages/' + encodeURIComponent(messageID) + '/reactions', payload);
9640
10925
 
9641
10926
  case 7:
9642
10927
  return _context21.abrupt("return", _context21.sent);
@@ -9660,9 +10945,11 @@ var StreamChat = /*#__PURE__*/function () {
9660
10945
  value: function hydrateActiveChannels() {
9661
10946
  var channelsFromApi = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
9662
10947
  var stateOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
10948
+ var queryChannelsOptions = arguments.length > 2 ? arguments[2] : undefined;
9663
10949
  var skipInitialization = stateOptions.skipInitialization,
9664
10950
  _stateOptions$offline = stateOptions.offlineMode,
9665
10951
  offlineMode = _stateOptions$offline === void 0 ? false : _stateOptions$offline;
10952
+ var channels = [];
9666
10953
 
9667
10954
  var _iterator2 = _createForOfIteratorHelper(channelsFromApi),
9668
10955
  _step2;
@@ -9672,40 +10959,42 @@ var StreamChat = /*#__PURE__*/function () {
9672
10959
  var channelState = _step2.value;
9673
10960
 
9674
10961
  this._addChannelConfig(channelState.channel);
9675
- }
9676
- } catch (err) {
9677
- _iterator2.e(err);
9678
- } finally {
9679
- _iterator2.f();
9680
- }
9681
-
9682
- var channels = [];
9683
10962
 
9684
- var _iterator3 = _createForOfIteratorHelper(channelsFromApi),
9685
- _step3;
9686
-
9687
- try {
9688
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
9689
- var _channelState = _step3.value;
9690
- var c = this.channel(_channelState.channel.type, _channelState.channel.id);
9691
- c.data = _channelState.channel;
10963
+ var c = this.channel(channelState.channel.type, channelState.channel.id);
10964
+ c.data = channelState.channel;
9692
10965
  c.offlineMode = offlineMode;
9693
10966
  c.initialized = !offlineMode;
10967
+ var updatedMessagesSet = void 0;
9694
10968
 
9695
10969
  if (skipInitialization === undefined) {
9696
- c._initializeState(_channelState, 'latest');
9697
- } else if (!skipInitialization.includes(_channelState.channel.id)) {
10970
+ var _c$_initializeState = c._initializeState(channelState, 'latest'),
10971
+ messageSet = _c$_initializeState.messageSet;
10972
+
10973
+ updatedMessagesSet = messageSet;
10974
+ } else if (!skipInitialization.includes(channelState.channel.id)) {
9698
10975
  c.state.clearMessages();
9699
10976
 
9700
- c._initializeState(_channelState, 'latest');
10977
+ var _c$_initializeState2 = c._initializeState(channelState, 'latest'),
10978
+ _messageSet = _c$_initializeState2.messageSet;
10979
+
10980
+ updatedMessagesSet = _messageSet;
10981
+ }
10982
+
10983
+ if (updatedMessagesSet) {
10984
+ updatedMessagesSet.pagination = _objectSpread(_objectSpread({}, updatedMessagesSet.pagination), messageSetPagination({
10985
+ parentSet: updatedMessagesSet,
10986
+ requestedPageSize: (queryChannelsOptions === null || queryChannelsOptions === void 0 ? void 0 : queryChannelsOptions.message_limit) || DEFAULT_QUERY_CHANNELS_MESSAGE_LIST_PAGE_SIZE,
10987
+ returnedPage: channelState.messages,
10988
+ logger: this.logger
10989
+ }));
9701
10990
  }
9702
10991
 
9703
10992
  channels.push(c);
9704
10993
  }
9705
10994
  } catch (err) {
9706
- _iterator3.e(err);
10995
+ _iterator2.e(err);
9707
10996
  } finally {
9708
- _iterator3.f();
10997
+ _iterator2.f();
9709
10998
  }
9710
10999
 
9711
11000
  return channels;
@@ -10178,25 +11467,25 @@ var StreamChat = /*#__PURE__*/function () {
10178
11467
  key: "upsertUsers",
10179
11468
  value: function () {
10180
11469
  var _upsertUsers = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee30(users) {
10181
- var userMap, _iterator4, _step4, userObject;
11470
+ var userMap, _iterator3, _step3, userObject;
10182
11471
 
10183
11472
  return _regeneratorRuntime__default['default'].wrap(function _callee30$(_context30) {
10184
11473
  while (1) {
10185
11474
  switch (_context30.prev = _context30.next) {
10186
11475
  case 0:
10187
11476
  userMap = {};
10188
- _iterator4 = _createForOfIteratorHelper(users);
11477
+ _iterator3 = _createForOfIteratorHelper(users);
10189
11478
  _context30.prev = 2;
10190
11479
 
10191
- _iterator4.s();
11480
+ _iterator3.s();
10192
11481
 
10193
11482
  case 4:
10194
- if ((_step4 = _iterator4.n()).done) {
11483
+ if ((_step3 = _iterator3.n()).done) {
10195
11484
  _context30.next = 11;
10196
11485
  break;
10197
11486
  }
10198
11487
 
10199
- userObject = _step4.value;
11488
+ userObject = _step3.value;
10200
11489
 
10201
11490
  if (userObject.id) {
10202
11491
  _context30.next = 8;
@@ -10220,12 +11509,12 @@ var StreamChat = /*#__PURE__*/function () {
10220
11509
  _context30.prev = 13;
10221
11510
  _context30.t0 = _context30["catch"](2);
10222
11511
 
10223
- _iterator4.e(_context30.t0);
11512
+ _iterator3.e(_context30.t0);
10224
11513
 
10225
11514
  case 16:
10226
11515
  _context30.prev = 16;
10227
11516
 
10228
- _iterator4.f();
11517
+ _iterator3.f();
10229
11518
 
10230
11519
  return _context30.finish(16);
10231
11520
 
@@ -10295,24 +11584,24 @@ var StreamChat = /*#__PURE__*/function () {
10295
11584
  */
10296
11585
  function () {
10297
11586
  var _partialUpdateUsers = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee31(users) {
10298
- var _iterator5, _step5, userObject;
11587
+ var _iterator4, _step4, userObject;
10299
11588
 
10300
11589
  return _regeneratorRuntime__default['default'].wrap(function _callee31$(_context31) {
10301
11590
  while (1) {
10302
11591
  switch (_context31.prev = _context31.next) {
10303
11592
  case 0:
10304
- _iterator5 = _createForOfIteratorHelper(users);
11593
+ _iterator4 = _createForOfIteratorHelper(users);
10305
11594
  _context31.prev = 1;
10306
11595
 
10307
- _iterator5.s();
11596
+ _iterator4.s();
10308
11597
 
10309
11598
  case 3:
10310
- if ((_step5 = _iterator5.n()).done) {
11599
+ if ((_step4 = _iterator4.n()).done) {
10311
11600
  _context31.next = 9;
10312
11601
  break;
10313
11602
  }
10314
11603
 
10315
- userObject = _step5.value;
11604
+ userObject = _step4.value;
10316
11605
 
10317
11606
  if (userObject.id) {
10318
11607
  _context31.next = 7;
@@ -10333,12 +11622,12 @@ var StreamChat = /*#__PURE__*/function () {
10333
11622
  _context31.prev = 11;
10334
11623
  _context31.t0 = _context31["catch"](1);
10335
11624
 
10336
- _iterator5.e(_context31.t0);
11625
+ _iterator4.e(_context31.t0);
10337
11626
 
10338
11627
  case 14:
10339
11628
  _context31.prev = 14;
10340
11629
 
10341
- _iterator5.f();
11630
+ _iterator4.f();
10342
11631
 
10343
11632
  return _context31.finish(14);
10344
11633
 
@@ -10374,7 +11663,7 @@ var StreamChat = /*#__PURE__*/function () {
10374
11663
  switch (_context32.prev = _context32.next) {
10375
11664
  case 0:
10376
11665
  _context32.next = 2;
10377
- return this.delete(this.baseURL + "/users/".concat(userID), params);
11666
+ return this.delete(this.baseURL + "/users/".concat(encodeURIComponent(userID)), params);
10378
11667
 
10379
11668
  case 2:
10380
11669
  return _context32.abrupt("return", _context32.sent);
@@ -10449,7 +11738,7 @@ var StreamChat = /*#__PURE__*/function () {
10449
11738
  switch (_context34.prev = _context34.next) {
10450
11739
  case 0:
10451
11740
  _context34.next = 2;
10452
- return this.post(this.baseURL + "/users/".concat(userID, "/reactivate"), _objectSpread({}, options));
11741
+ return this.post(this.baseURL + "/users/".concat(encodeURIComponent(userID), "/reactivate"), _objectSpread({}, options));
10453
11742
 
10454
11743
  case 2:
10455
11744
  return _context34.abrupt("return", _context34.sent);
@@ -10525,7 +11814,7 @@ var StreamChat = /*#__PURE__*/function () {
10525
11814
  switch (_context36.prev = _context36.next) {
10526
11815
  case 0:
10527
11816
  _context36.next = 2;
10528
- return this.post(this.baseURL + "/users/".concat(userID, "/deactivate"), _objectSpread({}, options));
11817
+ return this.post(this.baseURL + "/users/".concat(encodeURIComponent(userID), "/deactivate"), _objectSpread({}, options));
10529
11818
 
10530
11819
  case 2:
10531
11820
  return _context36.abrupt("return", _context36.sent);
@@ -10592,7 +11881,7 @@ var StreamChat = /*#__PURE__*/function () {
10592
11881
  switch (_context38.prev = _context38.next) {
10593
11882
  case 0:
10594
11883
  _context38.next = 2;
10595
- return this.get(this.baseURL + "/users/".concat(userID, "/export"), _objectSpread({}, options));
11884
+ return this.get(this.baseURL + "/users/".concat(encodeURIComponent(userID), "/export"), _objectSpread({}, options));
10596
11885
 
10597
11886
  case 2:
10598
11887
  return _context38.abrupt("return", _context38.sent);
@@ -11134,7 +12423,7 @@ var StreamChat = /*#__PURE__*/function () {
11134
12423
  case 0:
11135
12424
  options = _args52.length > 1 && _args52[1] !== undefined ? _args52[1] : {};
11136
12425
  _context52.next = 3;
11137
- return this.post(this.baseURL + "/calls/".concat(callID), _objectSpread({}, options));
12426
+ return this.post(this.baseURL + "/calls/".concat(encodeURIComponent(callID)), _objectSpread({}, options));
11138
12427
 
11139
12428
  case 3:
11140
12429
  return _context52.abrupt("return", _context52.sent);
@@ -11278,7 +12567,7 @@ var StreamChat = /*#__PURE__*/function () {
11278
12567
  case 0:
11279
12568
  options = _args55.length > 2 && _args55[2] !== undefined ? _args55[2] : {};
11280
12569
  _context55.next = 3;
11281
- return this.patch(this.baseURL + "/moderation/reports/".concat(id), _objectSpread({
12570
+ return this.patch(this.baseURL + "/moderation/reports/".concat(encodeURIComponent(id)), _objectSpread({
11282
12571
  review_result: reviewResult
11283
12572
  }, options));
11284
12573
 
@@ -11387,17 +12676,17 @@ var StreamChat = /*#__PURE__*/function () {
11387
12676
  }, {
11388
12677
  key: "getCommand",
11389
12678
  value: function getCommand(name) {
11390
- return this.get(this.baseURL + "/commands/".concat(name));
12679
+ return this.get(this.baseURL + "/commands/".concat(encodeURIComponent(name)));
11391
12680
  }
11392
12681
  }, {
11393
12682
  key: "updateCommand",
11394
12683
  value: function updateCommand(name, data) {
11395
- return this.put(this.baseURL + "/commands/".concat(name), data);
12684
+ return this.put(this.baseURL + "/commands/".concat(encodeURIComponent(name)), data);
11396
12685
  }
11397
12686
  }, {
11398
12687
  key: "deleteCommand",
11399
12688
  value: function deleteCommand(name) {
11400
- return this.delete(this.baseURL + "/commands/".concat(name));
12689
+ return this.delete(this.baseURL + "/commands/".concat(encodeURIComponent(name)));
11401
12690
  }
11402
12691
  }, {
11403
12692
  key: "listCommands",
@@ -11416,17 +12705,17 @@ var StreamChat = /*#__PURE__*/function () {
11416
12705
  }, {
11417
12706
  key: "getChannelType",
11418
12707
  value: function getChannelType(channelType) {
11419
- return this.get(this.baseURL + "/channeltypes/".concat(channelType));
12708
+ return this.get(this.baseURL + "/channeltypes/".concat(encodeURIComponent(channelType)));
11420
12709
  }
11421
12710
  }, {
11422
12711
  key: "updateChannelType",
11423
12712
  value: function updateChannelType(channelType, data) {
11424
- return this.put(this.baseURL + "/channeltypes/".concat(channelType), data);
12713
+ return this.put(this.baseURL + "/channeltypes/".concat(encodeURIComponent(channelType)), data);
11425
12714
  }
11426
12715
  }, {
11427
12716
  key: "deleteChannelType",
11428
12717
  value: function deleteChannelType(channelType) {
11429
- return this.delete(this.baseURL + "/channeltypes/".concat(channelType));
12718
+ return this.delete(this.baseURL + "/channeltypes/".concat(encodeURIComponent(channelType)));
11430
12719
  }
11431
12720
  }, {
11432
12721
  key: "listChannelTypes",
@@ -11451,7 +12740,7 @@ var StreamChat = /*#__PURE__*/function () {
11451
12740
  switch (_context58.prev = _context58.next) {
11452
12741
  case 0:
11453
12742
  _context58.next = 2;
11454
- return this.post(this.baseURL + "/messages/".concat(messageId, "/translate"), {
12743
+ return this.post(this.baseURL + "/messages/".concat(encodeURIComponent(messageId), "/translate"), {
11455
12744
  language: language
11456
12745
  });
11457
12746
 
@@ -11613,7 +12902,7 @@ var StreamChat = /*#__PURE__*/function () {
11613
12902
  }
11614
12903
 
11615
12904
  _context59.next = 10;
11616
- return this.post(this.baseURL + "/messages/".concat(message.id), _objectSpread({
12905
+ return this.post(this.baseURL + "/messages/".concat(encodeURIComponent(message.id)), _objectSpread({
11617
12906
  message: clonedMessage
11618
12907
  }, options));
11619
12908
 
@@ -11674,7 +12963,7 @@ var StreamChat = /*#__PURE__*/function () {
11674
12963
  }
11675
12964
 
11676
12965
  _context60.next = 6;
11677
- return this.put(this.baseURL + "/messages/".concat(id), _objectSpread(_objectSpread(_objectSpread({}, partialMessageObject), options), {}, {
12966
+ return this.put(this.baseURL + "/messages/".concat(encodeURIComponent(id)), _objectSpread(_objectSpread(_objectSpread({}, partialMessageObject), options), {}, {
11678
12967
  user: user
11679
12968
  }));
11680
12969
 
@@ -11713,7 +13002,7 @@ var StreamChat = /*#__PURE__*/function () {
11713
13002
  }
11714
13003
 
11715
13004
  _context61.next = 4;
11716
- return this.delete(this.baseURL + "/messages/".concat(messageID), params);
13005
+ return this.delete(this.baseURL + "/messages/".concat(encodeURIComponent(messageID)), params);
11717
13006
 
11718
13007
  case 4:
11719
13008
  return _context61.abrupt("return", _context61.sent);
@@ -11754,7 +13043,7 @@ var StreamChat = /*#__PURE__*/function () {
11754
13043
  switch (_context62.prev = _context62.next) {
11755
13044
  case 0:
11756
13045
  _context62.next = 2;
11757
- return this.post(this.baseURL + "/messages/".concat(messageID, "/undelete"), {
13046
+ return this.post(this.baseURL + "/messages/".concat(encodeURIComponent(messageID), "/undelete"), {
11758
13047
  undeleted_by: userID
11759
13048
  });
11760
13049
 
@@ -11839,7 +13128,10 @@ var StreamChat = /*#__PURE__*/function () {
11839
13128
  res = _context64.sent;
11840
13129
  return _context64.abrupt("return", {
11841
13130
  threads: res.threads.map(function (thread) {
11842
- return new Thread(_this5, thread);
13131
+ return new Thread({
13132
+ client: _this5,
13133
+ threadData: thread
13134
+ });
11843
13135
  }),
11844
13136
  next: res.next
11845
13137
  });
@@ -11898,11 +13190,14 @@ var StreamChat = /*#__PURE__*/function () {
11898
13190
  watch: true
11899
13191
  }, options);
11900
13192
  _context65.next = 6;
11901
- return this.get(this.baseURL + "/threads/".concat(messageId), opts);
13193
+ return this.get(this.baseURL + "/threads/".concat(encodeURIComponent(messageId)), opts);
11902
13194
 
11903
13195
  case 6:
11904
13196
  res = _context65.sent;
11905
- return _context65.abrupt("return", new Thread(this, res.thread));
13197
+ return _context65.abrupt("return", new Thread({
13198
+ client: this,
13199
+ threadData: res.thread
13200
+ }));
11906
13201
 
11907
13202
  case 8:
11908
13203
  case "end":
@@ -11971,7 +13266,7 @@ var StreamChat = /*#__PURE__*/function () {
11971
13266
 
11972
13267
  case 10:
11973
13268
  _context66.next = 12;
11974
- return this.patch(this.baseURL + "/threads/".concat(messageId), partialThreadObject);
13269
+ return this.patch(this.baseURL + "/threads/".concat(encodeURIComponent(messageId)), partialThreadObject);
11975
13270
 
11976
13271
  case 12:
11977
13272
  return _context66.abrupt("return", _context66.sent);
@@ -11993,7 +13288,7 @@ var StreamChat = /*#__PURE__*/function () {
11993
13288
  }, {
11994
13289
  key: "getUserAgent",
11995
13290
  value: function getUserAgent() {
11996
- return this.userAgent || "stream-chat-javascript-client-".concat(this.node ? 'node' : 'browser', "-", "8.38.0");
13291
+ return this.userAgent || "stream-chat-javascript-client-".concat(this.node ? 'node' : 'browser', "-", "8.40.0");
11997
13292
  }
11998
13293
  }, {
11999
13294
  key: "setUserAgent",
@@ -12103,7 +13398,7 @@ var StreamChat = /*#__PURE__*/function () {
12103
13398
  }, {
12104
13399
  key: "getPermission",
12105
13400
  value: function getPermission(name) {
12106
- return this.get("".concat(this.baseURL, "/permissions/").concat(name));
13401
+ return this.get("".concat(this.baseURL, "/permissions/").concat(encodeURIComponent(name)));
12107
13402
  }
12108
13403
  /** createPermission - creates a custom permission
12109
13404
  *
@@ -12126,7 +13421,7 @@ var StreamChat = /*#__PURE__*/function () {
12126
13421
  }, {
12127
13422
  key: "updatePermission",
12128
13423
  value: function updatePermission(id, permissionData) {
12129
- return this.put("".concat(this.baseURL, "/permissions/").concat(id), _objectSpread({}, permissionData));
13424
+ return this.put("".concat(this.baseURL, "/permissions/").concat(encodeURIComponent(id)), _objectSpread({}, permissionData));
12130
13425
  }
12131
13426
  /** deletePermission - deletes a custom permission
12132
13427
  *
@@ -12137,7 +13432,7 @@ var StreamChat = /*#__PURE__*/function () {
12137
13432
  }, {
12138
13433
  key: "deletePermission",
12139
13434
  value: function deletePermission(name) {
12140
- return this.delete("".concat(this.baseURL, "/permissions/").concat(name));
13435
+ return this.delete("".concat(this.baseURL, "/permissions/").concat(encodeURIComponent(name)));
12141
13436
  }
12142
13437
  /** listPermissions - returns the list of all permissions for this application
12143
13438
  *
@@ -12181,7 +13476,7 @@ var StreamChat = /*#__PURE__*/function () {
12181
13476
  }, {
12182
13477
  key: "deleteRole",
12183
13478
  value: function deleteRole(name) {
12184
- return this.delete("".concat(this.baseURL, "/roles/").concat(name));
13479
+ return this.delete("".concat(this.baseURL, "/roles/").concat(encodeURIComponent(name)));
12185
13480
  }
12186
13481
  /** sync - returns all events that happened for a list of channels since last sync
12187
13482
  * @param {string[]} channel_cids list of channel CIDs
@@ -12218,7 +13513,7 @@ var StreamChat = /*#__PURE__*/function () {
12218
13513
  switch (_context67.prev = _context67.next) {
12219
13514
  case 0:
12220
13515
  _context67.next = 2;
12221
- return this.post("".concat(this.baseURL, "/users/").concat(targetUserID, "/event"), {
13516
+ return this.post("".concat(this.baseURL, "/users/").concat(encodeURIComponent(targetUserID), "/event"), {
12222
13517
  event: event
12223
13518
  });
12224
13519
 
@@ -12252,17 +13547,17 @@ var StreamChat = /*#__PURE__*/function () {
12252
13547
  }, {
12253
13548
  key: "getBlockList",
12254
13549
  value: function getBlockList(name) {
12255
- return this.get("".concat(this.baseURL, "/blocklists/").concat(name));
13550
+ return this.get("".concat(this.baseURL, "/blocklists/").concat(encodeURIComponent(name)));
12256
13551
  }
12257
13552
  }, {
12258
13553
  key: "updateBlockList",
12259
13554
  value: function updateBlockList(name, data) {
12260
- return this.put("".concat(this.baseURL, "/blocklists/").concat(name), data);
13555
+ return this.put("".concat(this.baseURL, "/blocklists/").concat(encodeURIComponent(name)), data);
12261
13556
  }
12262
13557
  }, {
12263
13558
  key: "deleteBlockList",
12264
13559
  value: function deleteBlockList(name) {
12265
- return this.delete("".concat(this.baseURL, "/blocklists/").concat(name));
13560
+ return this.delete("".concat(this.baseURL, "/blocklists/").concat(encodeURIComponent(name)));
12266
13561
  }
12267
13562
  }, {
12268
13563
  key: "exportChannels",
@@ -12288,7 +13583,7 @@ var StreamChat = /*#__PURE__*/function () {
12288
13583
  }, {
12289
13584
  key: "getExportChannelStatus",
12290
13585
  value: function getExportChannelStatus(id) {
12291
- return this.get("".concat(this.baseURL, "/export_channels/").concat(id));
13586
+ return this.get("".concat(this.baseURL, "/export_channels/").concat(encodeURIComponent(id)));
12292
13587
  }
12293
13588
  }, {
12294
13589
  key: "campaign",
@@ -12436,7 +13731,7 @@ var StreamChat = /*#__PURE__*/function () {
12436
13731
  switch (_context71.prev = _context71.next) {
12437
13732
  case 0:
12438
13733
  this.validateServerSideAuth();
12439
- return _context71.abrupt("return", this.get(this.baseURL + "/segments/".concat(id)));
13734
+ return _context71.abrupt("return", this.get(this.baseURL + "/segments/".concat(encodeURIComponent(id))));
12440
13735
 
12441
13736
  case 2:
12442
13737
  case "end":
@@ -12470,7 +13765,7 @@ var StreamChat = /*#__PURE__*/function () {
12470
13765
  switch (_context72.prev = _context72.next) {
12471
13766
  case 0:
12472
13767
  this.validateServerSideAuth();
12473
- return _context72.abrupt("return", this.put(this.baseURL + "/segments/".concat(id), data));
13768
+ return _context72.abrupt("return", this.put(this.baseURL + "/segments/".concat(encodeURIComponent(id)), data));
12474
13769
 
12475
13770
  case 2:
12476
13771
  case "end":
@@ -12508,7 +13803,7 @@ var StreamChat = /*#__PURE__*/function () {
12508
13803
  body = {
12509
13804
  target_ids: targets
12510
13805
  };
12511
- return _context73.abrupt("return", this.post(this.baseURL + "/segments/".concat(id, "/addtargets"), body));
13806
+ return _context73.abrupt("return", this.post(this.baseURL + "/segments/".concat(encodeURIComponent(id), "/addtargets"), body));
12512
13807
 
12513
13808
  case 3:
12514
13809
  case "end":
@@ -12540,7 +13835,7 @@ var StreamChat = /*#__PURE__*/function () {
12540
13835
  sort = _args74.length > 2 && _args74[2] !== undefined ? _args74[2] : [];
12541
13836
  options = _args74.length > 3 && _args74[3] !== undefined ? _args74[3] : {};
12542
13837
  this.validateServerSideAuth();
12543
- return _context74.abrupt("return", this.post(this.baseURL + "/segments/".concat(id, "/targets/query"), _objectSpread({
13838
+ return _context74.abrupt("return", this.post(this.baseURL + "/segments/".concat(encodeURIComponent(id), "/targets/query"), _objectSpread({
12544
13839
  filter: filter || {},
12545
13840
  sort: sort || []
12546
13841
  }, options)));
@@ -12581,7 +13876,7 @@ var StreamChat = /*#__PURE__*/function () {
12581
13876
  body = {
12582
13877
  target_ids: targets
12583
13878
  };
12584
- return _context75.abrupt("return", this.post(this.baseURL + "/segments/".concat(id, "/deletetargets"), body));
13879
+ return _context75.abrupt("return", this.post(this.baseURL + "/segments/".concat(encodeURIComponent(id), "/deletetargets"), body));
12585
13880
 
12586
13881
  case 3:
12587
13882
  case "end":
@@ -12654,7 +13949,7 @@ var StreamChat = /*#__PURE__*/function () {
12654
13949
  switch (_context77.prev = _context77.next) {
12655
13950
  case 0:
12656
13951
  this.validateServerSideAuth();
12657
- return _context77.abrupt("return", this.delete(this.baseURL + "/segments/".concat(id)));
13952
+ return _context77.abrupt("return", this.delete(this.baseURL + "/segments/".concat(encodeURIComponent(id))));
12658
13953
 
12659
13954
  case 2:
12660
13955
  case "end":
@@ -12688,7 +13983,7 @@ var StreamChat = /*#__PURE__*/function () {
12688
13983
  switch (_context78.prev = _context78.next) {
12689
13984
  case 0:
12690
13985
  this.validateServerSideAuth();
12691
- return _context78.abrupt("return", this.get(this.baseURL + "/segments/".concat(segmentId, "/target/").concat(targetId)));
13986
+ return _context78.abrupt("return", this.get(this.baseURL + "/segments/".concat(encodeURIComponent(segmentId), "/target/").concat(encodeURIComponent(targetId))));
12692
13987
 
12693
13988
  case 2:
12694
13989
  case "end":
@@ -12746,7 +14041,7 @@ var StreamChat = /*#__PURE__*/function () {
12746
14041
  switch (_context80.prev = _context80.next) {
12747
14042
  case 0:
12748
14043
  this.validateServerSideAuth();
12749
- return _context80.abrupt("return", this.get(this.baseURL + "/campaigns/".concat(id)));
14044
+ return _context80.abrupt("return", this.get(this.baseURL + "/campaigns/".concat(encodeURIComponent(id))));
12750
14045
 
12751
14046
  case 2:
12752
14047
  case "end":
@@ -12771,7 +14066,7 @@ var StreamChat = /*#__PURE__*/function () {
12771
14066
  switch (_context81.prev = _context81.next) {
12772
14067
  case 0:
12773
14068
  this.validateServerSideAuth();
12774
- return _context81.abrupt("return", this.post(this.baseURL + "/campaigns/".concat(id, "/start"), {
14069
+ return _context81.abrupt("return", this.post(this.baseURL + "/campaigns/".concat(encodeURIComponent(id), "/start"), {
12775
14070
  scheduled_for: options === null || options === void 0 ? void 0 : options.scheduledFor,
12776
14071
  stop_at: options === null || options === void 0 ? void 0 : options.stopAt
12777
14072
  }));
@@ -12847,7 +14142,7 @@ var StreamChat = /*#__PURE__*/function () {
12847
14142
  switch (_context83.prev = _context83.next) {
12848
14143
  case 0:
12849
14144
  this.validateServerSideAuth();
12850
- return _context83.abrupt("return", this.put(this.baseURL + "/campaigns/".concat(id), params));
14145
+ return _context83.abrupt("return", this.put(this.baseURL + "/campaigns/".concat(encodeURIComponent(id)), params));
12851
14146
 
12852
14147
  case 2:
12853
14148
  case "end":
@@ -12880,7 +14175,7 @@ var StreamChat = /*#__PURE__*/function () {
12880
14175
  switch (_context84.prev = _context84.next) {
12881
14176
  case 0:
12882
14177
  this.validateServerSideAuth();
12883
- return _context84.abrupt("return", this.delete(this.baseURL + "/campaigns/".concat(id)));
14178
+ return _context84.abrupt("return", this.delete(this.baseURL + "/campaigns/".concat(encodeURIComponent(id))));
12884
14179
 
12885
14180
  case 2:
12886
14181
  case "end":
@@ -12913,7 +14208,7 @@ var StreamChat = /*#__PURE__*/function () {
12913
14208
  switch (_context85.prev = _context85.next) {
12914
14209
  case 0:
12915
14210
  this.validateServerSideAuth();
12916
- return _context85.abrupt("return", this.post(this.baseURL + "/campaigns/".concat(id, "/stop")));
14211
+ return _context85.abrupt("return", this.post(this.baseURL + "/campaigns/".concat(encodeURIComponent(id), "/stop")));
12917
14212
 
12918
14213
  case 2:
12919
14214
  case "end":
@@ -12978,7 +14273,7 @@ var StreamChat = /*#__PURE__*/function () {
12978
14273
  while (1) {
12979
14274
  switch (_context87.prev = _context87.next) {
12980
14275
  case 0:
12981
- return _context87.abrupt("return", this.get("".concat(this.baseURL, "/tasks/").concat(id)));
14276
+ return _context87.abrupt("return", this.get("".concat(this.baseURL, "/tasks/").concat(encodeURIComponent(id))));
12982
14277
 
12983
14278
  case 1:
12984
14279
  case "end":
@@ -13215,7 +14510,7 @@ var StreamChat = /*#__PURE__*/function () {
13215
14510
  switch (_context92.prev = _context92.next) {
13216
14511
  case 0:
13217
14512
  _context92.next = 2;
13218
- return this.get(this.baseURL + "/imports/".concat(id));
14513
+ return this.get(this.baseURL + "/imports/".concat(encodeURIComponent(id)));
13219
14514
 
13220
14515
  case 2:
13221
14516
  return _context92.abrupt("return", _context92.sent);
@@ -13336,7 +14631,7 @@ var StreamChat = /*#__PURE__*/function () {
13336
14631
  case 0:
13337
14632
  type = _ref10.type, name = _ref10.name;
13338
14633
  _context95.next = 3;
13339
- return this.delete(this.baseURL + "/push_providers/".concat(type, "/").concat(name));
14634
+ return this.delete(this.baseURL + "/push_providers/".concat(encodeURIComponent(type), "/").concat(encodeURIComponent(name)));
13340
14635
 
13341
14636
  case 3:
13342
14637
  return _context95.abrupt("return", _context95.sent);
@@ -13416,7 +14711,7 @@ var StreamChat = /*#__PURE__*/function () {
13416
14711
  switch (_context97.prev = _context97.next) {
13417
14712
  case 0:
13418
14713
  _context97.next = 2;
13419
- return this.post(this.baseURL + "/messages/".concat(id, "/commit"));
14714
+ return this.post(this.baseURL + "/messages/".concat(encodeURIComponent(id), "/commit"));
13420
14715
 
13421
14716
  case 2:
13422
14717
  return _context97.abrupt("return", _context97.sent);
@@ -13488,7 +14783,7 @@ var StreamChat = /*#__PURE__*/function () {
13488
14783
  switch (_context99.prev = _context99.next) {
13489
14784
  case 0:
13490
14785
  _context99.next = 2;
13491
- return this.get(this.baseURL + "/polls/".concat(id), userId ? {
14786
+ return this.get(this.baseURL + "/polls/".concat(encodeURIComponent(id)), userId ? {
13492
14787
  user_id: userId
13493
14788
  } : {});
13494
14789
 
@@ -13564,7 +14859,7 @@ var StreamChat = /*#__PURE__*/function () {
13564
14859
  switch (_context101.prev = _context101.next) {
13565
14860
  case 0:
13566
14861
  _context101.next = 2;
13567
- return this.patch(this.baseURL + "/polls/".concat(id), _objectSpread(_objectSpread({}, partialPollObject), userId ? {
14862
+ return this.patch(this.baseURL + "/polls/".concat(encodeURIComponent(id)), _objectSpread(_objectSpread({}, partialPollObject), userId ? {
13568
14863
  user_id: userId
13569
14864
  } : {}));
13570
14865
 
@@ -13601,7 +14896,7 @@ var StreamChat = /*#__PURE__*/function () {
13601
14896
  switch (_context102.prev = _context102.next) {
13602
14897
  case 0:
13603
14898
  _context102.next = 2;
13604
- return this.delete(this.baseURL + "/polls/".concat(id), _objectSpread({}, userId ? {
14899
+ return this.delete(this.baseURL + "/polls/".concat(encodeURIComponent(id)), _objectSpread({}, userId ? {
13605
14900
  user_id: userId
13606
14901
  } : {}));
13607
14902
 
@@ -13676,7 +14971,7 @@ var StreamChat = /*#__PURE__*/function () {
13676
14971
  switch (_context104.prev = _context104.next) {
13677
14972
  case 0:
13678
14973
  _context104.next = 2;
13679
- return this.post(this.baseURL + "/polls/".concat(pollId, "/options"), _objectSpread(_objectSpread({}, option), userId ? {
14974
+ return this.post(this.baseURL + "/polls/".concat(encodeURIComponent(pollId), "/options"), _objectSpread(_objectSpread({}, option), userId ? {
13680
14975
  user_id: userId
13681
14976
  } : {}));
13682
14977
 
@@ -13714,7 +15009,7 @@ var StreamChat = /*#__PURE__*/function () {
13714
15009
  switch (_context105.prev = _context105.next) {
13715
15010
  case 0:
13716
15011
  _context105.next = 2;
13717
- return this.get(this.baseURL + "/polls/".concat(pollId, "/options/").concat(optionId), userId ? {
15012
+ return this.get(this.baseURL + "/polls/".concat(encodeURIComponent(pollId), "/options/").concat(encodeURIComponent(optionId)), userId ? {
13718
15013
  user_id: userId
13719
15014
  } : {});
13720
15015
 
@@ -13752,7 +15047,7 @@ var StreamChat = /*#__PURE__*/function () {
13752
15047
  switch (_context106.prev = _context106.next) {
13753
15048
  case 0:
13754
15049
  _context106.next = 2;
13755
- return this.put(this.baseURL + "/polls/".concat(pollId, "/options"), _objectSpread(_objectSpread({}, option), userId ? {
15050
+ return this.put(this.baseURL + "/polls/".concat(encodeURIComponent(pollId), "/options"), _objectSpread(_objectSpread({}, option), userId ? {
13756
15051
  user_id: userId
13757
15052
  } : {}));
13758
15053
 
@@ -13790,7 +15085,7 @@ var StreamChat = /*#__PURE__*/function () {
13790
15085
  switch (_context107.prev = _context107.next) {
13791
15086
  case 0:
13792
15087
  _context107.next = 2;
13793
- return this.delete(this.baseURL + "/polls/".concat(pollId, "/options/").concat(optionId), userId ? {
15088
+ return this.delete(this.baseURL + "/polls/".concat(encodeURIComponent(pollId), "/options/").concat(encodeURIComponent(optionId)), userId ? {
13794
15089
  user_id: userId
13795
15090
  } : {});
13796
15091
 
@@ -13829,7 +15124,7 @@ var StreamChat = /*#__PURE__*/function () {
13829
15124
  switch (_context108.prev = _context108.next) {
13830
15125
  case 0:
13831
15126
  _context108.next = 2;
13832
- return this.post(this.baseURL + "/messages/".concat(messageId, "/polls/").concat(pollId, "/vote"), _objectSpread({
15127
+ return this.post(this.baseURL + "/messages/".concat(encodeURIComponent(messageId), "/polls/").concat(encodeURIComponent(pollId), "/vote"), _objectSpread({
13833
15128
  vote: vote
13834
15129
  }, userId ? {
13835
15130
  user_id: userId
@@ -13895,7 +15190,7 @@ var StreamChat = /*#__PURE__*/function () {
13895
15190
  switch (_context110.prev = _context110.next) {
13896
15191
  case 0:
13897
15192
  _context110.next = 2;
13898
- return this.delete(this.baseURL + "/messages/".concat(messageId, "/polls/").concat(pollId, "/vote/").concat(voteId), _objectSpread({}, userId ? {
15193
+ return this.delete(this.baseURL + "/messages/".concat(encodeURIComponent(messageId), "/polls/").concat(encodeURIComponent(pollId), "/vote/").concat(encodeURIComponent(voteId)), _objectSpread({}, userId ? {
13899
15194
  user_id: userId
13900
15195
  } : {}));
13901
15196
 
@@ -13997,7 +15292,7 @@ var StreamChat = /*#__PURE__*/function () {
13997
15292
  userId = _args112.length > 4 ? _args112[4] : undefined;
13998
15293
  q = userId ? "?user_id=".concat(userId) : '';
13999
15294
  _context112.next = 7;
14000
- return this.post(this.baseURL + "/polls/".concat(pollId, "/votes").concat(q), _objectSpread({
15295
+ return this.post(this.baseURL + "/polls/".concat(encodeURIComponent(pollId), "/votes").concat(q), _objectSpread({
14001
15296
  filter: filter,
14002
15297
  sort: normalizeQuerySort(sort)
14003
15298
  }, options));
@@ -14286,8 +15581,10 @@ exports.Moderation = Moderation;
14286
15581
  exports.Permission = Permission;
14287
15582
  exports.Segment = Segment;
14288
15583
  exports.StableWSConnection = StableWSConnection;
15584
+ exports.StateStore = StateStore;
14289
15585
  exports.StreamChat = StreamChat;
14290
15586
  exports.Thread = Thread;
15587
+ exports.ThreadManager = ThreadManager;
14291
15588
  exports.TokenManager = TokenManager;
14292
15589
  exports.UserFromToken = UserFromToken;
14293
15590
  exports.buildWsFatalInsight = buildWsFatalInsight;