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/index.js CHANGED
@@ -122,9 +122,9 @@ var decodeBase64 = function decodeBase64(s) {
122
122
  return r;
123
123
  };
124
124
 
125
- 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; }
125
+ 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; }
126
126
 
127
- 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; }
127
+ 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; }
128
128
 
129
129
  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; } } }; }
130
130
 
@@ -378,89 +378,120 @@ var axiosParamsSerializer = function axiosParamsSerializer(params) {
378
378
  return newParams.join('&');
379
379
  };
380
380
  /**
381
- * formatMessage - Takes the message object. Parses the dates, sets __html
382
- * and sets the status to received if missing. Returns a message object
383
- *
384
- * @param {MessageResponse<StreamChatGenerics>} message a message object
381
+ * Takes the message object, parses the dates, sets `__html`
382
+ * and sets the status to `received` if missing; returns a new message object.
385
383
  *
384
+ * @param {MessageResponse<StreamChatGenerics>} message `MessageResponse` object
386
385
  */
387
386
 
388
387
  function formatMessage(message) {
389
- return _objectSpread$9(_objectSpread$9({}, message), {}, {
388
+ return _objectSpread$b(_objectSpread$b({}, message), {}, {
390
389
  /**
391
390
  * @deprecated please use `html`
392
391
  */
393
392
  __html: message.html,
394
- // parse the date..
393
+ // parse the dates
395
394
  pinned_at: message.pinned_at ? new Date(message.pinned_at) : null,
396
395
  created_at: message.created_at ? new Date(message.created_at) : new Date(),
397
396
  updated_at: message.updated_at ? new Date(message.updated_at) : new Date(),
397
+ deleted_at: message.deleted_at ? new Date(message.deleted_at) : null,
398
398
  status: message.status || 'received',
399
399
  reaction_groups: maybeGetReactionGroupsFallback(message.reaction_groups, message.reaction_counts, message.reaction_scores)
400
400
  });
401
401
  }
402
- function addToMessageList(messages, message) {
402
+ var findIndexInSortedArray = function findIndexInSortedArray(_ref) {
403
+ var needle = _ref.needle,
404
+ sortedArray = _ref.sortedArray,
405
+ _ref$selectValueToCom = _ref.selectValueToCompare,
406
+ selectValueToCompare = _ref$selectValueToCom === void 0 ? function (e) {
407
+ return e;
408
+ } : _ref$selectValueToCom,
409
+ _ref$sortDirection = _ref.sortDirection,
410
+ sortDirection = _ref$sortDirection === void 0 ? 'ascending' : _ref$sortDirection;
411
+ if (!sortedArray.length) return 0;
412
+ var left = 0;
413
+ var right = sortedArray.length - 1;
414
+ var middle = 0;
415
+
416
+ var recalculateMiddle = function recalculateMiddle() {
417
+ middle = Math.round((left + right) / 2);
418
+ };
419
+
420
+ var actualNeedle = selectValueToCompare(needle);
421
+ recalculateMiddle();
422
+
423
+ while (left <= right) {
424
+ // if (actualNeedle === selectValueToCompare(sortedArray[middle])) return middle;
425
+ if (sortDirection === 'ascending' && actualNeedle < selectValueToCompare(sortedArray[middle]) || sortDirection === 'descending' && actualNeedle > selectValueToCompare(sortedArray[middle])) {
426
+ right = middle - 1;
427
+ } else {
428
+ left = middle + 1;
429
+ }
430
+
431
+ recalculateMiddle();
432
+ }
433
+
434
+ return left;
435
+ };
436
+ function addToMessageList(messages, newMessage) {
403
437
  var timestampChanged = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
404
438
  var sortBy = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'created_at';
405
439
  var addIfDoesNotExist = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
406
440
  var addMessageToList = addIfDoesNotExist || timestampChanged;
407
- var messageArr = messages; // if created_at has changed, message should be filtered and re-inserted in correct order
441
+
442
+ var newMessages = _toConsumableArray__default['default'](messages); // if created_at has changed, message should be filtered and re-inserted in correct order
408
443
  // slow op but usually this only happens for a message inserted to state before actual response with correct timestamp
409
444
 
445
+
410
446
  if (timestampChanged) {
411
- messageArr = messageArr.filter(function (msg) {
412
- return !(msg.id && message.id === msg.id);
447
+ newMessages = newMessages.filter(function (message) {
448
+ return !(message.id && newMessage.id === message.id);
413
449
  });
414
- } // Get array length after filtering
450
+ } // for empty list just concat and return unless it's an update or deletion
415
451
 
416
452
 
417
- var messageArrayLength = messageArr.length; // for empty list just concat and return unless it's an update or deletion
453
+ if (!newMessages.length && addMessageToList) {
454
+ return newMessages.concat(newMessage);
455
+ } // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
418
456
 
419
- if (messageArrayLength === 0 && addMessageToList) {
420
- return messageArr.concat(message);
421
- } else if (messageArrayLength === 0) {
422
- return _toConsumableArray__default['default'](messageArr);
423
- }
424
457
 
425
- var messageTime = message[sortBy].getTime();
426
- 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
458
+ var messageTime = newMessage[sortBy].getTime(); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
459
+
460
+ 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
427
461
 
428
462
  if (messageIsNewest && addMessageToList) {
429
- return messageArr.concat(message);
430
- } else if (messageIsNewest) {
431
- return _toConsumableArray__default['default'](messageArr);
463
+ return newMessages.concat(newMessage);
432
464
  } // find the closest index to push the new message
433
465
 
434
466
 
435
- var left = 0;
436
- var middle = 0;
437
- var right = messageArrayLength - 1;
438
-
439
- while (left <= right) {
440
- middle = Math.floor((right + left) / 2);
441
- if (messageArr[middle][sortBy].getTime() <= messageTime) left = middle + 1;else right = middle - 1;
442
- } // message already exists and not filtered due to timestampChanged, update and return
443
-
467
+ var insertionIndex = findIndexInSortedArray({
468
+ needle: newMessage,
469
+ sortedArray: messages,
470
+ sortDirection: 'ascending',
471
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
472
+ selectValueToCompare: function selectValueToCompare(m) {
473
+ return m[sortBy].getTime();
474
+ }
475
+ }); // message already exists and not filtered with timestampChanged, update and return
444
476
 
445
- if (!timestampChanged && message.id) {
446
- if (messageArr[left] && message.id === messageArr[left].id) {
447
- messageArr[left] = message;
448
- return _toConsumableArray__default['default'](messageArr);
477
+ if (!timestampChanged && newMessage.id) {
478
+ if (newMessages[insertionIndex] && newMessage.id === newMessages[insertionIndex].id) {
479
+ newMessages[insertionIndex] = newMessage;
480
+ return newMessages;
449
481
  }
450
482
 
451
- if (messageArr[left - 1] && message.id === messageArr[left - 1].id) {
452
- messageArr[left - 1] = message;
453
- return _toConsumableArray__default['default'](messageArr);
483
+ if (newMessages[insertionIndex - 1] && newMessage.id === newMessages[insertionIndex - 1].id) {
484
+ newMessages[insertionIndex - 1] = newMessage;
485
+ return newMessages;
454
486
  }
455
- } // Do not add updated or deleted messages to the list if they do not already exist
456
- // or have a timestamp change.
487
+ } // do not add updated or deleted messages to the list if they already exist or come with a timestamp change
457
488
 
458
489
 
459
490
  if (addMessageToList) {
460
- messageArr.splice(left, 0, message);
491
+ newMessages.splice(insertionIndex, 0, newMessage);
461
492
  }
462
493
 
463
- return _toConsumableArray__default['default'](messageArr);
494
+ return newMessages;
464
495
  }
465
496
 
466
497
  function maybeGetReactionGroupsFallback(groups, counts, scores) {
@@ -483,11 +514,259 @@ function maybeGetReactionGroupsFallback(groups, counts, scores) {
483
514
  }
484
515
 
485
516
  return null;
517
+ } // works exactly the same as lodash.throttle
518
+
519
+
520
+ var throttle = function throttle(fn) {
521
+ var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 200;
522
+
523
+ var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
524
+ _ref2$leading = _ref2.leading,
525
+ leading = _ref2$leading === void 0 ? true : _ref2$leading,
526
+ _ref2$trailing = _ref2.trailing,
527
+ trailing = _ref2$trailing === void 0 ? false : _ref2$trailing;
528
+
529
+ var runningTimeout = null;
530
+ var storedArgs = null;
531
+ return function () {
532
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
533
+ args[_key] = arguments[_key];
534
+ }
535
+
536
+ if (runningTimeout) {
537
+ if (trailing) storedArgs = args;
538
+ return;
539
+ }
540
+
541
+ if (leading) fn.apply(void 0, args);
542
+
543
+ var timeoutHandler = function timeoutHandler() {
544
+ if (storedArgs) {
545
+ fn.apply(void 0, _toConsumableArray__default['default'](storedArgs));
546
+ storedArgs = null;
547
+ runningTimeout = setTimeout(timeoutHandler, timeout);
548
+ return;
549
+ }
550
+
551
+ runningTimeout = null;
552
+ };
553
+
554
+ runningTimeout = setTimeout(timeoutHandler, timeout);
555
+ };
556
+ };
557
+ function binarySearchByDateEqualOrNearestGreater(array, targetDate) {
558
+ var left = 0;
559
+ var right = array.length - 1;
560
+
561
+ while (left <= right) {
562
+ var mid = Math.floor((left + right) / 2);
563
+ var midCreatedAt = array[mid].created_at;
564
+
565
+ if (!midCreatedAt) {
566
+ left += 1;
567
+ continue;
568
+ }
569
+
570
+ var midDate = new Date(midCreatedAt);
571
+
572
+ if (midDate.getTime() === targetDate.getTime()) {
573
+ return mid;
574
+ } else if (midDate.getTime() < targetDate.getTime()) {
575
+ left = mid + 1;
576
+ } else {
577
+ right = mid - 1;
578
+ }
579
+ }
580
+
581
+ return left;
486
582
  }
487
583
 
488
- 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; }
584
+ var messagePaginationCreatedAtAround = function messagePaginationCreatedAtAround(_ref3) {
585
+ var parentSet = _ref3.parentSet,
586
+ requestedPageSize = _ref3.requestedPageSize,
587
+ returnedPage = _ref3.returnedPage,
588
+ messagePaginationOptions = _ref3.messagePaginationOptions;
589
+
590
+ var newPagination = _objectSpread$b({}, parentSet.pagination);
591
+
592
+ if (!(messagePaginationOptions !== null && messagePaginationOptions !== void 0 && messagePaginationOptions.created_at_around)) return newPagination;
593
+ var hasPrev;
594
+ var hasNext;
595
+ var updateHasPrev;
596
+ var updateHasNext;
597
+ var createdAtAroundDate = new Date(messagePaginationOptions.created_at_around);
598
+ var _ref4 = [returnedPage[0], returnedPage.slice(-1)[0]],
599
+ firstPageMsg = _ref4[0],
600
+ lastPageMsg = _ref4[1]; // expect ASC order (from oldest to newest)
601
+
602
+ var wholePageHasNewerMessages = !!(firstPageMsg !== null && firstPageMsg !== void 0 && firstPageMsg.created_at) && new Date(firstPageMsg.created_at) > createdAtAroundDate;
603
+ var wholePageHasOlderMessages = !!(lastPageMsg !== null && lastPageMsg !== void 0 && lastPageMsg.created_at) && new Date(lastPageMsg.created_at) < createdAtAroundDate;
604
+ var requestedPageSizeNotMet = requestedPageSize > parentSet.messages.length && requestedPageSize > returnedPage.length;
605
+ var noMoreMessages = (requestedPageSize > parentSet.messages.length || parentSet.messages.length >= returnedPage.length) && requestedPageSize > returnedPage.length;
606
+
607
+ if (wholePageHasNewerMessages) {
608
+ hasPrev = false;
609
+ updateHasPrev = true;
610
+
611
+ if (requestedPageSizeNotMet) {
612
+ hasNext = false;
613
+ updateHasNext = true;
614
+ }
615
+ } else if (wholePageHasOlderMessages) {
616
+ hasNext = false;
617
+ updateHasNext = true;
618
+
619
+ if (requestedPageSizeNotMet) {
620
+ hasPrev = false;
621
+ updateHasPrev = true;
622
+ }
623
+ } else if (noMoreMessages) {
624
+ hasNext = hasPrev = false;
625
+ updateHasPrev = updateHasNext = true;
626
+ } else {
627
+ var _parentSet$messages$, _parentSet$messages$s;
489
628
 
490
- 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; }
629
+ 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),
630
+ 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);
631
+ updateHasPrev = firstPageMsgIsFirstInSet;
632
+ updateHasNext = lastPageMsgIsLastInSet;
633
+ var midPointByCount = Math.floor(returnedPage.length / 2);
634
+ var midPointByCreationDate = binarySearchByDateEqualOrNearestGreater(returnedPage, createdAtAroundDate);
635
+
636
+ if (midPointByCreationDate !== -1) {
637
+ hasPrev = midPointByCount <= midPointByCreationDate;
638
+ hasNext = midPointByCount >= midPointByCreationDate;
639
+ }
640
+ }
641
+
642
+ if (updateHasPrev && typeof hasPrev !== 'undefined') newPagination.hasPrev = hasPrev;
643
+ if (updateHasNext && typeof hasNext !== 'undefined') newPagination.hasNext = hasNext;
644
+ return newPagination;
645
+ };
646
+
647
+ var messagePaginationIdAround = function messagePaginationIdAround(_ref5) {
648
+ var _parentSet$messages$2, _parentSet$messages$s2;
649
+
650
+ var parentSet = _ref5.parentSet,
651
+ requestedPageSize = _ref5.requestedPageSize,
652
+ returnedPage = _ref5.returnedPage,
653
+ messagePaginationOptions = _ref5.messagePaginationOptions;
654
+
655
+ var newPagination = _objectSpread$b({}, parentSet.pagination);
656
+
657
+ var _ref6 = messagePaginationOptions || {},
658
+ id_around = _ref6.id_around;
659
+
660
+ if (!id_around) return newPagination;
661
+ var hasPrev;
662
+ var hasNext;
663
+ var _ref7 = [returnedPage[0], returnedPage.slice(-1)[0]],
664
+ firstPageMsg = _ref7[0],
665
+ lastPageMsg = _ref7[1];
666
+ 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),
667
+ 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);
668
+ var updateHasPrev = firstPageMsgIsFirstInSet;
669
+ var updateHasNext = lastPageMsgIsLastInSet;
670
+ var midPoint = Math.floor(returnedPage.length / 2);
671
+ var noMoreMessages = (requestedPageSize > parentSet.messages.length || parentSet.messages.length >= returnedPage.length) && requestedPageSize > returnedPage.length;
672
+
673
+ if (noMoreMessages) {
674
+ hasNext = hasPrev = false;
675
+ updateHasPrev = updateHasNext = true;
676
+ } else if (!returnedPage[midPoint]) {
677
+ return newPagination;
678
+ } else if (returnedPage[midPoint].id === id_around) {
679
+ hasPrev = hasNext = true;
680
+ } else {
681
+ var targetMsg;
682
+ var halves = [returnedPage.slice(0, midPoint), returnedPage.slice(midPoint)];
683
+ hasPrev = hasNext = true;
684
+
685
+ for (var i = 0; i < halves.length; i++) {
686
+ targetMsg = halves[i].find(function (message) {
687
+ return message.id === id_around;
688
+ });
689
+
690
+ if (targetMsg && i === 0) {
691
+ hasPrev = false;
692
+ }
693
+
694
+ if (targetMsg && i === 1) {
695
+ hasNext = false;
696
+ }
697
+ }
698
+ }
699
+
700
+ if (updateHasPrev && typeof hasPrev !== 'undefined') newPagination.hasPrev = hasPrev;
701
+ if (updateHasNext && typeof hasNext !== 'undefined') newPagination.hasNext = hasNext;
702
+ return newPagination;
703
+ };
704
+
705
+ var messagePaginationLinear = function messagePaginationLinear(_ref8) {
706
+ var _parentSet$messages$3, _parentSet$messages$s3;
707
+
708
+ var parentSet = _ref8.parentSet,
709
+ requestedPageSize = _ref8.requestedPageSize,
710
+ returnedPage = _ref8.returnedPage,
711
+ messagePaginationOptions = _ref8.messagePaginationOptions;
712
+
713
+ var newPagination = _objectSpread$b({}, parentSet.pagination);
714
+
715
+ var hasPrev;
716
+ var hasNext;
717
+ var _ref9 = [returnedPage[0], returnedPage.slice(-1)[0]],
718
+ firstPageMsg = _ref9[0],
719
+ lastPageMsg = _ref9[1];
720
+ 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),
721
+ 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);
722
+ var queriedNextMessages = messagePaginationOptions && (messagePaginationOptions.created_at_after_or_equal || messagePaginationOptions.created_at_after || messagePaginationOptions.id_gt || messagePaginationOptions.id_gte);
723
+ var queriedPrevMessages = typeof messagePaginationOptions === 'undefined' ? true : messagePaginationOptions.created_at_before_or_equal || messagePaginationOptions.created_at_before || messagePaginationOptions.id_lt || messagePaginationOptions.id_lte || messagePaginationOptions.offset;
724
+ var containsUnrecognizedOptionsOnly = !queriedNextMessages && !queriedPrevMessages && !(messagePaginationOptions !== null && messagePaginationOptions !== void 0 && messagePaginationOptions.id_around) && !(messagePaginationOptions !== null && messagePaginationOptions !== void 0 && messagePaginationOptions.created_at_around);
725
+ var hasMore = returnedPage.length >= requestedPageSize;
726
+
727
+ if (typeof queriedPrevMessages !== 'undefined' || containsUnrecognizedOptionsOnly) {
728
+ hasPrev = hasMore;
729
+ }
730
+
731
+ if (typeof queriedNextMessages !== 'undefined') {
732
+ hasNext = hasMore;
733
+ }
734
+
735
+ var returnedPageIsEmpty = returnedPage.length === 0;
736
+ if ((firstPageMsgIsFirstInSet || returnedPageIsEmpty) && typeof hasPrev !== 'undefined') newPagination.hasPrev = hasPrev;
737
+ if ((lastPageMsgIsLastInSet || returnedPageIsEmpty) && typeof hasNext !== 'undefined') newPagination.hasNext = hasNext;
738
+ return newPagination;
739
+ };
740
+
741
+ var messageSetPagination = function messageSetPagination(params) {
742
+ var _params$messagePagina, _params$messagePagina2;
743
+
744
+ if (params.parentSet.messages.length < params.returnedPage.length) {
745
+ var _params$logger;
746
+
747
+ (_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');
748
+ return params.parentSet.pagination;
749
+ }
750
+
751
+ if ((_params$messagePagina = params.messagePaginationOptions) !== null && _params$messagePagina !== void 0 && _params$messagePagina.created_at_around) {
752
+ return messagePaginationCreatedAtAround(params);
753
+ } else if ((_params$messagePagina2 = params.messagePaginationOptions) !== null && _params$messagePagina2 !== void 0 && _params$messagePagina2.id_around) {
754
+ return messagePaginationIdAround(params);
755
+ } else {
756
+ return messagePaginationLinear(params);
757
+ }
758
+ };
759
+
760
+ var DEFAULT_QUERY_CHANNELS_MESSAGE_LIST_PAGE_SIZE = 25;
761
+ var DEFAULT_QUERY_CHANNEL_MESSAGE_LIST_PAGE_SIZE = 100;
762
+ var DEFAULT_MESSAGE_SET_PAGINATION = {
763
+ hasNext: true,
764
+ hasPrev: true
765
+ };
766
+
767
+ 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; }
768
+
769
+ 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; }
491
770
 
492
771
  /**
493
772
  * ChannelState - A container class for the channel state.
@@ -542,6 +821,10 @@ var ChannelState = /*#__PURE__*/function () {
542
821
 
543
822
  _defineProperty__default['default'](this, "messageSets", []);
544
823
 
824
+ _defineProperty__default['default'](this, "formatMessage", function (message) {
825
+ return formatMessage(message);
826
+ });
827
+
545
828
  _defineProperty__default['default'](this, "setIsUpToDate", function (isUpToDate) {
546
829
  _this.isUpToDate = isUpToDate;
547
830
  });
@@ -564,7 +847,7 @@ var ChannelState = /*#__PURE__*/function () {
564
847
  if (!message) return;
565
848
  if (message.poll_id !== pollVote.poll_id) return;
566
849
 
567
- var updatedPoll = _objectSpread$8({}, poll);
850
+ var updatedPoll = _objectSpread$a({}, poll);
568
851
 
569
852
  var ownVotes = _toConsumableArray__default['default'](((_message$poll = message.poll) === null || _message$poll === void 0 ? void 0 : _message$poll.own_votes) || []);
570
853
 
@@ -586,7 +869,7 @@ var ChannelState = /*#__PURE__*/function () {
586
869
 
587
870
  updatedPoll.own_votes = ownVotes;
588
871
 
589
- var newMessage = _objectSpread$8(_objectSpread$8({}, message), {}, {
872
+ var newMessage = _objectSpread$a(_objectSpread$a({}, message), {}, {
590
873
  poll: updatedPoll
591
874
  });
592
875
 
@@ -601,7 +884,7 @@ var ChannelState = /*#__PURE__*/function () {
601
884
  if (!message) return;
602
885
  if (message.poll_id !== pollVote.poll_id) return;
603
886
 
604
- var updatedPoll = _objectSpread$8({}, poll);
887
+ var updatedPoll = _objectSpread$a({}, poll);
605
888
 
606
889
  var ownVotes = _toConsumableArray__default['default'](((_message$poll2 = message.poll) === null || _message$poll2 === void 0 ? void 0 : _message$poll2.own_votes) || []);
607
890
 
@@ -611,7 +894,7 @@ var ChannelState = /*#__PURE__*/function () {
611
894
 
612
895
  updatedPoll.own_votes = ownVotes;
613
896
 
614
- var newMessage = _objectSpread$8(_objectSpread$8({}, message), {}, {
897
+ var newMessage = _objectSpread$a(_objectSpread$a({}, message), {}, {
615
898
  poll: updatedPoll
616
899
  });
617
900
 
@@ -626,7 +909,7 @@ var ChannelState = /*#__PURE__*/function () {
626
909
  if (!message) return;
627
910
  if (message.poll_id !== pollVote.poll_id) return;
628
911
 
629
- var updatedPoll = _objectSpread$8({}, poll);
912
+ var updatedPoll = _objectSpread$a({}, poll);
630
913
 
631
914
  var ownVotes = _toConsumableArray__default['default'](((_message$poll3 = message.poll) === null || _message$poll3 === void 0 ? void 0 : _message$poll3.own_votes) || []);
632
915
 
@@ -642,7 +925,7 @@ var ChannelState = /*#__PURE__*/function () {
642
925
 
643
926
  updatedPoll.own_votes = ownVotes;
644
927
 
645
- var newMessage = _objectSpread$8(_objectSpread$8({}, message), {}, {
928
+ var newMessage = _objectSpread$a(_objectSpread$a({}, message), {}, {
646
929
  poll: updatedPoll
647
930
  });
648
931
 
@@ -656,11 +939,11 @@ var ChannelState = /*#__PURE__*/function () {
656
939
 
657
940
  if (!message) return;
658
941
 
659
- var updatedPoll = _objectSpread$8(_objectSpread$8({}, poll), {}, {
942
+ var updatedPoll = _objectSpread$a(_objectSpread$a({}, poll), {}, {
660
943
  own_votes: _toConsumableArray__default['default'](((_message$poll4 = message.poll) === null || _message$poll4 === void 0 ? void 0 : _message$poll4.own_votes) || [])
661
944
  });
662
945
 
663
- var newMessage = _objectSpread$8(_objectSpread$8({}, message), {}, {
946
+ var newMessage = _objectSpread$a(_objectSpread$a({}, message), {}, {
664
947
  poll: updatedPoll
665
948
  });
666
949
 
@@ -675,7 +958,7 @@ var ChannelState = /*#__PURE__*/function () {
675
958
  var m = messages[i];
676
959
 
677
960
  if (((_m$user = m.user) === null || _m$user === void 0 ? void 0 : _m$user.id) === user.id) {
678
- messages[i] = _objectSpread$8(_objectSpread$8({}, m), {}, {
961
+ messages[i] = _objectSpread$a(_objectSpread$a({}, m), {}, {
679
962
  user: user
680
963
  });
681
964
  }
@@ -730,9 +1013,9 @@ var ChannelState = /*#__PURE__*/function () {
730
1013
  user: m.user
731
1014
  };
732
1015
  } else {
733
- messages[i] = _objectSpread$8(_objectSpread$8({}, m), {}, {
1016
+ messages[i] = _objectSpread$a(_objectSpread$a({}, m), {}, {
734
1017
  type: 'deleted',
735
- deleted_at: user.deleted_at
1018
+ deleted_at: user.deleted_at ? new Date(user.deleted_at) : null
736
1019
  });
737
1020
  }
738
1021
  }
@@ -809,6 +1092,15 @@ var ChannelState = /*#__PURE__*/function () {
809
1092
  });
810
1093
  this.messageSets[index].messages = messages;
811
1094
  }
1095
+ }, {
1096
+ key: "messagePagination",
1097
+ get: function get() {
1098
+ var _this$messageSets$fin3;
1099
+
1100
+ return ((_this$messageSets$fin3 = this.messageSets.find(function (s) {
1101
+ return s.isCurrent;
1102
+ })) === null || _this$messageSets$fin3 === void 0 ? void 0 : _this$messageSets$fin3.pagination) || DEFAULT_MESSAGE_SET_PAGINATION;
1103
+ }
812
1104
  /**
813
1105
  * addMessageSorted - Add a message to the state
814
1106
  *
@@ -827,28 +1119,15 @@ var ChannelState = /*#__PURE__*/function () {
827
1119
  return this.addMessagesSorted([newMessage], timestampChanged, false, addIfDoesNotExist, messageSetToAddToIfDoesNotExist);
828
1120
  }
829
1121
  /**
830
- * formatMessage - Takes the message object. Parses the dates, sets __html
831
- * and sets the status to received if missing. Returns a message object
832
- *
833
- * @param {MessageResponse<StreamChatGenerics>} message a message object
1122
+ * Takes the message object, parses the dates, sets `__html`
1123
+ * and sets the status to `received` if missing; returns a new message object.
834
1124
  *
1125
+ * @param {MessageResponse<StreamChatGenerics>} message `MessageResponse` object
835
1126
  */
836
1127
 
837
1128
  }, {
838
- key: "formatMessage",
839
- value: function formatMessage(message) {
840
- return _objectSpread$8(_objectSpread$8({}, message), {}, {
841
- /**
842
- * @deprecated please use `html`
843
- */
844
- __html: message.html,
845
- // parse the date..
846
- pinned_at: message.pinned_at ? new Date(message.pinned_at) : null,
847
- created_at: message.created_at ? new Date(message.created_at) : new Date(),
848
- updated_at: message.updated_at ? new Date(message.updated_at) : new Date(),
849
- status: message.status || 'received'
850
- });
851
- }
1129
+ key: "addMessagesSorted",
1130
+ value:
852
1131
  /**
853
1132
  * addMessagesSorted - Add the list of messages to state and resorts the messages
854
1133
  *
@@ -859,10 +1138,7 @@ var ChannelState = /*#__PURE__*/function () {
859
1138
  * @param {MessageSetType} messageSetToAddToIfDoesNotExist Which message set to add to if messages are not in the list (only used if addIfDoesNotExist is true)
860
1139
  *
861
1140
  */
862
-
863
- }, {
864
- key: "addMessagesSorted",
865
- value: function addMessagesSorted(newMessages) {
1141
+ function addMessagesSorted(newMessages) {
866
1142
  var timestampChanged = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
867
1143
  var initializing = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
868
1144
  var addIfDoesNotExist = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
@@ -1055,7 +1331,7 @@ var ChannelState = /*#__PURE__*/function () {
1055
1331
  var parseMessage = function parseMessage(m) {
1056
1332
  var _m$pinned_at, _m$updated_at;
1057
1333
 
1058
- return _objectSpread$8(_objectSpread$8({}, m), {}, {
1334
+ return _objectSpread$a(_objectSpread$a({}, m), {}, {
1059
1335
  created_at: m.created_at.toISOString(),
1060
1336
  pinned_at: (_m$pinned_at = m.pinned_at) === null || _m$pinned_at === void 0 ? void 0 : _m$pinned_at.toISOString(),
1061
1337
  updated_at: (_m$updated_at = m.updated_at) === null || _m$updated_at === void 0 ? void 0 : _m$updated_at.toISOString()
@@ -1065,8 +1341,8 @@ var ChannelState = /*#__PURE__*/function () {
1065
1341
  var update = function update(messages) {
1066
1342
  var updatedMessages = messages.reduce(function (acc, msg) {
1067
1343
  if (msg.quoted_message_id === message.id) {
1068
- acc.push(_objectSpread$8(_objectSpread$8({}, parseMessage(msg)), {}, {
1069
- quoted_message: remove ? _objectSpread$8(_objectSpread$8({}, message), {}, {
1344
+ acc.push(_objectSpread$a(_objectSpread$a({}, parseMessage(msg)), {}, {
1345
+ quoted_message: remove ? _objectSpread$a(_objectSpread$a({}, message), {}, {
1070
1346
  attachments: []
1071
1347
  }) : message
1072
1348
  }));
@@ -1262,7 +1538,8 @@ var ChannelState = /*#__PURE__*/function () {
1262
1538
  this.messageSets = [{
1263
1539
  messages: [],
1264
1540
  isLatest: true,
1265
- isCurrent: true
1541
+ isCurrent: true,
1542
+ pagination: DEFAULT_MESSAGE_SET_PAGINATION
1266
1543
  }];
1267
1544
  }
1268
1545
  /**
@@ -1270,6 +1547,7 @@ var ChannelState = /*#__PURE__*/function () {
1270
1547
  *
1271
1548
  * @param {string} messageId The id of the message, or 'latest' to indicate switching to the latest messages
1272
1549
  * @param {string} parentMessageId The id of the parent message, if we want load a thread reply
1550
+ * @param {number} limit The page size if the message has to be queried from the server
1273
1551
  */
1274
1552
 
1275
1553
  }, {
@@ -1478,7 +1756,8 @@ var ChannelState = /*#__PURE__*/function () {
1478
1756
  this.messageSets.push({
1479
1757
  messages: [],
1480
1758
  isCurrent: false,
1481
- isLatest: false
1759
+ isLatest: false,
1760
+ pagination: DEFAULT_MESSAGE_SET_PAGINATION
1482
1761
  });
1483
1762
  targetMessageSetIndex = this.messageSets.length - 1;
1484
1763
  }
@@ -1519,6 +1798,8 @@ var ChannelState = /*#__PURE__*/function () {
1519
1798
  sources.forEach(function (messageSet) {
1520
1799
  target.isLatest = target.isLatest || messageSet.isLatest;
1521
1800
  target.isCurrent = target.isCurrent || messageSet.isCurrent;
1801
+ target.pagination.hasPrev = messageSet.messages[0].created_at < target.messages[0].created_at ? messageSet.pagination.hasPrev : target.pagination.hasPrev;
1802
+ target.pagination.hasNext = target.messages.slice(-1)[0].created_at < messageSet.messages.slice(-1)[0].created_at ? messageSet.pagination.hasNext : target.pagination.hasNext;
1522
1803
  messagesToAdd = [].concat(_toConsumableArray__default['default'](messagesToAdd), _toConsumableArray__default['default'](messageSet.messages));
1523
1804
  });
1524
1805
  sources.forEach(function (s) {
@@ -1550,13 +1831,13 @@ function _unsupportedIterableToArray$3(o, minLen) { if (!o) return; if (typeof o
1550
1831
 
1551
1832
  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; }
1552
1833
 
1553
- 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; }
1554
-
1555
- 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; }
1834
+ 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; }
1556
1835
 
1836
+ 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; }
1557
1837
  /**
1558
1838
  * Channel - The Channel class manages it's own state.
1559
1839
  */
1840
+
1560
1841
  var Channel = /*#__PURE__*/function () {
1561
1842
  /** */
1562
1843
 
@@ -1625,7 +1906,7 @@ var Channel = /*#__PURE__*/function () {
1625
1906
  while (1) {
1626
1907
  switch (_context.prev = _context.next) {
1627
1908
  case 0:
1628
- defaultOptions = _objectSpread$7(_objectSpread$7({}, options), {}, {
1909
+ defaultOptions = _objectSpread$9(_objectSpread$9({}, options), {}, {
1629
1910
  watch: false,
1630
1911
  state: false,
1631
1912
  presence: false
@@ -1677,7 +1958,7 @@ var Channel = /*#__PURE__*/function () {
1677
1958
  throw new Error('channel id is not defined');
1678
1959
  }
1679
1960
 
1680
- return "".concat(_this.getClient().baseURL, "/channels/").concat(_this.type, "/").concat(_this.id);
1961
+ return "".concat(_this.getClient().baseURL, "/channels/").concat(encodeURIComponent(_this.type), "/").concat(encodeURIComponent(_this.id));
1681
1962
  });
1682
1963
 
1683
1964
  var validTypeRe = /^[\w_-]+$/;
@@ -1697,7 +1978,7 @@ var Channel = /*#__PURE__*/function () {
1697
1978
 
1698
1979
  this.data = data; // this._data is used for the requests...
1699
1980
 
1700
- this._data = _objectSpread$7({}, data);
1981
+ this._data = _objectSpread$9({}, data);
1701
1982
  this.cid = "".concat(type, ":").concat(id);
1702
1983
  this.listeners = {}; // perhaps the state variable should be private
1703
1984
 
@@ -1759,7 +2040,7 @@ var Channel = /*#__PURE__*/function () {
1759
2040
  switch (_context2.prev = _context2.next) {
1760
2041
  case 0:
1761
2042
  _context2.next = 2;
1762
- return this.getClient().post(this._channelURL() + '/message', _objectSpread$7({
2043
+ return this.getClient().post(this._channelURL() + '/message', _objectSpread$9({
1763
2044
  message: message
1764
2045
  }, options));
1765
2046
 
@@ -1875,7 +2156,7 @@ var Channel = /*#__PURE__*/function () {
1875
2156
 
1876
2157
  case 3:
1877
2158
  // Return a list of channels
1878
- payload = _objectSpread$7(_objectSpread$7({
2159
+ payload = _objectSpread$9(_objectSpread$9({
1879
2160
  filter_conditions: {
1880
2161
  cid: this.cid
1881
2162
  }
@@ -1972,7 +2253,7 @@ var Channel = /*#__PURE__*/function () {
1972
2253
 
1973
2254
  _context5.next = 6;
1974
2255
  return this.getClient().get(this.getClient().baseURL + '/members', {
1975
- payload: _objectSpread$7({
2256
+ payload: _objectSpread$9({
1976
2257
  type: type,
1977
2258
  id: id,
1978
2259
  members: members,
@@ -2033,7 +2314,7 @@ var Channel = /*#__PURE__*/function () {
2033
2314
 
2034
2315
  case 4:
2035
2316
  _context6.next = 6;
2036
- return this.getClient().post(this.getClient().baseURL + "/messages/".concat(messageID, "/reaction"), _objectSpread$7({
2317
+ return this.getClient().post(this.getClient().baseURL + "/messages/".concat(encodeURIComponent(messageID), "/reaction"), _objectSpread$9({
2037
2318
  reaction: reaction
2038
2319
  }, options));
2039
2320
 
@@ -2073,7 +2354,7 @@ var Channel = /*#__PURE__*/function () {
2073
2354
  throw Error('Deleting a reaction requires specifying both the message and reaction type');
2074
2355
  }
2075
2356
 
2076
- var url = this.getClient().baseURL + "/messages/".concat(messageID, "/reaction/").concat(reactionType); //provided when server side request
2357
+ var url = this.getClient().baseURL + "/messages/".concat(encodeURIComponent(messageID), "/reaction/").concat(encodeURIComponent(reactionType)); //provided when server side request
2077
2358
 
2078
2359
  if (user_id) {
2079
2360
  return this.getClient().delete(url, {
@@ -2114,7 +2395,7 @@ var Channel = /*#__PURE__*/function () {
2114
2395
  delete channelData[key];
2115
2396
  });
2116
2397
  _context7.next = 7;
2117
- return this._update(_objectSpread$7({
2398
+ return this._update(_objectSpread$9({
2118
2399
  message: updateMessage,
2119
2400
  data: channelData
2120
2401
  }, options));
@@ -2286,7 +2567,7 @@ var Channel = /*#__PURE__*/function () {
2286
2567
  case 0:
2287
2568
  options = _args11.length > 0 && _args11[0] !== undefined ? _args11[0] : {};
2288
2569
  _context11.next = 3;
2289
- return this.getClient().delete(this._channelURL(), _objectSpread$7({}, options));
2570
+ return this.getClient().delete(this._channelURL(), _objectSpread$9({}, options));
2290
2571
 
2291
2572
  case 3:
2292
2573
  return _context11.abrupt("return", _context11.sent);
@@ -2362,7 +2643,7 @@ var Channel = /*#__PURE__*/function () {
2362
2643
  case 0:
2363
2644
  options = _args13.length > 0 && _args13[0] !== undefined ? _args13[0] : {};
2364
2645
  _context13.next = 3;
2365
- return this._update(_objectSpread$7({
2646
+ return this._update(_objectSpread$9({
2366
2647
  accept_invite: true
2367
2648
  }, options));
2368
2649
 
@@ -2403,7 +2684,7 @@ var Channel = /*#__PURE__*/function () {
2403
2684
  case 0:
2404
2685
  options = _args14.length > 0 && _args14[0] !== undefined ? _args14[0] : {};
2405
2686
  _context14.next = 3;
2406
- return this._update(_objectSpread$7({
2687
+ return this._update(_objectSpread$9({
2407
2688
  reject_invite: true
2408
2689
  }, options));
2409
2690
 
@@ -2445,7 +2726,7 @@ var Channel = /*#__PURE__*/function () {
2445
2726
  case 0:
2446
2727
  options = _args15.length > 2 && _args15[2] !== undefined ? _args15[2] : {};
2447
2728
  _context15.next = 3;
2448
- return this._update(_objectSpread$7({
2729
+ return this._update(_objectSpread$9({
2449
2730
  add_members: members,
2450
2731
  message: message
2451
2732
  }, options));
@@ -2488,7 +2769,7 @@ var Channel = /*#__PURE__*/function () {
2488
2769
  case 0:
2489
2770
  options = _args16.length > 2 && _args16[2] !== undefined ? _args16[2] : {};
2490
2771
  _context16.next = 3;
2491
- return this._update(_objectSpread$7({
2772
+ return this._update(_objectSpread$9({
2492
2773
  add_moderators: members,
2493
2774
  message: message
2494
2775
  }, options));
@@ -2531,7 +2812,7 @@ var Channel = /*#__PURE__*/function () {
2531
2812
  case 0:
2532
2813
  options = _args17.length > 2 && _args17[2] !== undefined ? _args17[2] : {};
2533
2814
  _context17.next = 3;
2534
- return this._update(_objectSpread$7({
2815
+ return this._update(_objectSpread$9({
2535
2816
  assign_roles: roles,
2536
2817
  message: message
2537
2818
  }, options));
@@ -2574,7 +2855,7 @@ var Channel = /*#__PURE__*/function () {
2574
2855
  case 0:
2575
2856
  options = _args18.length > 2 && _args18[2] !== undefined ? _args18[2] : {};
2576
2857
  _context18.next = 3;
2577
- return this._update(_objectSpread$7({
2858
+ return this._update(_objectSpread$9({
2578
2859
  invites: members,
2579
2860
  message: message
2580
2861
  }, options));
@@ -2617,7 +2898,7 @@ var Channel = /*#__PURE__*/function () {
2617
2898
  case 0:
2618
2899
  options = _args19.length > 2 && _args19[2] !== undefined ? _args19[2] : {};
2619
2900
  _context19.next = 3;
2620
- return this._update(_objectSpread$7({
2901
+ return this._update(_objectSpread$9({
2621
2902
  remove_members: members,
2622
2903
  message: message
2623
2904
  }, options));
@@ -2660,7 +2941,7 @@ var Channel = /*#__PURE__*/function () {
2660
2941
  case 0:
2661
2942
  options = _args20.length > 2 && _args20[2] !== undefined ? _args20[2] : {};
2662
2943
  _context20.next = 3;
2663
- return this._update(_objectSpread$7({
2944
+ return this._update(_objectSpread$9({
2664
2945
  demote_moderators: members,
2665
2946
  message: message
2666
2947
  }, options));
@@ -2745,7 +3026,7 @@ var Channel = /*#__PURE__*/function () {
2745
3026
  case 0:
2746
3027
  opts = _args22.length > 0 && _args22[0] !== undefined ? _args22[0] : {};
2747
3028
  _context22.next = 3;
2748
- return this.getClient().post(this.getClient().baseURL + '/moderation/mute/channel', _objectSpread$7({
3029
+ return this.getClient().post(this.getClient().baseURL + '/moderation/mute/channel', _objectSpread$9({
2749
3030
  channel_cid: this.cid
2750
3031
  }, opts));
2751
3032
 
@@ -2787,7 +3068,7 @@ var Channel = /*#__PURE__*/function () {
2787
3068
  case 0:
2788
3069
  opts = _args23.length > 0 && _args23[0] !== undefined ? _args23[0] : {};
2789
3070
  _context23.next = 3;
2790
- return this.getClient().post(this.getClient().baseURL + '/moderation/unmute/channel', _objectSpread$7({
3071
+ return this.getClient().post(this.getClient().baseURL + '/moderation/unmute/channel', _objectSpread$9({
2791
3072
  channel_cid: this.cid
2792
3073
  }, opts));
2793
3074
 
@@ -2829,7 +3110,7 @@ var Channel = /*#__PURE__*/function () {
2829
3110
  throw Error("Message id is missing");
2830
3111
  }
2831
3112
 
2832
- return this.getClient().post(this.getClient().baseURL + "/messages/".concat(messageID, "/action"), {
3113
+ return this.getClient().post(this.getClient().baseURL + "/messages/".concat(encodeURIComponent(messageID), "/action"), {
2833
3114
  message_id: messageID,
2834
3115
  form_data: formData,
2835
3116
  id: this.id,
@@ -2872,7 +3153,7 @@ var Channel = /*#__PURE__*/function () {
2872
3153
 
2873
3154
  this.lastTypingEvent = new Date();
2874
3155
  _context24.next = 10;
2875
- return this.sendEvent(_objectSpread$7({
3156
+ return this.sendEvent(_objectSpread$9({
2876
3157
  type: 'typing.start',
2877
3158
  parent_id: parent_id
2878
3159
  }, options || {}));
@@ -2916,7 +3197,7 @@ var Channel = /*#__PURE__*/function () {
2916
3197
  this.lastTypingEvent = null;
2917
3198
  this.isTyping = false;
2918
3199
  _context25.next = 6;
2919
- return this.sendEvent(_objectSpread$7({
3200
+ return this.sendEvent(_objectSpread$9({
2920
3201
  type: 'typing.stop',
2921
3202
  parent_id: parent_id
2922
3203
  }, options || {}));
@@ -3003,7 +3284,7 @@ var Channel = /*#__PURE__*/function () {
3003
3284
 
3004
3285
  case 4:
3005
3286
  _context26.next = 6;
3006
- return this.getClient().post(this._channelURL() + '/read', _objectSpread$7({}, data));
3287
+ return this.getClient().post(this._channelURL() + '/read', _objectSpread$9({}, data));
3007
3288
 
3008
3289
  case 6:
3009
3290
  return _context26.abrupt("return", _context26.sent);
@@ -3050,7 +3331,7 @@ var Channel = /*#__PURE__*/function () {
3050
3331
 
3051
3332
  case 3:
3052
3333
  _context27.next = 5;
3053
- return this.getClient().post(this._channelURL() + '/unread', _objectSpread$7({}, data));
3334
+ return this.getClient().post(this._channelURL() + '/unread', _objectSpread$9({}, data));
3054
3335
 
3055
3336
  case 5:
3056
3337
  return _context27.abrupt("return", _context27.sent);
@@ -3118,7 +3399,7 @@ var Channel = /*#__PURE__*/function () {
3118
3399
  defaultOptions.watch = false;
3119
3400
  }
3120
3401
 
3121
- combined = _objectSpread$7(_objectSpread$7({}, defaultOptions), options);
3402
+ combined = _objectSpread$9(_objectSpread$9({}, defaultOptions), options);
3122
3403
  _context28.next = 7;
3123
3404
  return this.query(combined, 'latest');
3124
3405
 
@@ -3191,7 +3472,9 @@ var Channel = /*#__PURE__*/function () {
3191
3472
  return stopWatching;
3192
3473
  }()
3193
3474
  /**
3194
- * getReplies - List the message replies for a parent message
3475
+ * getReplies - List the message replies for a parent message.
3476
+ *
3477
+ * The recommended way of working with threads is to use the Thread class.
3195
3478
  *
3196
3479
  * @param {string} parent_id The message parent id, ie the top of the thread
3197
3480
  * @param {MessagePaginationOptions & { user?: UserResponse<StreamChatGenerics>; user_id?: string }} options Pagination params, ie {limit:10, id_lte: 10}
@@ -3210,7 +3493,7 @@ var Channel = /*#__PURE__*/function () {
3210
3493
  case 0:
3211
3494
  normalizedSort = sort ? normalizeQuerySort(sort) : undefined;
3212
3495
  _context30.next = 3;
3213
- return this.getClient().get(this.getClient().baseURL + "/messages/".concat(parent_id, "/replies"), _objectSpread$7({
3496
+ return this.getClient().get(this.getClient().baseURL + "/messages/".concat(encodeURIComponent(parent_id), "/replies"), _objectSpread$9({
3214
3497
  sort: normalizedSort
3215
3498
  }, options));
3216
3499
 
@@ -3259,8 +3542,8 @@ var Channel = /*#__PURE__*/function () {
3259
3542
  case 0:
3260
3543
  sort = _args31.length > 1 && _args31[1] !== undefined ? _args31[1] : [];
3261
3544
  _context31.next = 3;
3262
- return this.getClient().get(this.getClient().baseURL + "/channels/".concat(this.type, "/").concat(this.id, "/pinned_messages"), {
3263
- payload: _objectSpread$7(_objectSpread$7({}, options), {}, {
3545
+ return this.getClient().get(this._channelURL() + '/pinned_messages', {
3546
+ payload: _objectSpread$9(_objectSpread$9({}, options), {}, {
3264
3547
  sort: normalizeQuerySort(sort)
3265
3548
  })
3266
3549
  });
@@ -3294,7 +3577,7 @@ var Channel = /*#__PURE__*/function () {
3294
3577
  }, {
3295
3578
  key: "getReactions",
3296
3579
  value: function getReactions(message_id, options) {
3297
- return this.getClient().get(this.getClient().baseURL + "/messages/".concat(message_id, "/reactions"), _objectSpread$7({}, options));
3580
+ return this.getClient().get(this.getClient().baseURL + "/messages/".concat(encodeURIComponent(message_id), "/reactions"), _objectSpread$9({}, options));
3298
3581
  }
3299
3582
  /**
3300
3583
  * getMessagesById - Retrieves a list of messages by ID
@@ -3414,7 +3697,7 @@ var Channel = /*#__PURE__*/function () {
3414
3697
  */
3415
3698
  function () {
3416
3699
  var _query = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee32(options) {
3417
- var _this$data6, _this$data7;
3700
+ var _options$messages$lim, _options$messages, _this$data6, _this$data7;
3418
3701
 
3419
3702
  var messageSetToAddToIfDoesNotExist,
3420
3703
  queryURL,
@@ -3435,14 +3718,14 @@ var Channel = /*#__PURE__*/function () {
3435
3718
  return this.getClient().wsPromise;
3436
3719
 
3437
3720
  case 3:
3438
- queryURL = "".concat(this.getClient().baseURL, "/channels/").concat(this.type);
3721
+ queryURL = "".concat(this.getClient().baseURL, "/channels/").concat(encodeURIComponent(this.type));
3439
3722
 
3440
3723
  if (this.id) {
3441
- queryURL += "/".concat(this.id);
3724
+ queryURL += "/".concat(encodeURIComponent(this.id));
3442
3725
  }
3443
3726
 
3444
3727
  _context32.next = 7;
3445
- return this.getClient().post(queryURL + '/query', _objectSpread$7({
3728
+ return this.getClient().post(queryURL + '/query', _objectSpread$9({
3446
3729
  data: this._data,
3447
3730
  state: true
3448
3731
  }, options));
@@ -3477,6 +3760,13 @@ var Channel = /*#__PURE__*/function () {
3477
3760
 
3478
3761
 
3479
3762
  _this$_initializeStat = this._initializeState(state, messageSetToAddToIfDoesNotExist), messageSet = _this$_initializeStat.messageSet;
3763
+ messageSet.pagination = _objectSpread$9(_objectSpread$9({}, messageSet.pagination), messageSetPagination({
3764
+ parentSet: messageSet,
3765
+ messagePaginationOptions: options === null || options === void 0 ? void 0 : options.messages,
3766
+ 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,
3767
+ returnedPage: state.messages,
3768
+ logger: this.getClient().logger
3769
+ }));
3480
3770
  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();
3481
3771
  this.data = state.channel;
3482
3772
  this.offlineMode = false;
@@ -3498,7 +3788,7 @@ var Channel = /*#__PURE__*/function () {
3498
3788
  });
3499
3789
  return _context32.abrupt("return", state);
3500
3790
 
3501
- case 17:
3791
+ case 18:
3502
3792
  case "end":
3503
3793
  return _context32.stop();
3504
3794
  }
@@ -3531,7 +3821,7 @@ var Channel = /*#__PURE__*/function () {
3531
3821
  this._checkInitialized();
3532
3822
 
3533
3823
  _context33.next = 3;
3534
- return this.getClient().banUser(targetUserID, _objectSpread$7(_objectSpread$7({}, options), {}, {
3824
+ return this.getClient().banUser(targetUserID, _objectSpread$9(_objectSpread$9({}, options), {}, {
3535
3825
  type: this.type,
3536
3826
  id: this.id
3537
3827
  }));
@@ -3703,7 +3993,7 @@ var Channel = /*#__PURE__*/function () {
3703
3993
  this._checkInitialized();
3704
3994
 
3705
3995
  _context37.next = 3;
3706
- return this.getClient().shadowBan(targetUserID, _objectSpread$7(_objectSpread$7({}, options), {}, {
3996
+ return this.getClient().shadowBan(targetUserID, _objectSpread$9(_objectSpread$9({}, options), {}, {
3707
3997
  type: this.type,
3708
3998
  id: this.id
3709
3999
  }));
@@ -4157,7 +4447,7 @@ var Channel = /*#__PURE__*/function () {
4157
4447
  });
4158
4448
  }
4159
4449
 
4160
- channel.data = _objectSpread$7(_objectSpread$7({}, event.channel), {}, {
4450
+ channel.data = _objectSpread$9(_objectSpread$9({}, event.channel), {}, {
4161
4451
  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,
4162
4452
  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
4163
4453
  });
@@ -4231,7 +4521,7 @@ var Channel = /*#__PURE__*/function () {
4231
4521
  break;
4232
4522
 
4233
4523
  case 'channel.hidden':
4234
- channel.data = _objectSpread$7(_objectSpread$7({}, channel.data), {}, {
4524
+ channel.data = _objectSpread$9(_objectSpread$9({}, channel.data), {}, {
4235
4525
  hidden: true
4236
4526
  });
4237
4527
 
@@ -4242,26 +4532,26 @@ var Channel = /*#__PURE__*/function () {
4242
4532
  break;
4243
4533
 
4244
4534
  case 'channel.visible':
4245
- channel.data = _objectSpread$7(_objectSpread$7({}, channel.data), {}, {
4535
+ channel.data = _objectSpread$9(_objectSpread$9({}, channel.data), {}, {
4246
4536
  hidden: false
4247
4537
  });
4248
4538
  break;
4249
4539
 
4250
4540
  case 'user.banned':
4251
4541
  if (!((_event$user11 = event.user) !== null && _event$user11 !== void 0 && _event$user11.id)) break;
4252
- channelState.members[event.user.id] = _objectSpread$7(_objectSpread$7({}, channelState.members[event.user.id] || {}), {}, {
4542
+ channelState.members[event.user.id] = _objectSpread$9(_objectSpread$9({}, channelState.members[event.user.id] || {}), {}, {
4253
4543
  shadow_banned: !!event.shadow,
4254
4544
  banned: !event.shadow,
4255
- user: _objectSpread$7(_objectSpread$7({}, ((_channelState$members = channelState.members[event.user.id]) === null || _channelState$members === void 0 ? void 0 : _channelState$members.user) || {}), event.user)
4545
+ user: _objectSpread$9(_objectSpread$9({}, ((_channelState$members = channelState.members[event.user.id]) === null || _channelState$members === void 0 ? void 0 : _channelState$members.user) || {}), event.user)
4256
4546
  });
4257
4547
  break;
4258
4548
 
4259
4549
  case 'user.unbanned':
4260
4550
  if (!((_event$user12 = event.user) !== null && _event$user12 !== void 0 && _event$user12.id)) break;
4261
- channelState.members[event.user.id] = _objectSpread$7(_objectSpread$7({}, channelState.members[event.user.id] || {}), {}, {
4551
+ channelState.members[event.user.id] = _objectSpread$9(_objectSpread$9({}, channelState.members[event.user.id] || {}), {}, {
4262
4552
  shadow_banned: false,
4263
4553
  banned: false,
4264
- user: _objectSpread$7(_objectSpread$7({}, ((_channelState$members2 = channelState.members[event.user.id]) === null || _channelState$members2 === void 0 ? void 0 : _channelState$members2.user) || {}), event.user)
4554
+ user: _objectSpread$9(_objectSpread$9({}, ((_channelState$members2 = channelState.members[event.user.id]) === null || _channelState$members2 === void 0 ? void 0 : _channelState$members2.user) || {}), event.user)
4265
4555
  });
4266
4556
  break;
4267
4557
  } // any event can send over the online count
@@ -4515,9 +4805,9 @@ var ClientState = /*#__PURE__*/function () {
4515
4805
  return ClientState;
4516
4806
  }();
4517
4807
 
4518
- 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; }
4808
+ 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; }
4519
4809
 
4520
- 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; }
4810
+ 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; }
4521
4811
  var InsightMetrics = function InsightMetrics() {
4522
4812
  _classCallCheck__default['default'](this, InsightMetrics);
4523
4813
 
@@ -4596,7 +4886,7 @@ var postInsights = /*#__PURE__*/function () {
4596
4886
  };
4597
4887
  }();
4598
4888
  function buildWsFatalInsight(connection, event) {
4599
- return _objectSpread$6(_objectSpread$6({}, event), buildWsBaseInsight(connection));
4889
+ return _objectSpread$8(_objectSpread$8({}, event), buildWsBaseInsight(connection));
4600
4890
  }
4601
4891
 
4602
4892
  function buildWsBaseInsight(connection) {
@@ -4629,9 +4919,9 @@ function buildWsSuccessAfterFailureInsight(connection) {
4629
4919
  return buildWsBaseInsight(connection);
4630
4920
  }
4631
4921
 
4632
- 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; }
4922
+ 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; }
4633
4923
 
4634
- 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; }
4924
+ 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; }
4635
4925
 
4636
4926
  // Type guards to check WebSocket error type
4637
4927
  var isCloseEvent = function isCloseEvent(res) {
@@ -4995,7 +5285,7 @@ var StableWSConnection = /*#__PURE__*/function () {
4995
5285
  value: function _log(msg) {
4996
5286
  var extra = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
4997
5287
  var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'info';
4998
- this.client.logger(level, 'connection:' + msg, _objectSpread$5({
5288
+ this.client.logger(level, 'connection:' + msg, _objectSpread$7({
4999
5289
  tags: ['connection']
5000
5290
  }, extra));
5001
5291
  }
@@ -5586,9 +5876,9 @@ var StableWSConnection = /*#__PURE__*/function () {
5586
5876
  return StableWSConnection;
5587
5877
  }();
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
 
@@ -6019,9 +6309,9 @@ function isErrorResponse(res) {
6019
6309
  return !res.status || res.status < 200 || 300 <= res.status;
6020
6310
  }
6021
6311
 
6022
- 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; }
6312
+ 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; }
6023
6313
 
6024
- 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; }
6314
+ 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; }
6025
6315
  var ConnectionState;
6026
6316
 
6027
6317
  (function (ConnectionState) {
@@ -6084,7 +6374,7 @@ var WSConnectionFallback = /*#__PURE__*/function () {
6084
6374
  _context.next = 4;
6085
6375
  return _this.client.doAxiosRequest('get', _this.client.baseURL.replace(':3030', ':8900') + '/longpoll', // replace port if present for testing with local API
6086
6376
  undefined, {
6087
- config: _objectSpread$3(_objectSpread$3({}, config), {}, {
6377
+ config: _objectSpread$5(_objectSpread$5({}, config), {}, {
6088
6378
  cancelToken: (_this$cancelToken2 = _this.cancelToken) === null || _this$cancelToken2 === void 0 ? void 0 : _this$cancelToken2.token
6089
6379
  }),
6090
6380
  params: params
@@ -6362,7 +6652,7 @@ var WSConnectionFallback = /*#__PURE__*/function () {
6362
6652
  value: function _log(msg) {
6363
6653
  var extra = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
6364
6654
  var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'info';
6365
- this.client.logger(level, 'WSConnectionFallback:' + msg, _objectSpread$3({
6655
+ this.client.logger(level, 'WSConnectionFallback:' + msg, _objectSpread$5({
6366
6656
  tags: ['connection_fallback', 'connection']
6367
6657
  }, extra));
6368
6658
  }
@@ -6942,168 +7232,710 @@ exports.VotingVisibility = void 0;
6942
7232
  VotingVisibility["public"] = "public";
6943
7233
  })(exports.VotingVisibility || (exports.VotingVisibility = {}));
6944
7234
 
6945
- var _excluded$1 = ["parent_message_id", "parent_message", "latest_replies", "thread_participants", "reply_count", "channel", "read"];
7235
+ 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; }
6946
7236
 
6947
- 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; }
7237
+ 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; }
6948
7238
 
6949
- 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; }
7239
+ function isPatch(value) {
7240
+ return typeof value === 'function';
7241
+ }
6950
7242
 
6951
- 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; } } }; }
7243
+ var StateStore = function StateStore(value) {
7244
+ var _this = this;
6952
7245
 
6953
- 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); }
7246
+ _classCallCheck__default['default'](this, StateStore);
6954
7247
 
6955
- 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; }
7248
+ this.value = value;
7249
+
7250
+ _defineProperty__default['default'](this, "handlerSet", new Set());
7251
+
7252
+ _defineProperty__default['default'](this, "next", function (newValueOrPatch) {
7253
+ // newValue (or patch output) should never be mutated previous value
7254
+ var newValue = isPatch(newValueOrPatch) ? newValueOrPatch(_this.value) : newValueOrPatch; // do not notify subscribers if the value hasn't changed
7255
+
7256
+ if (newValue === _this.value) return;
7257
+ var oldValue = _this.value;
7258
+ _this.value = newValue;
7259
+
7260
+ _this.handlerSet.forEach(function (handler) {
7261
+ return handler(_this.value, oldValue);
7262
+ });
7263
+ });
7264
+
7265
+ _defineProperty__default['default'](this, "partialNext", function (partial) {
7266
+ return _this.next(function (current) {
7267
+ return _objectSpread$4(_objectSpread$4({}, current), partial);
7268
+ });
7269
+ });
7270
+
7271
+ _defineProperty__default['default'](this, "getLatestValue", function () {
7272
+ return _this.value;
7273
+ });
7274
+
7275
+ _defineProperty__default['default'](this, "subscribe", function (handler) {
7276
+ handler(_this.value, undefined);
7277
+
7278
+ _this.handlerSet.add(handler);
7279
+
7280
+ return function () {
7281
+ _this.handlerSet.delete(handler);
7282
+ };
7283
+ });
7284
+
7285
+ _defineProperty__default['default'](this, "subscribeWithSelector", function (selector, handler) {
7286
+ // begin with undefined to reduce amount of selector calls
7287
+ var selectedValues;
7288
+
7289
+ var wrappedHandler = function wrappedHandler(nextValue) {
7290
+ var _selectedValues$some, _selectedValues;
7291
+
7292
+ var newlySelectedValues = selector(nextValue);
7293
+ var hasUpdatedValues = (_selectedValues$some = (_selectedValues = selectedValues) === null || _selectedValues === void 0 ? void 0 : _selectedValues.some(function (value, index) {
7294
+ return value !== newlySelectedValues[index];
7295
+ })) !== null && _selectedValues$some !== void 0 ? _selectedValues$some : true;
7296
+ if (!hasUpdatedValues) return;
7297
+ var oldSelectedValues = selectedValues;
7298
+ selectedValues = newlySelectedValues;
7299
+ handler(newlySelectedValues, oldSelectedValues);
7300
+ };
7301
+
7302
+ return _this.subscribe(wrappedHandler);
7303
+ });
7304
+ };
7305
+
7306
+ var _excluded$1 = ["limit", "sort"];
7307
+
7308
+ 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; }
7309
+
7310
+ 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; }
7311
+ var DEFAULT_PAGE_LIMIT = 50;
7312
+ var DEFAULT_SORT = [{
7313
+ created_at: -1
7314
+ }];
7315
+ var MARK_AS_READ_THROTTLE_TIMEOUT = 1000;
6956
7316
  var Thread = /*#__PURE__*/function () {
6957
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
6958
- function Thread(client, t) {
7317
+ function Thread(_ref) {
7318
+ var _this = this,
7319
+ _threadData$read,
7320
+ _threadData$reply_cou;
7321
+
7322
+ var client = _ref.client,
7323
+ threadData = _ref.threadData;
7324
+
6959
7325
  _classCallCheck__default['default'](this, Thread);
6960
7326
 
7327
+ _defineProperty__default['default'](this, "state", void 0);
7328
+
6961
7329
  _defineProperty__default['default'](this, "id", void 0);
6962
7330
 
6963
- _defineProperty__default['default'](this, "latestReplies", []);
7331
+ _defineProperty__default['default'](this, "client", void 0);
6964
7332
 
6965
- _defineProperty__default['default'](this, "participants", []);
7333
+ _defineProperty__default['default'](this, "unsubscribeFunctions", new Set());
6966
7334
 
6967
- _defineProperty__default['default'](this, "message", void 0);
7335
+ _defineProperty__default['default'](this, "failedRepliesMap", new Map());
6968
7336
 
6969
- _defineProperty__default['default'](this, "channel", void 0);
7337
+ _defineProperty__default['default'](this, "activate", function () {
7338
+ _this.state.partialNext({
7339
+ active: true
7340
+ });
7341
+ });
6970
7342
 
6971
- _defineProperty__default['default'](this, "_channel", void 0);
7343
+ _defineProperty__default['default'](this, "deactivate", function () {
7344
+ _this.state.partialNext({
7345
+ active: false
7346
+ });
7347
+ });
6972
7348
 
6973
- _defineProperty__default['default'](this, "replyCount", 0);
7349
+ _defineProperty__default['default'](this, "reload", /*#__PURE__*/_asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee() {
7350
+ var thread;
7351
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
7352
+ while (1) {
7353
+ switch (_context.prev = _context.next) {
7354
+ case 0:
7355
+ if (!_this.state.getLatestValue().isLoading) {
7356
+ _context.next = 2;
7357
+ break;
7358
+ }
6974
7359
 
6975
- _defineProperty__default['default'](this, "_client", void 0);
7360
+ return _context.abrupt("return");
6976
7361
 
6977
- _defineProperty__default['default'](this, "read", {});
6978
-
6979
- _defineProperty__default['default'](this, "data", {});
6980
-
6981
- var parent_message_id = t.parent_message_id,
6982
- parent_message = t.parent_message,
6983
- latest_replies = t.latest_replies,
6984
- thread_participants = t.thread_participants,
6985
- reply_count = t.reply_count,
6986
- channel = t.channel,
6987
- read = t.read,
6988
- data = _objectWithoutProperties__default['default'](t, _excluded$1);
6989
-
6990
- this.id = parent_message_id;
6991
- this.message = formatMessage(parent_message);
6992
- this.latestReplies = latest_replies.map(formatMessage);
6993
- this.participants = thread_participants;
6994
- this.replyCount = reply_count;
6995
- this.channel = channel;
6996
- this._channel = client.channel(t.channel.type, t.channel.id);
6997
- this._client = client;
7362
+ case 2:
7363
+ _this.state.partialNext({
7364
+ isLoading: true
7365
+ });
6998
7366
 
6999
- if (read) {
7000
- var _iterator = _createForOfIteratorHelper$1(read),
7001
- _step;
7367
+ _context.prev = 3;
7368
+ _context.next = 6;
7369
+ return _this.client.getThread(_this.id, {
7370
+ watch: true
7371
+ });
7002
7372
 
7003
- try {
7004
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
7005
- var r = _step.value;
7006
- this.read[r.user.id] = _objectSpread$2(_objectSpread$2({}, r), {}, {
7007
- last_read: new Date(r.last_read)
7008
- });
7009
- }
7010
- } catch (err) {
7011
- _iterator.e(err);
7012
- } finally {
7013
- _iterator.f();
7014
- }
7015
- }
7373
+ case 6:
7374
+ thread = _context.sent;
7016
7375
 
7017
- this.data = data;
7018
- }
7376
+ _this.hydrateState(thread);
7019
7377
 
7020
- _createClass__default['default'](Thread, [{
7021
- key: "getClient",
7022
- value: function getClient() {
7023
- return this._client;
7024
- }
7025
- /**
7026
- * addReply - Adds or updates a latestReplies to the thread
7027
- *
7028
- * @param {MessageResponse<StreamChatGenerics>} message reply message to be added.
7029
- */
7378
+ case 8:
7379
+ _context.prev = 8;
7030
7380
 
7031
- }, {
7032
- key: "addReply",
7033
- value: function addReply(message) {
7034
- if (message.parent_id !== this.message.id) {
7035
- throw new Error('Message does not belong to this thread');
7036
- }
7381
+ _this.state.partialNext({
7382
+ isLoading: false
7383
+ });
7037
7384
 
7038
- this.latestReplies = addToMessageList(this.latestReplies, formatMessage(message), true);
7039
- }
7040
- }, {
7041
- key: "updateReply",
7042
- value: function updateReply(message) {
7043
- this.latestReplies = this.latestReplies.map(function (m) {
7044
- if (m.id === message.id) {
7045
- return formatMessage(message);
7385
+ return _context.finish(8);
7386
+
7387
+ case 11:
7388
+ case "end":
7389
+ return _context.stop();
7390
+ }
7046
7391
  }
7392
+ }, _callee, null, [[3,, 8, 11]]);
7393
+ })));
7047
7394
 
7048
- return m;
7049
- });
7050
- }
7051
- }, {
7052
- key: "updateMessageOrReplyIfExists",
7053
- value: function updateMessageOrReplyIfExists(message) {
7054
- if (!message.parent_id && message.id !== this.message.id) {
7395
+ _defineProperty__default['default'](this, "hydrateState", function (thread) {
7396
+ if (thread === _this) {
7397
+ // skip if the instances are the same
7055
7398
  return;
7056
7399
  }
7057
7400
 
7058
- if (message.parent_id && message.parent_id !== this.message.id) {
7059
- return;
7401
+ if (thread.id !== _this.id) {
7402
+ throw new Error("Cannot hydrate thread state with using thread's state");
7060
7403
  }
7061
7404
 
7062
- if (message.parent_id && message.parent_id === this.message.id) {
7063
- this.updateReply(message);
7064
- return;
7065
- }
7405
+ var _thread$state$getLate = thread.state.getLatestValue(),
7406
+ read = _thread$state$getLate.read,
7407
+ replyCount = _thread$state$getLate.replyCount,
7408
+ replies = _thread$state$getLate.replies,
7409
+ parentMessage = _thread$state$getLate.parentMessage,
7410
+ participants = _thread$state$getLate.participants,
7411
+ createdAt = _thread$state$getLate.createdAt,
7412
+ deletedAt = _thread$state$getLate.deletedAt,
7413
+ updatedAt = _thread$state$getLate.updatedAt; // Preserve pending replies and append them to the updated list of replies
7066
7414
 
7067
- if (!message.parent_id && message.id === this.message.id) {
7068
- this.message = formatMessage(message);
7069
- }
7070
- }
7071
- }, {
7072
- key: "addReaction",
7073
- value: function addReaction(reaction, message, enforce_unique) {
7074
- var _this = this;
7075
7415
 
7076
- if (!message) return;
7077
- this.latestReplies = this.latestReplies.map(function (m) {
7078
- if (m.id === message.id) {
7079
- return formatMessage(_this._channel.state.addReaction(reaction, message, enforce_unique));
7080
- }
7416
+ var pendingReplies = Array.from(_this.failedRepliesMap.values());
7081
7417
 
7082
- return m;
7418
+ _this.state.partialNext({
7419
+ read: read,
7420
+ replyCount: replyCount,
7421
+ replies: pendingReplies.length ? replies.concat(pendingReplies) : replies,
7422
+ parentMessage: parentMessage,
7423
+ participants: participants,
7424
+ createdAt: createdAt,
7425
+ deletedAt: deletedAt,
7426
+ updatedAt: updatedAt,
7427
+ isStateStale: false
7083
7428
  });
7084
- }
7085
- }, {
7086
- key: "removeReaction",
7087
- value: function removeReaction(reaction, message) {
7088
- var _this2 = this;
7429
+ });
7089
7430
 
7090
- if (!message) return;
7091
- this.latestReplies = this.latestReplies.map(function (m) {
7092
- if (m.id === message.id) {
7093
- return formatMessage(_this2._channel.state.removeReaction(reaction, message));
7094
- }
7431
+ _defineProperty__default['default'](this, "registerSubscriptions", function () {
7432
+ if (_this.unsubscribeFunctions.size) {
7433
+ // Thread is already listening for events and changes
7434
+ return;
7435
+ }
7095
7436
 
7096
- return m;
7097
- });
7098
- }
7099
- }]);
7437
+ _this.unsubscribeFunctions.add(_this.subscribeMarkActiveThreadRead());
7100
7438
 
7101
- return Thread;
7102
- }();
7439
+ _this.unsubscribeFunctions.add(_this.subscribeReloadActiveStaleThread());
7103
7440
 
7104
- 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; }
7441
+ _this.unsubscribeFunctions.add(_this.subscribeMarkThreadStale());
7105
7442
 
7106
- 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; }
7443
+ _this.unsubscribeFunctions.add(_this.subscribeNewReplies());
7444
+
7445
+ _this.unsubscribeFunctions.add(_this.subscribeRepliesRead());
7446
+
7447
+ _this.unsubscribeFunctions.add(_this.subscribeReplyDeleted());
7448
+
7449
+ _this.unsubscribeFunctions.add(_this.subscribeMessageUpdated());
7450
+ });
7451
+
7452
+ _defineProperty__default['default'](this, "subscribeMarkActiveThreadRead", function () {
7453
+ return _this.state.subscribeWithSelector(function (nextValue) {
7454
+ return [nextValue.active, ownUnreadCountSelector(_this.client.userID)(nextValue)];
7455
+ }, function (_ref3) {
7456
+ var _ref4 = _slicedToArray__default['default'](_ref3, 2),
7457
+ active = _ref4[0],
7458
+ unreadMessageCount = _ref4[1];
7459
+
7460
+ if (!active || !unreadMessageCount) return;
7461
+
7462
+ _this.throttledMarkAsRead();
7463
+ });
7464
+ });
7465
+
7466
+ _defineProperty__default['default'](this, "subscribeReloadActiveStaleThread", function () {
7467
+ return _this.state.subscribeWithSelector(function (nextValue) {
7468
+ return [nextValue.active, nextValue.isStateStale];
7469
+ }, function (_ref5) {
7470
+ var _ref6 = _slicedToArray__default['default'](_ref5, 2),
7471
+ active = _ref6[0],
7472
+ isStateStale = _ref6[1];
7473
+
7474
+ if (active && isStateStale) {
7475
+ _this.reload();
7476
+ }
7477
+ });
7478
+ });
7479
+
7480
+ _defineProperty__default['default'](this, "subscribeMarkThreadStale", function () {
7481
+ return _this.client.on('user.watching.stop', function (event) {
7482
+ var _event$user, _event$channel;
7483
+
7484
+ var _this$state$getLatest = _this.state.getLatestValue(),
7485
+ channel = _this$state$getLatest.channel;
7486
+
7487
+ 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) {
7488
+ return;
7489
+ }
7490
+
7491
+ _this.state.partialNext({
7492
+ isStateStale: true
7493
+ });
7494
+ }).unsubscribe;
7495
+ });
7496
+
7497
+ _defineProperty__default['default'](this, "subscribeNewReplies", function () {
7498
+ return _this.client.on('message.new', function (event) {
7499
+ var _event$message, _event$message$user;
7500
+
7501
+ if (!_this.client.userID || ((_event$message = event.message) === null || _event$message === void 0 ? void 0 : _event$message.parent_id) !== _this.id) {
7502
+ return;
7503
+ }
7504
+
7505
+ var isOwnMessage = ((_event$message$user = event.message.user) === null || _event$message$user === void 0 ? void 0 : _event$message$user.id) === _this.client.userID;
7506
+
7507
+ var _this$state$getLatest2 = _this.state.getLatestValue(),
7508
+ active = _this$state$getLatest2.active,
7509
+ read = _this$state$getLatest2.read;
7510
+
7511
+ _this.upsertReplyLocally({
7512
+ message: event.message,
7513
+ // Message from current user could have been added optimistically,
7514
+ // so the actual timestamp might differ in the event
7515
+ timestampChanged: isOwnMessage
7516
+ });
7517
+
7518
+ if (active) {
7519
+ _this.throttledMarkAsRead();
7520
+ }
7521
+
7522
+ var nextRead = {};
7523
+
7524
+ for (var _i = 0, _Object$keys = Object.keys(read); _i < _Object$keys.length; _i++) {
7525
+ var userId = _Object$keys[_i];
7526
+ var userRead = read[userId];
7527
+
7528
+ if (userRead) {
7529
+ var _event$user2;
7530
+
7531
+ var nextUserRead = userRead;
7532
+
7533
+ if (userId === ((_event$user2 = event.user) === null || _event$user2 === void 0 ? void 0 : _event$user2.id)) {
7534
+ // The user who just sent a message to the thread has no unread messages
7535
+ // in that thread
7536
+ nextUserRead = _objectSpread$3(_objectSpread$3({}, nextUserRead), {}, {
7537
+ lastReadAt: event.created_at ? new Date(event.created_at) : new Date(),
7538
+ user: event.user,
7539
+ unreadMessageCount: 0
7540
+ });
7541
+ } else if (active && userId === _this.client.userID) ; else {
7542
+ // Increment unread count for all users except the author of the new message
7543
+ nextUserRead = _objectSpread$3(_objectSpread$3({}, nextUserRead), {}, {
7544
+ unreadMessageCount: userRead.unreadMessageCount + 1
7545
+ });
7546
+ }
7547
+
7548
+ nextRead[userId] = nextUserRead;
7549
+ }
7550
+ }
7551
+
7552
+ _this.state.partialNext({
7553
+ read: nextRead
7554
+ });
7555
+ }).unsubscribe;
7556
+ });
7557
+
7558
+ _defineProperty__default['default'](this, "subscribeRepliesRead", function () {
7559
+ return _this.client.on('message.read', function (event) {
7560
+ if (!event.user || !event.created_at || !event.thread) return;
7561
+ if (event.thread.parent_message_id !== _this.id) return;
7562
+ var userId = event.user.id;
7563
+ var createdAt = event.created_at;
7564
+ var user = event.user;
7565
+
7566
+ _this.state.next(function (current) {
7567
+ return _objectSpread$3(_objectSpread$3({}, current), {}, {
7568
+ read: _objectSpread$3(_objectSpread$3({}, current.read), {}, _defineProperty__default['default']({}, userId, {
7569
+ lastReadAt: new Date(createdAt),
7570
+ user: user,
7571
+ lastReadMessageId: event.last_read_message_id,
7572
+ unreadMessageCount: 0
7573
+ }))
7574
+ });
7575
+ });
7576
+ }).unsubscribe;
7577
+ });
7578
+
7579
+ _defineProperty__default['default'](this, "subscribeReplyDeleted", function () {
7580
+ return _this.client.on('message.deleted', function (event) {
7581
+ var _event$message2;
7582
+
7583
+ if (((_event$message2 = event.message) === null || _event$message2 === void 0 ? void 0 : _event$message2.parent_id) === _this.id && event.hard_delete) {
7584
+ return _this.deleteReplyLocally({
7585
+ message: event.message
7586
+ });
7587
+ }
7588
+ }).unsubscribe;
7589
+ });
7590
+
7591
+ _defineProperty__default['default'](this, "subscribeMessageUpdated", function () {
7592
+ var unsubscribeFunctions = ['message.updated', 'reaction.new', 'reaction.deleted'].map(function (eventType) {
7593
+ return _this.client.on(eventType, function (event) {
7594
+ if (event.message) {
7595
+ _this.updateParentMessageOrReplyLocally(event.message);
7596
+ }
7597
+ }).unsubscribe;
7598
+ });
7599
+ return function () {
7600
+ return unsubscribeFunctions.forEach(function (unsubscribe) {
7601
+ return unsubscribe();
7602
+ });
7603
+ };
7604
+ });
7605
+
7606
+ _defineProperty__default['default'](this, "unregisterSubscriptions", function () {
7607
+ _this.unsubscribeFunctions.forEach(function (cleanupFunction) {
7608
+ return cleanupFunction();
7609
+ });
7610
+
7611
+ _this.unsubscribeFunctions.clear();
7612
+ });
7613
+
7614
+ _defineProperty__default['default'](this, "deleteReplyLocally", function (_ref7) {
7615
+ var _replies$index, _replies;
7616
+
7617
+ var message = _ref7.message;
7618
+
7619
+ var _this$state$getLatest3 = _this.state.getLatestValue(),
7620
+ replies = _this$state$getLatest3.replies;
7621
+
7622
+ var index = findIndexInSortedArray({
7623
+ needle: formatMessage(message),
7624
+ sortedArray: replies,
7625
+ sortDirection: 'ascending',
7626
+ selectValueToCompare: function selectValueToCompare(reply) {
7627
+ return reply.created_at.getTime();
7628
+ }
7629
+ });
7630
+ 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;
7631
+
7632
+ if (actualIndex === null) {
7633
+ return;
7634
+ }
7635
+
7636
+ var updatedReplies = _toConsumableArray__default['default'](replies);
7637
+
7638
+ updatedReplies.splice(actualIndex, 1);
7639
+
7640
+ _this.state.partialNext({
7641
+ replies: updatedReplies
7642
+ });
7643
+ });
7644
+
7645
+ _defineProperty__default['default'](this, "upsertReplyLocally", function (_ref8) {
7646
+ var message = _ref8.message,
7647
+ _ref8$timestampChange = _ref8.timestampChanged,
7648
+ timestampChanged = _ref8$timestampChange === void 0 ? false : _ref8$timestampChange;
7649
+
7650
+ if (message.parent_id !== _this.id) {
7651
+ throw new Error('Reply does not belong to this thread');
7652
+ }
7653
+
7654
+ var formattedMessage = formatMessage(message);
7655
+
7656
+ if (message.status === 'failed') {
7657
+ // store failed reply so that it's not lost when reloading or hydrating
7658
+ _this.failedRepliesMap.set(formattedMessage.id, formattedMessage);
7659
+ } else if (_this.failedRepliesMap.has(message.id)) {
7660
+ _this.failedRepliesMap.delete(message.id);
7661
+ }
7662
+
7663
+ _this.state.next(function (current) {
7664
+ return _objectSpread$3(_objectSpread$3({}, current), {}, {
7665
+ replies: addToMessageList(current.replies, formattedMessage, timestampChanged)
7666
+ });
7667
+ });
7668
+ });
7669
+
7670
+ _defineProperty__default['default'](this, "updateParentMessageLocally", function (message) {
7671
+ if (message.id !== _this.id) {
7672
+ throw new Error('Message does not belong to this thread');
7673
+ }
7674
+
7675
+ _this.state.next(function (current) {
7676
+ var _message$reply_count;
7677
+
7678
+ var formattedMessage = formatMessage(message);
7679
+
7680
+ var newData = _objectSpread$3(_objectSpread$3({}, current), {}, {
7681
+ deletedAt: formattedMessage.deleted_at,
7682
+ parentMessage: formattedMessage,
7683
+ replyCount: (_message$reply_count = message.reply_count) !== null && _message$reply_count !== void 0 ? _message$reply_count : current.replyCount
7684
+ }); // update channel on channelData change (unlikely but handled anyway)
7685
+
7686
+
7687
+ if (message.channel) {
7688
+ newData['channel'] = _this.client.channel(message.channel.type, message.channel.id, message.channel);
7689
+ }
7690
+
7691
+ return newData;
7692
+ });
7693
+ });
7694
+
7695
+ _defineProperty__default['default'](this, "updateParentMessageOrReplyLocally", function (message) {
7696
+ if (message.parent_id === _this.id) {
7697
+ _this.upsertReplyLocally({
7698
+ message: message
7699
+ });
7700
+ }
7701
+
7702
+ if (!message.parent_id && message.id === _this.id) {
7703
+ _this.updateParentMessageLocally(message);
7704
+ }
7705
+ });
7706
+
7707
+ _defineProperty__default['default'](this, "markAsRead", /*#__PURE__*/_asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2() {
7708
+ var _ref10,
7709
+ _ref10$force,
7710
+ force,
7711
+ _args2 = arguments;
7712
+
7713
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
7714
+ while (1) {
7715
+ switch (_context2.prev = _context2.next) {
7716
+ case 0:
7717
+ _ref10 = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {}, _ref10$force = _ref10.force, force = _ref10$force === void 0 ? false : _ref10$force;
7718
+
7719
+ if (!(_this.ownUnreadCount === 0 && !force)) {
7720
+ _context2.next = 3;
7721
+ break;
7722
+ }
7723
+
7724
+ return _context2.abrupt("return", null);
7725
+
7726
+ case 3:
7727
+ _context2.next = 5;
7728
+ return _this.channel.markRead({
7729
+ thread_id: _this.id
7730
+ });
7731
+
7732
+ case 5:
7733
+ return _context2.abrupt("return", _context2.sent);
7734
+
7735
+ case 6:
7736
+ case "end":
7737
+ return _context2.stop();
7738
+ }
7739
+ }
7740
+ }, _callee2);
7741
+ })));
7742
+
7743
+ _defineProperty__default['default'](this, "throttledMarkAsRead", throttle(function () {
7744
+ return _this.markAsRead();
7745
+ }, MARK_AS_READ_THROTTLE_TIMEOUT, {
7746
+ trailing: true
7747
+ }));
7748
+
7749
+ _defineProperty__default['default'](this, "queryReplies", function () {
7750
+ var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7751
+
7752
+ var _ref11$limit = _ref11.limit,
7753
+ limit = _ref11$limit === void 0 ? DEFAULT_PAGE_LIMIT : _ref11$limit,
7754
+ _ref11$sort = _ref11.sort,
7755
+ sort = _ref11$sort === void 0 ? DEFAULT_SORT : _ref11$sort,
7756
+ otherOptions = _objectWithoutProperties__default['default'](_ref11, _excluded$1);
7757
+
7758
+ return _this.channel.getReplies(_this.id, _objectSpread$3({
7759
+ limit: limit
7760
+ }, otherOptions), sort);
7761
+ });
7762
+
7763
+ _defineProperty__default['default'](this, "loadNextPage", function () {
7764
+ var _ref12 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
7765
+ _ref12$limit = _ref12.limit,
7766
+ limit = _ref12$limit === void 0 ? DEFAULT_PAGE_LIMIT : _ref12$limit;
7767
+
7768
+ return _this.loadPage(limit);
7769
+ });
7770
+
7771
+ _defineProperty__default['default'](this, "loadPrevPage", function () {
7772
+ var _ref13 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
7773
+ _ref13$limit = _ref13.limit,
7774
+ limit = _ref13$limit === void 0 ? DEFAULT_PAGE_LIMIT : _ref13$limit;
7775
+
7776
+ return _this.loadPage(-limit);
7777
+ });
7778
+
7779
+ _defineProperty__default['default'](this, "loadPage", /*#__PURE__*/function () {
7780
+ var _ref14 = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee3(count) {
7781
+ var _this$state$getLatest4, pagination, _ref15, _ref16, loadingKey, cursorKey, insertionMethodKey, queryOptions, limit, _replies$at$id, _replies$at, data, replies, maybeNextCursor;
7782
+
7783
+ return _regeneratorRuntime__default['default'].wrap(function _callee3$(_context3) {
7784
+ while (1) {
7785
+ switch (_context3.prev = _context3.next) {
7786
+ case 0:
7787
+ _this$state$getLatest4 = _this.state.getLatestValue(), pagination = _this$state$getLatest4.pagination;
7788
+ _ref15 = count > 0 ? ['isLoadingNext', 'nextCursor', 'push'] : ['isLoadingPrev', 'prevCursor', 'unshift'], _ref16 = _slicedToArray__default['default'](_ref15, 3), loadingKey = _ref16[0], cursorKey = _ref16[1], insertionMethodKey = _ref16[2];
7789
+
7790
+ if (!(pagination[loadingKey] || pagination[cursorKey] === null)) {
7791
+ _context3.next = 4;
7792
+ break;
7793
+ }
7794
+
7795
+ return _context3.abrupt("return");
7796
+
7797
+ case 4:
7798
+ queryOptions = _defineProperty__default['default']({}, count > 0 ? 'id_gt' : 'id_lt', pagination[cursorKey]);
7799
+ limit = Math.abs(count);
7800
+
7801
+ _this.state.partialNext({
7802
+ pagination: _objectSpread$3(_objectSpread$3({}, pagination), {}, _defineProperty__default['default']({}, loadingKey, true))
7803
+ });
7804
+
7805
+ _context3.prev = 7;
7806
+ _context3.next = 10;
7807
+ return _this.queryReplies(_objectSpread$3(_objectSpread$3({}, queryOptions), {}, {
7808
+ limit: limit
7809
+ }));
7810
+
7811
+ case 10:
7812
+ data = _context3.sent;
7813
+ replies = data.messages.map(formatMessage);
7814
+ 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;
7815
+
7816
+ _this.state.next(function (current) {
7817
+ var _objectSpread4;
7818
+
7819
+ var nextReplies = current.replies; // prevent re-creating array if there's nothing to add to the current one
7820
+
7821
+ if (replies.length > 0) {
7822
+ var _nextReplies;
7823
+
7824
+ nextReplies = _toConsumableArray__default['default'](current.replies);
7825
+
7826
+ (_nextReplies = nextReplies)[insertionMethodKey].apply(_nextReplies, _toConsumableArray__default['default'](replies));
7827
+ }
7828
+
7829
+ return _objectSpread$3(_objectSpread$3({}, current), {}, {
7830
+ replies: nextReplies,
7831
+ 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))
7832
+ });
7833
+ });
7834
+
7835
+ _context3.next = 20;
7836
+ break;
7837
+
7838
+ case 16:
7839
+ _context3.prev = 16;
7840
+ _context3.t0 = _context3["catch"](7);
7841
+
7842
+ _this.client.logger('error', _context3.t0.message);
7843
+
7844
+ _this.state.next(function (current) {
7845
+ return _objectSpread$3(_objectSpread$3({}, current), {}, {
7846
+ pagination: _objectSpread$3(_objectSpread$3({}, current.pagination), {}, _defineProperty__default['default']({}, loadingKey, false))
7847
+ });
7848
+ });
7849
+
7850
+ case 20:
7851
+ case "end":
7852
+ return _context3.stop();
7853
+ }
7854
+ }
7855
+ }, _callee3, null, [[7, 16]]);
7856
+ }));
7857
+
7858
+ return function (_x) {
7859
+ return _ref14.apply(this, arguments);
7860
+ };
7861
+ }());
7862
+
7863
+ this.state = new StateStore({
7864
+ active: false,
7865
+ channel: client.channel(threadData.channel.type, threadData.channel.id),
7866
+ createdAt: new Date(threadData.created_at),
7867
+ deletedAt: threadData.deleted_at ? new Date(threadData.deleted_at) : null,
7868
+ isLoading: false,
7869
+ isStateStale: false,
7870
+ pagination: repliesPaginationFromInitialThread(threadData),
7871
+ parentMessage: formatMessage(threadData.parent_message),
7872
+ participants: threadData.thread_participants,
7873
+ read: formatReadState((_threadData$read = threadData.read) !== null && _threadData$read !== void 0 ? _threadData$read : []),
7874
+ replies: threadData.latest_replies.map(formatMessage),
7875
+ replyCount: (_threadData$reply_cou = threadData.reply_count) !== null && _threadData$reply_cou !== void 0 ? _threadData$reply_cou : 0,
7876
+ updatedAt: threadData.updated_at ? new Date(threadData.updated_at) : null
7877
+ });
7878
+ this.id = threadData.parent_message_id;
7879
+ this.client = client;
7880
+ }
7881
+
7882
+ _createClass__default['default'](Thread, [{
7883
+ key: "channel",
7884
+ get: function get() {
7885
+ return this.state.getLatestValue().channel;
7886
+ }
7887
+ }, {
7888
+ key: "hasStaleState",
7889
+ get: function get() {
7890
+ return this.state.getLatestValue().isStateStale;
7891
+ }
7892
+ }, {
7893
+ key: "ownUnreadCount",
7894
+ get: function get() {
7895
+ return ownUnreadCountSelector(this.client.userID)(this.state.getLatestValue());
7896
+ }
7897
+ }]);
7898
+
7899
+ return Thread;
7900
+ }();
7901
+
7902
+ var formatReadState = function formatReadState(read) {
7903
+ return read.reduce(function (state, userRead) {
7904
+ var _userRead$unread_mess;
7905
+
7906
+ state[userRead.user.id] = {
7907
+ user: userRead.user,
7908
+ lastReadMessageId: userRead.last_read_message_id,
7909
+ unreadMessageCount: (_userRead$unread_mess = userRead.unread_messages) !== null && _userRead$unread_mess !== void 0 ? _userRead$unread_mess : 0,
7910
+ lastReadAt: new Date(userRead.last_read)
7911
+ };
7912
+ return state;
7913
+ }, {});
7914
+ };
7915
+
7916
+ var repliesPaginationFromInitialThread = function repliesPaginationFromInitialThread(thread) {
7917
+ var _thread$latest_replie, _thread$latest_replie2;
7918
+
7919
+ var latestRepliesContainsAllReplies = thread.latest_replies.length === thread.reply_count;
7920
+ return {
7921
+ nextCursor: null,
7922
+ 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,
7923
+ isLoadingNext: false,
7924
+ isLoadingPrev: false
7925
+ };
7926
+ };
7927
+
7928
+ var ownUnreadCountSelector = function ownUnreadCountSelector(currentUserId) {
7929
+ return function (state) {
7930
+ var _state$read$currentUs;
7931
+
7932
+ return currentUserId && ((_state$read$currentUs = state.read[currentUserId]) === null || _state$read$currentUs === void 0 ? void 0 : _state$read$currentUs.unreadMessageCount) || 0;
7933
+ };
7934
+ };
7935
+
7936
+ 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; }
7937
+
7938
+ 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; }
7107
7939
  var MODERATION_ENTITY_TYPES = {
7108
7940
  user: 'stream:user',
7109
7941
  message: 'stream:chat:v1:message'
@@ -7220,7 +8052,7 @@ var Moderation = /*#__PURE__*/function () {
7220
8052
  case 0:
7221
8053
  options = _args3.length > 4 && _args3[4] !== undefined ? _args3[4] : {};
7222
8054
  _context3.next = 3;
7223
- return this.client.post(this.client.baseURL + '/api/v2/moderation/flag', _objectSpread$1({
8055
+ return this.client.post(this.client.baseURL + '/api/v2/moderation/flag', _objectSpread$2({
7224
8056
  entity_type: entityType,
7225
8057
  entity_id: entityId,
7226
8058
  entity_creator_id: entityCreatorID,
@@ -7265,7 +8097,7 @@ var Moderation = /*#__PURE__*/function () {
7265
8097
  case 0:
7266
8098
  options = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : {};
7267
8099
  _context4.next = 3;
7268
- return this.client.post(this.client.baseURL + '/api/v2/moderation/mute', _objectSpread$1({
8100
+ return this.client.post(this.client.baseURL + '/api/v2/moderation/mute', _objectSpread$2({
7269
8101
  target_ids: [targetID]
7270
8102
  }, options));
7271
8103
 
@@ -7303,7 +8135,7 @@ var Moderation = /*#__PURE__*/function () {
7303
8135
  switch (_context5.prev = _context5.next) {
7304
8136
  case 0:
7305
8137
  _context5.next = 2;
7306
- return this.client.post(this.client.baseURL + '/api/v2/moderation/unmute', _objectSpread$1({
8138
+ return this.client.post(this.client.baseURL + '/api/v2/moderation/unmute', _objectSpread$2({
7307
8139
  target_ids: [targetID]
7308
8140
  }, options));
7309
8141
 
@@ -7345,7 +8177,7 @@ var Moderation = /*#__PURE__*/function () {
7345
8177
  case 0:
7346
8178
  options = _args6.length > 1 && _args6[1] !== undefined ? _args6[1] : {};
7347
8179
  _context6.next = 3;
7348
- return this.client.get(this.client.baseURL + "/api/v2/moderation/user_report", _objectSpread$1({
8180
+ return this.client.get(this.client.baseURL + "/api/v2/moderation/user_report", _objectSpread$2({
7349
8181
  user_id: userID
7350
8182
  }, options));
7351
8183
 
@@ -7389,7 +8221,7 @@ var Moderation = /*#__PURE__*/function () {
7389
8221
  sort = _args7.length > 1 && _args7[1] !== undefined ? _args7[1] : [];
7390
8222
  options = _args7.length > 2 && _args7[2] !== undefined ? _args7[2] : {};
7391
8223
  _context7.next = 5;
7392
- return this.client.post(this.client.baseURL + '/api/v2/moderation/review_queue', _objectSpread$1({
8224
+ return this.client.post(this.client.baseURL + '/api/v2/moderation/review_queue', _objectSpread$2({
7393
8225
  filter: filterConditions,
7394
8226
  sort: normalizeQuerySort(sort)
7395
8227
  }, options));
@@ -7492,7 +8324,7 @@ var Moderation = /*#__PURE__*/function () {
7492
8324
  case 0:
7493
8325
  options = _args10.length > 2 && _args10[2] !== undefined ? _args10[2] : {};
7494
8326
  _context10.next = 3;
7495
- return this.client.post(this.client.baseURL + '/api/v2/moderation/submit_action', _objectSpread$1({
8327
+ return this.client.post(this.client.baseURL + '/api/v2/moderation/submit_action', _objectSpread$2({
7496
8328
  action_type: actionType,
7497
8329
  item_id: itemID
7498
8330
  }, options));
@@ -7519,6 +8351,454 @@ var Moderation = /*#__PURE__*/function () {
7519
8351
  return Moderation;
7520
8352
  }();
7521
8353
 
8354
+ 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; } } }; }
8355
+
8356
+ 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); }
8357
+
8358
+ 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; }
8359
+
8360
+ 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; }
8361
+
8362
+ 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; }
8363
+ var DEFAULT_CONNECTION_RECOVERY_THROTTLE_DURATION = 1000;
8364
+ var MAX_QUERY_THREADS_LIMIT = 25;
8365
+ var ThreadManager = /*#__PURE__*/function () {
8366
+ function ThreadManager(_ref) {
8367
+ var _this = this;
8368
+
8369
+ var client = _ref.client;
8370
+
8371
+ _classCallCheck__default['default'](this, ThreadManager);
8372
+
8373
+ _defineProperty__default['default'](this, "state", void 0);
8374
+
8375
+ _defineProperty__default['default'](this, "client", void 0);
8376
+
8377
+ _defineProperty__default['default'](this, "unsubscribeFunctions", new Set());
8378
+
8379
+ _defineProperty__default['default'](this, "threadsByIdGetterCache", void 0);
8380
+
8381
+ _defineProperty__default['default'](this, "activate", function () {
8382
+ _this.state.partialNext({
8383
+ active: true
8384
+ });
8385
+ });
8386
+
8387
+ _defineProperty__default['default'](this, "deactivate", function () {
8388
+ _this.state.partialNext({
8389
+ active: false
8390
+ });
8391
+ });
8392
+
8393
+ _defineProperty__default['default'](this, "registerSubscriptions", function () {
8394
+ if (_this.unsubscribeFunctions.size) return;
8395
+
8396
+ _this.unsubscribeFunctions.add(_this.subscribeUnreadThreadsCountChange());
8397
+
8398
+ _this.unsubscribeFunctions.add(_this.subscribeManageThreadSubscriptions());
8399
+
8400
+ _this.unsubscribeFunctions.add(_this.subscribeReloadOnActivation());
8401
+
8402
+ _this.unsubscribeFunctions.add(_this.subscribeNewReplies());
8403
+
8404
+ _this.unsubscribeFunctions.add(_this.subscribeRecoverAfterConnectionDrop());
8405
+ });
8406
+
8407
+ _defineProperty__default['default'](this, "subscribeUnreadThreadsCountChange", function () {
8408
+ var _ref3;
8409
+
8410
+ // initiate
8411
+ var _ref2 = (_ref3 = _this.client.user) !== null && _ref3 !== void 0 ? _ref3 : {},
8412
+ _ref2$unread_threads = _ref2.unread_threads,
8413
+ unreadThreadCount = _ref2$unread_threads === void 0 ? 0 : _ref2$unread_threads;
8414
+
8415
+ _this.state.partialNext({
8416
+ unreadThreadCount: unreadThreadCount
8417
+ });
8418
+
8419
+ var unsubscribeFunctions = ['health.check', 'notification.mark_read', 'notification.thread_message_new', 'notification.channel_deleted'].map(function (eventType) {
8420
+ return _this.client.on(eventType, function (event) {
8421
+ var _event$me;
8422
+
8423
+ var _ref4 = (_event$me = event.me) !== null && _event$me !== void 0 ? _event$me : event,
8424
+ unreadThreadCount = _ref4.unread_threads;
8425
+
8426
+ if (typeof unreadThreadCount === 'number') {
8427
+ _this.state.partialNext({
8428
+ unreadThreadCount: unreadThreadCount
8429
+ });
8430
+ }
8431
+ }).unsubscribe;
8432
+ });
8433
+ return function () {
8434
+ return unsubscribeFunctions.forEach(function (unsubscribe) {
8435
+ return unsubscribe();
8436
+ });
8437
+ };
8438
+ });
8439
+
8440
+ _defineProperty__default['default'](this, "subscribeManageThreadSubscriptions", function () {
8441
+ return _this.state.subscribeWithSelector(function (nextValue) {
8442
+ return [nextValue.threads];
8443
+ }, function (_ref5, prev) {
8444
+ var _ref6 = _slicedToArray__default['default'](_ref5, 1),
8445
+ nextThreads = _ref6[0];
8446
+
8447
+ var _ref7 = prev !== null && prev !== void 0 ? prev : [],
8448
+ _ref8 = _slicedToArray__default['default'](_ref7, 1),
8449
+ _ref8$ = _ref8[0],
8450
+ prevThreads = _ref8$ === void 0 ? [] : _ref8$; // Thread instance was removed if there's no thread with the given id at all,
8451
+ // or it was replaced with a new instance
8452
+
8453
+
8454
+ var removedThreads = prevThreads.filter(function (thread) {
8455
+ return thread !== _this.threadsById[thread.id];
8456
+ });
8457
+ nextThreads.forEach(function (thread) {
8458
+ return thread.registerSubscriptions();
8459
+ });
8460
+ removedThreads.forEach(function (thread) {
8461
+ return thread.unregisterSubscriptions();
8462
+ });
8463
+ });
8464
+ });
8465
+
8466
+ _defineProperty__default['default'](this, "subscribeReloadOnActivation", function () {
8467
+ return _this.state.subscribeWithSelector(function (nextValue) {
8468
+ return [nextValue.active];
8469
+ }, function (_ref9) {
8470
+ var _ref10 = _slicedToArray__default['default'](_ref9, 1),
8471
+ active = _ref10[0];
8472
+
8473
+ if (active) _this.reload();
8474
+ });
8475
+ });
8476
+
8477
+ _defineProperty__default['default'](this, "subscribeNewReplies", function () {
8478
+ return _this.client.on('notification.thread_message_new', function (event) {
8479
+ var _event$message;
8480
+
8481
+ var parentId = (_event$message = event.message) === null || _event$message === void 0 ? void 0 : _event$message.parent_id;
8482
+ if (!parentId) return;
8483
+
8484
+ var _this$state$getLatest = _this.state.getLatestValue(),
8485
+ unseenThreadIds = _this$state$getLatest.unseenThreadIds,
8486
+ ready = _this$state$getLatest.ready;
8487
+
8488
+ if (!ready) return;
8489
+
8490
+ if (_this.threadsById[parentId]) {
8491
+ _this.state.partialNext({
8492
+ isThreadOrderStale: true
8493
+ });
8494
+ } else if (!unseenThreadIds.includes(parentId)) {
8495
+ _this.state.partialNext({
8496
+ unseenThreadIds: unseenThreadIds.concat(parentId)
8497
+ });
8498
+ }
8499
+ }).unsubscribe;
8500
+ });
8501
+
8502
+ _defineProperty__default['default'](this, "subscribeRecoverAfterConnectionDrop", function () {
8503
+ var unsubscribeConnectionDropped = _this.client.on('connection.changed', function (event) {
8504
+ if (event.online === false) {
8505
+ _this.state.next(function (current) {
8506
+ return current.lastConnectionDropAt ? current : _objectSpread$1(_objectSpread$1({}, current), {}, {
8507
+ lastConnectionDropAt: new Date()
8508
+ });
8509
+ });
8510
+ }
8511
+ }).unsubscribe;
8512
+
8513
+ var throttledHandleConnectionRecovered = throttle(function () {
8514
+ var _this$state$getLatest2 = _this.state.getLatestValue(),
8515
+ lastConnectionDropAt = _this$state$getLatest2.lastConnectionDropAt;
8516
+
8517
+ if (!lastConnectionDropAt) return;
8518
+
8519
+ _this.reload({
8520
+ force: true
8521
+ });
8522
+ }, DEFAULT_CONNECTION_RECOVERY_THROTTLE_DURATION, {
8523
+ trailing: true
8524
+ });
8525
+
8526
+ var unsubscribeConnectionRecovered = _this.client.on('connection.recovered', throttledHandleConnectionRecovered).unsubscribe;
8527
+
8528
+ return function () {
8529
+ unsubscribeConnectionDropped();
8530
+ unsubscribeConnectionRecovered();
8531
+ };
8532
+ });
8533
+
8534
+ _defineProperty__default['default'](this, "unregisterSubscriptions", function () {
8535
+ _this.state.getLatestValue().threads.forEach(function (thread) {
8536
+ return thread.unregisterSubscriptions();
8537
+ });
8538
+
8539
+ _this.unsubscribeFunctions.forEach(function (cleanupFunction) {
8540
+ return cleanupFunction();
8541
+ });
8542
+
8543
+ _this.unsubscribeFunctions.clear();
8544
+ });
8545
+
8546
+ _defineProperty__default['default'](this, "reload", /*#__PURE__*/_asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee() {
8547
+ var _ref12,
8548
+ _ref12$force,
8549
+ force,
8550
+ _this$state$getLatest3,
8551
+ threads,
8552
+ unseenThreadIds,
8553
+ isThreadOrderStale,
8554
+ pagination,
8555
+ ready,
8556
+ limit,
8557
+ response,
8558
+ currentThreads,
8559
+ nextThreads,
8560
+ _iterator,
8561
+ _step,
8562
+ incomingThread,
8563
+ existingThread,
8564
+ _args = arguments;
8565
+
8566
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
8567
+ while (1) {
8568
+ switch (_context.prev = _context.next) {
8569
+ case 0:
8570
+ _ref12 = _args.length > 0 && _args[0] !== undefined ? _args[0] : {}, _ref12$force = _ref12.force, force = _ref12$force === void 0 ? false : _ref12$force;
8571
+ _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;
8572
+
8573
+ if (!pagination.isLoading) {
8574
+ _context.next = 4;
8575
+ break;
8576
+ }
8577
+
8578
+ return _context.abrupt("return");
8579
+
8580
+ case 4:
8581
+ if (!(!force && ready && !unseenThreadIds.length && !isThreadOrderStale)) {
8582
+ _context.next = 6;
8583
+ break;
8584
+ }
8585
+
8586
+ return _context.abrupt("return");
8587
+
8588
+ case 6:
8589
+ limit = threads.length + unseenThreadIds.length;
8590
+ _context.prev = 7;
8591
+
8592
+ _this.state.next(function (current) {
8593
+ return _objectSpread$1(_objectSpread$1({}, current), {}, {
8594
+ pagination: _objectSpread$1(_objectSpread$1({}, current.pagination), {}, {
8595
+ isLoading: true
8596
+ })
8597
+ });
8598
+ });
8599
+
8600
+ _context.next = 11;
8601
+ return _this.queryThreads({
8602
+ limit: Math.min(limit, MAX_QUERY_THREADS_LIMIT)
8603
+ });
8604
+
8605
+ case 11:
8606
+ response = _context.sent;
8607
+ currentThreads = _this.threadsById;
8608
+ nextThreads = [];
8609
+ _iterator = _createForOfIteratorHelper$1(response.threads);
8610
+
8611
+ try {
8612
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
8613
+ incomingThread = _step.value;
8614
+ existingThread = currentThreads[incomingThread.id];
8615
+
8616
+ if (existingThread) {
8617
+ // Reuse thread instances if possible
8618
+ nextThreads.push(existingThread);
8619
+
8620
+ if (existingThread.hasStaleState) {
8621
+ existingThread.hydrateState(incomingThread);
8622
+ }
8623
+ } else {
8624
+ nextThreads.push(incomingThread);
8625
+ }
8626
+ }
8627
+ } catch (err) {
8628
+ _iterator.e(err);
8629
+ } finally {
8630
+ _iterator.f();
8631
+ }
8632
+
8633
+ _this.state.next(function (current) {
8634
+ var _response$next;
8635
+
8636
+ return _objectSpread$1(_objectSpread$1({}, current), {}, {
8637
+ threads: nextThreads,
8638
+ unseenThreadIds: [],
8639
+ isThreadOrderStale: false,
8640
+ pagination: _objectSpread$1(_objectSpread$1({}, current.pagination), {}, {
8641
+ isLoading: false,
8642
+ nextCursor: (_response$next = response.next) !== null && _response$next !== void 0 ? _response$next : null
8643
+ }),
8644
+ ready: true
8645
+ });
8646
+ });
8647
+
8648
+ _context.next = 23;
8649
+ break;
8650
+
8651
+ case 19:
8652
+ _context.prev = 19;
8653
+ _context.t0 = _context["catch"](7);
8654
+
8655
+ _this.client.logger('error', _context.t0.message);
8656
+
8657
+ _this.state.next(function (current) {
8658
+ return _objectSpread$1(_objectSpread$1({}, current), {}, {
8659
+ pagination: _objectSpread$1(_objectSpread$1({}, current.pagination), {}, {
8660
+ isLoading: false
8661
+ })
8662
+ });
8663
+ });
8664
+
8665
+ case 23:
8666
+ case "end":
8667
+ return _context.stop();
8668
+ }
8669
+ }
8670
+ }, _callee, null, [[7, 19]]);
8671
+ })));
8672
+
8673
+ _defineProperty__default['default'](this, "queryThreads", function () {
8674
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
8675
+ return _this.client.queryThreads(_objectSpread$1({
8676
+ limit: 25,
8677
+ participant_limit: 10,
8678
+ reply_limit: 10,
8679
+ watch: true
8680
+ }, options));
8681
+ });
8682
+
8683
+ _defineProperty__default['default'](this, "loadNextPage", /*#__PURE__*/_asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee2() {
8684
+ var options,
8685
+ _this$state$getLatest4,
8686
+ pagination,
8687
+ response,
8688
+ _args2 = arguments;
8689
+
8690
+ return _regeneratorRuntime__default['default'].wrap(function _callee2$(_context2) {
8691
+ while (1) {
8692
+ switch (_context2.prev = _context2.next) {
8693
+ case 0:
8694
+ options = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {};
8695
+ _this$state$getLatest4 = _this.state.getLatestValue(), pagination = _this$state$getLatest4.pagination;
8696
+
8697
+ if (!(pagination.isLoadingNext || !pagination.nextCursor)) {
8698
+ _context2.next = 4;
8699
+ break;
8700
+ }
8701
+
8702
+ return _context2.abrupt("return");
8703
+
8704
+ case 4:
8705
+ _context2.prev = 4;
8706
+
8707
+ _this.state.partialNext({
8708
+ pagination: _objectSpread$1(_objectSpread$1({}, pagination), {}, {
8709
+ isLoadingNext: true
8710
+ })
8711
+ });
8712
+
8713
+ _context2.next = 8;
8714
+ return _this.queryThreads(_objectSpread$1(_objectSpread$1({}, options), {}, {
8715
+ next: pagination.nextCursor
8716
+ }));
8717
+
8718
+ case 8:
8719
+ response = _context2.sent;
8720
+
8721
+ _this.state.next(function (current) {
8722
+ var _response$next2;
8723
+
8724
+ return _objectSpread$1(_objectSpread$1({}, current), {}, {
8725
+ threads: response.threads.length ? current.threads.concat(response.threads) : current.threads,
8726
+ pagination: _objectSpread$1(_objectSpread$1({}, current.pagination), {}, {
8727
+ nextCursor: (_response$next2 = response.next) !== null && _response$next2 !== void 0 ? _response$next2 : null,
8728
+ isLoadingNext: false
8729
+ })
8730
+ });
8731
+ });
8732
+
8733
+ _context2.next = 16;
8734
+ break;
8735
+
8736
+ case 12:
8737
+ _context2.prev = 12;
8738
+ _context2.t0 = _context2["catch"](4);
8739
+
8740
+ _this.client.logger('error', _context2.t0.message);
8741
+
8742
+ _this.state.next(function (current) {
8743
+ return _objectSpread$1(_objectSpread$1({}, current), {}, {
8744
+ pagination: _objectSpread$1(_objectSpread$1({}, current.pagination), {}, {
8745
+ isLoadingNext: false
8746
+ })
8747
+ });
8748
+ });
8749
+
8750
+ case 16:
8751
+ case "end":
8752
+ return _context2.stop();
8753
+ }
8754
+ }
8755
+ }, _callee2, null, [[4, 12]]);
8756
+ })));
8757
+
8758
+ this.client = client;
8759
+ this.state = new StateStore({
8760
+ active: false,
8761
+ isThreadOrderStale: false,
8762
+ threads: [],
8763
+ unreadThreadCount: 0,
8764
+ unseenThreadIds: [],
8765
+ lastConnectionDropAt: null,
8766
+ pagination: {
8767
+ isLoading: false,
8768
+ isLoadingNext: false,
8769
+ nextCursor: null
8770
+ },
8771
+ ready: false
8772
+ });
8773
+ this.threadsByIdGetterCache = {
8774
+ threads: [],
8775
+ threadsById: {}
8776
+ };
8777
+ }
8778
+
8779
+ _createClass__default['default'](ThreadManager, [{
8780
+ key: "threadsById",
8781
+ get: function get() {
8782
+ var _this$state$getLatest5 = this.state.getLatestValue(),
8783
+ threads = _this$state$getLatest5.threads;
8784
+
8785
+ if (threads === this.threadsByIdGetterCache.threads) {
8786
+ return this.threadsByIdGetterCache.threadsById;
8787
+ }
8788
+
8789
+ var threadsById = threads.reduce(function (newThreadsById, thread) {
8790
+ newThreadsById[thread.id] = thread;
8791
+ return newThreadsById;
8792
+ }, {});
8793
+ this.threadsByIdGetterCache.threads = threads;
8794
+ this.threadsByIdGetterCache.threadsById = threadsById;
8795
+ return threadsById;
8796
+ }
8797
+ }]);
8798
+
8799
+ return ThreadManager;
8800
+ }();
8801
+
7522
8802
  var _excluded = ["created_at", "updated_at", "last_active", "online"],
7523
8803
  _excluded2 = ["params", "headers"];
7524
8804
 
@@ -7547,6 +8827,8 @@ var StreamChat = /*#__PURE__*/function () {
7547
8827
 
7548
8828
  _defineProperty__default['default'](this, "activeChannels", void 0);
7549
8829
 
8830
+ _defineProperty__default['default'](this, "threads", void 0);
8831
+
7550
8832
  _defineProperty__default['default'](this, "anonymous", void 0);
7551
8833
 
7552
8834
  _defineProperty__default['default'](this, "persistUserOnConnectionFailure", void 0);
@@ -7778,7 +9060,7 @@ var StreamChat = /*#__PURE__*/function () {
7778
9060
  tags: ['connection', 'client']
7779
9061
  });
7780
9062
 
7781
- return _context3.abrupt("return", Promise.resolve());
9063
+ return _context3.abrupt("return");
7782
9064
 
7783
9065
  case 8:
7784
9066
  _this.clientID = "".concat(_this.userID, "--").concat(randomId());
@@ -8386,8 +9668,8 @@ var StreamChat = /*#__PURE__*/function () {
8386
9668
  this.tokenManager = new TokenManager(this.secret);
8387
9669
  this.consecutiveFailures = 0;
8388
9670
  this.insightMetrics = new InsightMetrics();
8389
- this.defaultWSTimeoutWithFallback = 6000;
8390
- this.defaultWSTimeout = 15000;
9671
+ this.defaultWSTimeoutWithFallback = 6 * 1000;
9672
+ this.defaultWSTimeout = 15 * 1000;
8391
9673
  this.axiosInstance.defaults.paramsSerializer = axiosParamsSerializer;
8392
9674
  /**
8393
9675
  * logger function should accept 3 parameters:
@@ -8442,6 +9724,9 @@ var StreamChat = /*#__PURE__*/function () {
8442
9724
  return null;
8443
9725
  };
8444
9726
  this.recoverStateOnReconnect = this.options.recoverStateOnReconnect;
9727
+ this.threads = new ThreadManager({
9728
+ client: this
9729
+ });
8445
9730
  }
8446
9731
  /**
8447
9732
  * Get a client instance
@@ -9592,7 +10877,7 @@ var StreamChat = /*#__PURE__*/function () {
9592
10877
  isLatestMessageSet: true
9593
10878
  }
9594
10879
  });
9595
- return _context20.abrupt("return", this.hydrateActiveChannels(data.channels, stateOptions));
10880
+ return _context20.abrupt("return", this.hydrateActiveChannels(data.channels, stateOptions, options));
9596
10881
 
9597
10882
  case 13:
9598
10883
  case "end":
@@ -9642,7 +10927,7 @@ var StreamChat = /*#__PURE__*/function () {
9642
10927
  sort: normalizeQuerySort(sort)
9643
10928
  }, options);
9644
10929
  _context21.next = 7;
9645
- return this.post(this.baseURL + '/messages/' + messageID + '/reactions', payload);
10930
+ return this.post(this.baseURL + '/messages/' + encodeURIComponent(messageID) + '/reactions', payload);
9646
10931
 
9647
10932
  case 7:
9648
10933
  return _context21.abrupt("return", _context21.sent);
@@ -9666,9 +10951,11 @@ var StreamChat = /*#__PURE__*/function () {
9666
10951
  value: function hydrateActiveChannels() {
9667
10952
  var channelsFromApi = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
9668
10953
  var stateOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
10954
+ var queryChannelsOptions = arguments.length > 2 ? arguments[2] : undefined;
9669
10955
  var skipInitialization = stateOptions.skipInitialization,
9670
10956
  _stateOptions$offline = stateOptions.offlineMode,
9671
10957
  offlineMode = _stateOptions$offline === void 0 ? false : _stateOptions$offline;
10958
+ var channels = [];
9672
10959
 
9673
10960
  var _iterator2 = _createForOfIteratorHelper(channelsFromApi),
9674
10961
  _step2;
@@ -9678,40 +10965,42 @@ var StreamChat = /*#__PURE__*/function () {
9678
10965
  var channelState = _step2.value;
9679
10966
 
9680
10967
  this._addChannelConfig(channelState.channel);
9681
- }
9682
- } catch (err) {
9683
- _iterator2.e(err);
9684
- } finally {
9685
- _iterator2.f();
9686
- }
9687
-
9688
- var channels = [];
9689
10968
 
9690
- var _iterator3 = _createForOfIteratorHelper(channelsFromApi),
9691
- _step3;
9692
-
9693
- try {
9694
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
9695
- var _channelState = _step3.value;
9696
- var c = this.channel(_channelState.channel.type, _channelState.channel.id);
9697
- c.data = _channelState.channel;
10969
+ var c = this.channel(channelState.channel.type, channelState.channel.id);
10970
+ c.data = channelState.channel;
9698
10971
  c.offlineMode = offlineMode;
9699
10972
  c.initialized = !offlineMode;
10973
+ var updatedMessagesSet = void 0;
9700
10974
 
9701
10975
  if (skipInitialization === undefined) {
9702
- c._initializeState(_channelState, 'latest');
9703
- } else if (!skipInitialization.includes(_channelState.channel.id)) {
10976
+ var _c$_initializeState = c._initializeState(channelState, 'latest'),
10977
+ messageSet = _c$_initializeState.messageSet;
10978
+
10979
+ updatedMessagesSet = messageSet;
10980
+ } else if (!skipInitialization.includes(channelState.channel.id)) {
9704
10981
  c.state.clearMessages();
9705
10982
 
9706
- c._initializeState(_channelState, 'latest');
10983
+ var _c$_initializeState2 = c._initializeState(channelState, 'latest'),
10984
+ _messageSet = _c$_initializeState2.messageSet;
10985
+
10986
+ updatedMessagesSet = _messageSet;
10987
+ }
10988
+
10989
+ if (updatedMessagesSet) {
10990
+ updatedMessagesSet.pagination = _objectSpread(_objectSpread({}, updatedMessagesSet.pagination), messageSetPagination({
10991
+ parentSet: updatedMessagesSet,
10992
+ requestedPageSize: (queryChannelsOptions === null || queryChannelsOptions === void 0 ? void 0 : queryChannelsOptions.message_limit) || DEFAULT_QUERY_CHANNELS_MESSAGE_LIST_PAGE_SIZE,
10993
+ returnedPage: channelState.messages,
10994
+ logger: this.logger
10995
+ }));
9707
10996
  }
9708
10997
 
9709
10998
  channels.push(c);
9710
10999
  }
9711
11000
  } catch (err) {
9712
- _iterator3.e(err);
11001
+ _iterator2.e(err);
9713
11002
  } finally {
9714
- _iterator3.f();
11003
+ _iterator2.f();
9715
11004
  }
9716
11005
 
9717
11006
  return channels;
@@ -10184,25 +11473,25 @@ var StreamChat = /*#__PURE__*/function () {
10184
11473
  key: "upsertUsers",
10185
11474
  value: function () {
10186
11475
  var _upsertUsers = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee30(users) {
10187
- var userMap, _iterator4, _step4, userObject;
11476
+ var userMap, _iterator3, _step3, userObject;
10188
11477
 
10189
11478
  return _regeneratorRuntime__default['default'].wrap(function _callee30$(_context30) {
10190
11479
  while (1) {
10191
11480
  switch (_context30.prev = _context30.next) {
10192
11481
  case 0:
10193
11482
  userMap = {};
10194
- _iterator4 = _createForOfIteratorHelper(users);
11483
+ _iterator3 = _createForOfIteratorHelper(users);
10195
11484
  _context30.prev = 2;
10196
11485
 
10197
- _iterator4.s();
11486
+ _iterator3.s();
10198
11487
 
10199
11488
  case 4:
10200
- if ((_step4 = _iterator4.n()).done) {
11489
+ if ((_step3 = _iterator3.n()).done) {
10201
11490
  _context30.next = 11;
10202
11491
  break;
10203
11492
  }
10204
11493
 
10205
- userObject = _step4.value;
11494
+ userObject = _step3.value;
10206
11495
 
10207
11496
  if (userObject.id) {
10208
11497
  _context30.next = 8;
@@ -10226,12 +11515,12 @@ var StreamChat = /*#__PURE__*/function () {
10226
11515
  _context30.prev = 13;
10227
11516
  _context30.t0 = _context30["catch"](2);
10228
11517
 
10229
- _iterator4.e(_context30.t0);
11518
+ _iterator3.e(_context30.t0);
10230
11519
 
10231
11520
  case 16:
10232
11521
  _context30.prev = 16;
10233
11522
 
10234
- _iterator4.f();
11523
+ _iterator3.f();
10235
11524
 
10236
11525
  return _context30.finish(16);
10237
11526
 
@@ -10301,24 +11590,24 @@ var StreamChat = /*#__PURE__*/function () {
10301
11590
  */
10302
11591
  function () {
10303
11592
  var _partialUpdateUsers = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee31(users) {
10304
- var _iterator5, _step5, userObject;
11593
+ var _iterator4, _step4, userObject;
10305
11594
 
10306
11595
  return _regeneratorRuntime__default['default'].wrap(function _callee31$(_context31) {
10307
11596
  while (1) {
10308
11597
  switch (_context31.prev = _context31.next) {
10309
11598
  case 0:
10310
- _iterator5 = _createForOfIteratorHelper(users);
11599
+ _iterator4 = _createForOfIteratorHelper(users);
10311
11600
  _context31.prev = 1;
10312
11601
 
10313
- _iterator5.s();
11602
+ _iterator4.s();
10314
11603
 
10315
11604
  case 3:
10316
- if ((_step5 = _iterator5.n()).done) {
11605
+ if ((_step4 = _iterator4.n()).done) {
10317
11606
  _context31.next = 9;
10318
11607
  break;
10319
11608
  }
10320
11609
 
10321
- userObject = _step5.value;
11610
+ userObject = _step4.value;
10322
11611
 
10323
11612
  if (userObject.id) {
10324
11613
  _context31.next = 7;
@@ -10339,12 +11628,12 @@ var StreamChat = /*#__PURE__*/function () {
10339
11628
  _context31.prev = 11;
10340
11629
  _context31.t0 = _context31["catch"](1);
10341
11630
 
10342
- _iterator5.e(_context31.t0);
11631
+ _iterator4.e(_context31.t0);
10343
11632
 
10344
11633
  case 14:
10345
11634
  _context31.prev = 14;
10346
11635
 
10347
- _iterator5.f();
11636
+ _iterator4.f();
10348
11637
 
10349
11638
  return _context31.finish(14);
10350
11639
 
@@ -10380,7 +11669,7 @@ var StreamChat = /*#__PURE__*/function () {
10380
11669
  switch (_context32.prev = _context32.next) {
10381
11670
  case 0:
10382
11671
  _context32.next = 2;
10383
- return this.delete(this.baseURL + "/users/".concat(userID), params);
11672
+ return this.delete(this.baseURL + "/users/".concat(encodeURIComponent(userID)), params);
10384
11673
 
10385
11674
  case 2:
10386
11675
  return _context32.abrupt("return", _context32.sent);
@@ -10455,7 +11744,7 @@ var StreamChat = /*#__PURE__*/function () {
10455
11744
  switch (_context34.prev = _context34.next) {
10456
11745
  case 0:
10457
11746
  _context34.next = 2;
10458
- return this.post(this.baseURL + "/users/".concat(userID, "/reactivate"), _objectSpread({}, options));
11747
+ return this.post(this.baseURL + "/users/".concat(encodeURIComponent(userID), "/reactivate"), _objectSpread({}, options));
10459
11748
 
10460
11749
  case 2:
10461
11750
  return _context34.abrupt("return", _context34.sent);
@@ -10531,7 +11820,7 @@ var StreamChat = /*#__PURE__*/function () {
10531
11820
  switch (_context36.prev = _context36.next) {
10532
11821
  case 0:
10533
11822
  _context36.next = 2;
10534
- return this.post(this.baseURL + "/users/".concat(userID, "/deactivate"), _objectSpread({}, options));
11823
+ return this.post(this.baseURL + "/users/".concat(encodeURIComponent(userID), "/deactivate"), _objectSpread({}, options));
10535
11824
 
10536
11825
  case 2:
10537
11826
  return _context36.abrupt("return", _context36.sent);
@@ -10598,7 +11887,7 @@ var StreamChat = /*#__PURE__*/function () {
10598
11887
  switch (_context38.prev = _context38.next) {
10599
11888
  case 0:
10600
11889
  _context38.next = 2;
10601
- return this.get(this.baseURL + "/users/".concat(userID, "/export"), _objectSpread({}, options));
11890
+ return this.get(this.baseURL + "/users/".concat(encodeURIComponent(userID), "/export"), _objectSpread({}, options));
10602
11891
 
10603
11892
  case 2:
10604
11893
  return _context38.abrupt("return", _context38.sent);
@@ -11140,7 +12429,7 @@ var StreamChat = /*#__PURE__*/function () {
11140
12429
  case 0:
11141
12430
  options = _args52.length > 1 && _args52[1] !== undefined ? _args52[1] : {};
11142
12431
  _context52.next = 3;
11143
- return this.post(this.baseURL + "/calls/".concat(callID), _objectSpread({}, options));
12432
+ return this.post(this.baseURL + "/calls/".concat(encodeURIComponent(callID)), _objectSpread({}, options));
11144
12433
 
11145
12434
  case 3:
11146
12435
  return _context52.abrupt("return", _context52.sent);
@@ -11284,7 +12573,7 @@ var StreamChat = /*#__PURE__*/function () {
11284
12573
  case 0:
11285
12574
  options = _args55.length > 2 && _args55[2] !== undefined ? _args55[2] : {};
11286
12575
  _context55.next = 3;
11287
- return this.patch(this.baseURL + "/moderation/reports/".concat(id), _objectSpread({
12576
+ return this.patch(this.baseURL + "/moderation/reports/".concat(encodeURIComponent(id)), _objectSpread({
11288
12577
  review_result: reviewResult
11289
12578
  }, options));
11290
12579
 
@@ -11393,17 +12682,17 @@ var StreamChat = /*#__PURE__*/function () {
11393
12682
  }, {
11394
12683
  key: "getCommand",
11395
12684
  value: function getCommand(name) {
11396
- return this.get(this.baseURL + "/commands/".concat(name));
12685
+ return this.get(this.baseURL + "/commands/".concat(encodeURIComponent(name)));
11397
12686
  }
11398
12687
  }, {
11399
12688
  key: "updateCommand",
11400
12689
  value: function updateCommand(name, data) {
11401
- return this.put(this.baseURL + "/commands/".concat(name), data);
12690
+ return this.put(this.baseURL + "/commands/".concat(encodeURIComponent(name)), data);
11402
12691
  }
11403
12692
  }, {
11404
12693
  key: "deleteCommand",
11405
12694
  value: function deleteCommand(name) {
11406
- return this.delete(this.baseURL + "/commands/".concat(name));
12695
+ return this.delete(this.baseURL + "/commands/".concat(encodeURIComponent(name)));
11407
12696
  }
11408
12697
  }, {
11409
12698
  key: "listCommands",
@@ -11422,17 +12711,17 @@ var StreamChat = /*#__PURE__*/function () {
11422
12711
  }, {
11423
12712
  key: "getChannelType",
11424
12713
  value: function getChannelType(channelType) {
11425
- return this.get(this.baseURL + "/channeltypes/".concat(channelType));
12714
+ return this.get(this.baseURL + "/channeltypes/".concat(encodeURIComponent(channelType)));
11426
12715
  }
11427
12716
  }, {
11428
12717
  key: "updateChannelType",
11429
12718
  value: function updateChannelType(channelType, data) {
11430
- return this.put(this.baseURL + "/channeltypes/".concat(channelType), data);
12719
+ return this.put(this.baseURL + "/channeltypes/".concat(encodeURIComponent(channelType)), data);
11431
12720
  }
11432
12721
  }, {
11433
12722
  key: "deleteChannelType",
11434
12723
  value: function deleteChannelType(channelType) {
11435
- return this.delete(this.baseURL + "/channeltypes/".concat(channelType));
12724
+ return this.delete(this.baseURL + "/channeltypes/".concat(encodeURIComponent(channelType)));
11436
12725
  }
11437
12726
  }, {
11438
12727
  key: "listChannelTypes",
@@ -11457,7 +12746,7 @@ var StreamChat = /*#__PURE__*/function () {
11457
12746
  switch (_context58.prev = _context58.next) {
11458
12747
  case 0:
11459
12748
  _context58.next = 2;
11460
- return this.post(this.baseURL + "/messages/".concat(messageId, "/translate"), {
12749
+ return this.post(this.baseURL + "/messages/".concat(encodeURIComponent(messageId), "/translate"), {
11461
12750
  language: language
11462
12751
  });
11463
12752
 
@@ -11619,7 +12908,7 @@ var StreamChat = /*#__PURE__*/function () {
11619
12908
  }
11620
12909
 
11621
12910
  _context59.next = 10;
11622
- return this.post(this.baseURL + "/messages/".concat(message.id), _objectSpread({
12911
+ return this.post(this.baseURL + "/messages/".concat(encodeURIComponent(message.id)), _objectSpread({
11623
12912
  message: clonedMessage
11624
12913
  }, options));
11625
12914
 
@@ -11680,7 +12969,7 @@ var StreamChat = /*#__PURE__*/function () {
11680
12969
  }
11681
12970
 
11682
12971
  _context60.next = 6;
11683
- return this.put(this.baseURL + "/messages/".concat(id), _objectSpread(_objectSpread(_objectSpread({}, partialMessageObject), options), {}, {
12972
+ return this.put(this.baseURL + "/messages/".concat(encodeURIComponent(id)), _objectSpread(_objectSpread(_objectSpread({}, partialMessageObject), options), {}, {
11684
12973
  user: user
11685
12974
  }));
11686
12975
 
@@ -11719,7 +13008,7 @@ var StreamChat = /*#__PURE__*/function () {
11719
13008
  }
11720
13009
 
11721
13010
  _context61.next = 4;
11722
- return this.delete(this.baseURL + "/messages/".concat(messageID), params);
13011
+ return this.delete(this.baseURL + "/messages/".concat(encodeURIComponent(messageID)), params);
11723
13012
 
11724
13013
  case 4:
11725
13014
  return _context61.abrupt("return", _context61.sent);
@@ -11760,7 +13049,7 @@ var StreamChat = /*#__PURE__*/function () {
11760
13049
  switch (_context62.prev = _context62.next) {
11761
13050
  case 0:
11762
13051
  _context62.next = 2;
11763
- return this.post(this.baseURL + "/messages/".concat(messageID, "/undelete"), {
13052
+ return this.post(this.baseURL + "/messages/".concat(encodeURIComponent(messageID), "/undelete"), {
11764
13053
  undeleted_by: userID
11765
13054
  });
11766
13055
 
@@ -11845,7 +13134,10 @@ var StreamChat = /*#__PURE__*/function () {
11845
13134
  res = _context64.sent;
11846
13135
  return _context64.abrupt("return", {
11847
13136
  threads: res.threads.map(function (thread) {
11848
- return new Thread(_this5, thread);
13137
+ return new Thread({
13138
+ client: _this5,
13139
+ threadData: thread
13140
+ });
11849
13141
  }),
11850
13142
  next: res.next
11851
13143
  });
@@ -11904,11 +13196,14 @@ var StreamChat = /*#__PURE__*/function () {
11904
13196
  watch: true
11905
13197
  }, options);
11906
13198
  _context65.next = 6;
11907
- return this.get(this.baseURL + "/threads/".concat(messageId), opts);
13199
+ return this.get(this.baseURL + "/threads/".concat(encodeURIComponent(messageId)), opts);
11908
13200
 
11909
13201
  case 6:
11910
13202
  res = _context65.sent;
11911
- return _context65.abrupt("return", new Thread(this, res.thread));
13203
+ return _context65.abrupt("return", new Thread({
13204
+ client: this,
13205
+ threadData: res.thread
13206
+ }));
11912
13207
 
11913
13208
  case 8:
11914
13209
  case "end":
@@ -11977,7 +13272,7 @@ var StreamChat = /*#__PURE__*/function () {
11977
13272
 
11978
13273
  case 10:
11979
13274
  _context66.next = 12;
11980
- return this.patch(this.baseURL + "/threads/".concat(messageId), partialThreadObject);
13275
+ return this.patch(this.baseURL + "/threads/".concat(encodeURIComponent(messageId)), partialThreadObject);
11981
13276
 
11982
13277
  case 12:
11983
13278
  return _context66.abrupt("return", _context66.sent);
@@ -11999,7 +13294,7 @@ var StreamChat = /*#__PURE__*/function () {
11999
13294
  }, {
12000
13295
  key: "getUserAgent",
12001
13296
  value: function getUserAgent() {
12002
- return this.userAgent || "stream-chat-javascript-client-".concat(this.node ? 'node' : 'browser', "-", "8.38.0");
13297
+ return this.userAgent || "stream-chat-javascript-client-".concat(this.node ? 'node' : 'browser', "-", "8.40.0");
12003
13298
  }
12004
13299
  }, {
12005
13300
  key: "setUserAgent",
@@ -12109,7 +13404,7 @@ var StreamChat = /*#__PURE__*/function () {
12109
13404
  }, {
12110
13405
  key: "getPermission",
12111
13406
  value: function getPermission(name) {
12112
- return this.get("".concat(this.baseURL, "/permissions/").concat(name));
13407
+ return this.get("".concat(this.baseURL, "/permissions/").concat(encodeURIComponent(name)));
12113
13408
  }
12114
13409
  /** createPermission - creates a custom permission
12115
13410
  *
@@ -12132,7 +13427,7 @@ var StreamChat = /*#__PURE__*/function () {
12132
13427
  }, {
12133
13428
  key: "updatePermission",
12134
13429
  value: function updatePermission(id, permissionData) {
12135
- return this.put("".concat(this.baseURL, "/permissions/").concat(id), _objectSpread({}, permissionData));
13430
+ return this.put("".concat(this.baseURL, "/permissions/").concat(encodeURIComponent(id)), _objectSpread({}, permissionData));
12136
13431
  }
12137
13432
  /** deletePermission - deletes a custom permission
12138
13433
  *
@@ -12143,7 +13438,7 @@ var StreamChat = /*#__PURE__*/function () {
12143
13438
  }, {
12144
13439
  key: "deletePermission",
12145
13440
  value: function deletePermission(name) {
12146
- return this.delete("".concat(this.baseURL, "/permissions/").concat(name));
13441
+ return this.delete("".concat(this.baseURL, "/permissions/").concat(encodeURIComponent(name)));
12147
13442
  }
12148
13443
  /** listPermissions - returns the list of all permissions for this application
12149
13444
  *
@@ -12187,7 +13482,7 @@ var StreamChat = /*#__PURE__*/function () {
12187
13482
  }, {
12188
13483
  key: "deleteRole",
12189
13484
  value: function deleteRole(name) {
12190
- return this.delete("".concat(this.baseURL, "/roles/").concat(name));
13485
+ return this.delete("".concat(this.baseURL, "/roles/").concat(encodeURIComponent(name)));
12191
13486
  }
12192
13487
  /** sync - returns all events that happened for a list of channels since last sync
12193
13488
  * @param {string[]} channel_cids list of channel CIDs
@@ -12224,7 +13519,7 @@ var StreamChat = /*#__PURE__*/function () {
12224
13519
  switch (_context67.prev = _context67.next) {
12225
13520
  case 0:
12226
13521
  _context67.next = 2;
12227
- return this.post("".concat(this.baseURL, "/users/").concat(targetUserID, "/event"), {
13522
+ return this.post("".concat(this.baseURL, "/users/").concat(encodeURIComponent(targetUserID), "/event"), {
12228
13523
  event: event
12229
13524
  });
12230
13525
 
@@ -12258,17 +13553,17 @@ var StreamChat = /*#__PURE__*/function () {
12258
13553
  }, {
12259
13554
  key: "getBlockList",
12260
13555
  value: function getBlockList(name) {
12261
- return this.get("".concat(this.baseURL, "/blocklists/").concat(name));
13556
+ return this.get("".concat(this.baseURL, "/blocklists/").concat(encodeURIComponent(name)));
12262
13557
  }
12263
13558
  }, {
12264
13559
  key: "updateBlockList",
12265
13560
  value: function updateBlockList(name, data) {
12266
- return this.put("".concat(this.baseURL, "/blocklists/").concat(name), data);
13561
+ return this.put("".concat(this.baseURL, "/blocklists/").concat(encodeURIComponent(name)), data);
12267
13562
  }
12268
13563
  }, {
12269
13564
  key: "deleteBlockList",
12270
13565
  value: function deleteBlockList(name) {
12271
- return this.delete("".concat(this.baseURL, "/blocklists/").concat(name));
13566
+ return this.delete("".concat(this.baseURL, "/blocklists/").concat(encodeURIComponent(name)));
12272
13567
  }
12273
13568
  }, {
12274
13569
  key: "exportChannels",
@@ -12294,7 +13589,7 @@ var StreamChat = /*#__PURE__*/function () {
12294
13589
  }, {
12295
13590
  key: "getExportChannelStatus",
12296
13591
  value: function getExportChannelStatus(id) {
12297
- return this.get("".concat(this.baseURL, "/export_channels/").concat(id));
13592
+ return this.get("".concat(this.baseURL, "/export_channels/").concat(encodeURIComponent(id)));
12298
13593
  }
12299
13594
  }, {
12300
13595
  key: "campaign",
@@ -12442,7 +13737,7 @@ var StreamChat = /*#__PURE__*/function () {
12442
13737
  switch (_context71.prev = _context71.next) {
12443
13738
  case 0:
12444
13739
  this.validateServerSideAuth();
12445
- return _context71.abrupt("return", this.get(this.baseURL + "/segments/".concat(id)));
13740
+ return _context71.abrupt("return", this.get(this.baseURL + "/segments/".concat(encodeURIComponent(id))));
12446
13741
 
12447
13742
  case 2:
12448
13743
  case "end":
@@ -12476,7 +13771,7 @@ var StreamChat = /*#__PURE__*/function () {
12476
13771
  switch (_context72.prev = _context72.next) {
12477
13772
  case 0:
12478
13773
  this.validateServerSideAuth();
12479
- return _context72.abrupt("return", this.put(this.baseURL + "/segments/".concat(id), data));
13774
+ return _context72.abrupt("return", this.put(this.baseURL + "/segments/".concat(encodeURIComponent(id)), data));
12480
13775
 
12481
13776
  case 2:
12482
13777
  case "end":
@@ -12514,7 +13809,7 @@ var StreamChat = /*#__PURE__*/function () {
12514
13809
  body = {
12515
13810
  target_ids: targets
12516
13811
  };
12517
- return _context73.abrupt("return", this.post(this.baseURL + "/segments/".concat(id, "/addtargets"), body));
13812
+ return _context73.abrupt("return", this.post(this.baseURL + "/segments/".concat(encodeURIComponent(id), "/addtargets"), body));
12518
13813
 
12519
13814
  case 3:
12520
13815
  case "end":
@@ -12546,7 +13841,7 @@ var StreamChat = /*#__PURE__*/function () {
12546
13841
  sort = _args74.length > 2 && _args74[2] !== undefined ? _args74[2] : [];
12547
13842
  options = _args74.length > 3 && _args74[3] !== undefined ? _args74[3] : {};
12548
13843
  this.validateServerSideAuth();
12549
- return _context74.abrupt("return", this.post(this.baseURL + "/segments/".concat(id, "/targets/query"), _objectSpread({
13844
+ return _context74.abrupt("return", this.post(this.baseURL + "/segments/".concat(encodeURIComponent(id), "/targets/query"), _objectSpread({
12550
13845
  filter: filter || {},
12551
13846
  sort: sort || []
12552
13847
  }, options)));
@@ -12587,7 +13882,7 @@ var StreamChat = /*#__PURE__*/function () {
12587
13882
  body = {
12588
13883
  target_ids: targets
12589
13884
  };
12590
- return _context75.abrupt("return", this.post(this.baseURL + "/segments/".concat(id, "/deletetargets"), body));
13885
+ return _context75.abrupt("return", this.post(this.baseURL + "/segments/".concat(encodeURIComponent(id), "/deletetargets"), body));
12591
13886
 
12592
13887
  case 3:
12593
13888
  case "end":
@@ -12660,7 +13955,7 @@ var StreamChat = /*#__PURE__*/function () {
12660
13955
  switch (_context77.prev = _context77.next) {
12661
13956
  case 0:
12662
13957
  this.validateServerSideAuth();
12663
- return _context77.abrupt("return", this.delete(this.baseURL + "/segments/".concat(id)));
13958
+ return _context77.abrupt("return", this.delete(this.baseURL + "/segments/".concat(encodeURIComponent(id))));
12664
13959
 
12665
13960
  case 2:
12666
13961
  case "end":
@@ -12694,7 +13989,7 @@ var StreamChat = /*#__PURE__*/function () {
12694
13989
  switch (_context78.prev = _context78.next) {
12695
13990
  case 0:
12696
13991
  this.validateServerSideAuth();
12697
- return _context78.abrupt("return", this.get(this.baseURL + "/segments/".concat(segmentId, "/target/").concat(targetId)));
13992
+ return _context78.abrupt("return", this.get(this.baseURL + "/segments/".concat(encodeURIComponent(segmentId), "/target/").concat(encodeURIComponent(targetId))));
12698
13993
 
12699
13994
  case 2:
12700
13995
  case "end":
@@ -12752,7 +14047,7 @@ var StreamChat = /*#__PURE__*/function () {
12752
14047
  switch (_context80.prev = _context80.next) {
12753
14048
  case 0:
12754
14049
  this.validateServerSideAuth();
12755
- return _context80.abrupt("return", this.get(this.baseURL + "/campaigns/".concat(id)));
14050
+ return _context80.abrupt("return", this.get(this.baseURL + "/campaigns/".concat(encodeURIComponent(id))));
12756
14051
 
12757
14052
  case 2:
12758
14053
  case "end":
@@ -12777,7 +14072,7 @@ var StreamChat = /*#__PURE__*/function () {
12777
14072
  switch (_context81.prev = _context81.next) {
12778
14073
  case 0:
12779
14074
  this.validateServerSideAuth();
12780
- return _context81.abrupt("return", this.post(this.baseURL + "/campaigns/".concat(id, "/start"), {
14075
+ return _context81.abrupt("return", this.post(this.baseURL + "/campaigns/".concat(encodeURIComponent(id), "/start"), {
12781
14076
  scheduled_for: options === null || options === void 0 ? void 0 : options.scheduledFor,
12782
14077
  stop_at: options === null || options === void 0 ? void 0 : options.stopAt
12783
14078
  }));
@@ -12853,7 +14148,7 @@ var StreamChat = /*#__PURE__*/function () {
12853
14148
  switch (_context83.prev = _context83.next) {
12854
14149
  case 0:
12855
14150
  this.validateServerSideAuth();
12856
- return _context83.abrupt("return", this.put(this.baseURL + "/campaigns/".concat(id), params));
14151
+ return _context83.abrupt("return", this.put(this.baseURL + "/campaigns/".concat(encodeURIComponent(id)), params));
12857
14152
 
12858
14153
  case 2:
12859
14154
  case "end":
@@ -12886,7 +14181,7 @@ var StreamChat = /*#__PURE__*/function () {
12886
14181
  switch (_context84.prev = _context84.next) {
12887
14182
  case 0:
12888
14183
  this.validateServerSideAuth();
12889
- return _context84.abrupt("return", this.delete(this.baseURL + "/campaigns/".concat(id)));
14184
+ return _context84.abrupt("return", this.delete(this.baseURL + "/campaigns/".concat(encodeURIComponent(id))));
12890
14185
 
12891
14186
  case 2:
12892
14187
  case "end":
@@ -12919,7 +14214,7 @@ var StreamChat = /*#__PURE__*/function () {
12919
14214
  switch (_context85.prev = _context85.next) {
12920
14215
  case 0:
12921
14216
  this.validateServerSideAuth();
12922
- return _context85.abrupt("return", this.post(this.baseURL + "/campaigns/".concat(id, "/stop")));
14217
+ return _context85.abrupt("return", this.post(this.baseURL + "/campaigns/".concat(encodeURIComponent(id), "/stop")));
12923
14218
 
12924
14219
  case 2:
12925
14220
  case "end":
@@ -12984,7 +14279,7 @@ var StreamChat = /*#__PURE__*/function () {
12984
14279
  while (1) {
12985
14280
  switch (_context87.prev = _context87.next) {
12986
14281
  case 0:
12987
- return _context87.abrupt("return", this.get("".concat(this.baseURL, "/tasks/").concat(id)));
14282
+ return _context87.abrupt("return", this.get("".concat(this.baseURL, "/tasks/").concat(encodeURIComponent(id))));
12988
14283
 
12989
14284
  case 1:
12990
14285
  case "end":
@@ -13221,7 +14516,7 @@ var StreamChat = /*#__PURE__*/function () {
13221
14516
  switch (_context92.prev = _context92.next) {
13222
14517
  case 0:
13223
14518
  _context92.next = 2;
13224
- return this.get(this.baseURL + "/imports/".concat(id));
14519
+ return this.get(this.baseURL + "/imports/".concat(encodeURIComponent(id)));
13225
14520
 
13226
14521
  case 2:
13227
14522
  return _context92.abrupt("return", _context92.sent);
@@ -13342,7 +14637,7 @@ var StreamChat = /*#__PURE__*/function () {
13342
14637
  case 0:
13343
14638
  type = _ref10.type, name = _ref10.name;
13344
14639
  _context95.next = 3;
13345
- return this.delete(this.baseURL + "/push_providers/".concat(type, "/").concat(name));
14640
+ return this.delete(this.baseURL + "/push_providers/".concat(encodeURIComponent(type), "/").concat(encodeURIComponent(name)));
13346
14641
 
13347
14642
  case 3:
13348
14643
  return _context95.abrupt("return", _context95.sent);
@@ -13422,7 +14717,7 @@ var StreamChat = /*#__PURE__*/function () {
13422
14717
  switch (_context97.prev = _context97.next) {
13423
14718
  case 0:
13424
14719
  _context97.next = 2;
13425
- return this.post(this.baseURL + "/messages/".concat(id, "/commit"));
14720
+ return this.post(this.baseURL + "/messages/".concat(encodeURIComponent(id), "/commit"));
13426
14721
 
13427
14722
  case 2:
13428
14723
  return _context97.abrupt("return", _context97.sent);
@@ -13494,7 +14789,7 @@ var StreamChat = /*#__PURE__*/function () {
13494
14789
  switch (_context99.prev = _context99.next) {
13495
14790
  case 0:
13496
14791
  _context99.next = 2;
13497
- return this.get(this.baseURL + "/polls/".concat(id), userId ? {
14792
+ return this.get(this.baseURL + "/polls/".concat(encodeURIComponent(id)), userId ? {
13498
14793
  user_id: userId
13499
14794
  } : {});
13500
14795
 
@@ -13570,7 +14865,7 @@ var StreamChat = /*#__PURE__*/function () {
13570
14865
  switch (_context101.prev = _context101.next) {
13571
14866
  case 0:
13572
14867
  _context101.next = 2;
13573
- return this.patch(this.baseURL + "/polls/".concat(id), _objectSpread(_objectSpread({}, partialPollObject), userId ? {
14868
+ return this.patch(this.baseURL + "/polls/".concat(encodeURIComponent(id)), _objectSpread(_objectSpread({}, partialPollObject), userId ? {
13574
14869
  user_id: userId
13575
14870
  } : {}));
13576
14871
 
@@ -13607,7 +14902,7 @@ var StreamChat = /*#__PURE__*/function () {
13607
14902
  switch (_context102.prev = _context102.next) {
13608
14903
  case 0:
13609
14904
  _context102.next = 2;
13610
- return this.delete(this.baseURL + "/polls/".concat(id), _objectSpread({}, userId ? {
14905
+ return this.delete(this.baseURL + "/polls/".concat(encodeURIComponent(id)), _objectSpread({}, userId ? {
13611
14906
  user_id: userId
13612
14907
  } : {}));
13613
14908
 
@@ -13682,7 +14977,7 @@ var StreamChat = /*#__PURE__*/function () {
13682
14977
  switch (_context104.prev = _context104.next) {
13683
14978
  case 0:
13684
14979
  _context104.next = 2;
13685
- return this.post(this.baseURL + "/polls/".concat(pollId, "/options"), _objectSpread(_objectSpread({}, option), userId ? {
14980
+ return this.post(this.baseURL + "/polls/".concat(encodeURIComponent(pollId), "/options"), _objectSpread(_objectSpread({}, option), userId ? {
13686
14981
  user_id: userId
13687
14982
  } : {}));
13688
14983
 
@@ -13720,7 +15015,7 @@ var StreamChat = /*#__PURE__*/function () {
13720
15015
  switch (_context105.prev = _context105.next) {
13721
15016
  case 0:
13722
15017
  _context105.next = 2;
13723
- return this.get(this.baseURL + "/polls/".concat(pollId, "/options/").concat(optionId), userId ? {
15018
+ return this.get(this.baseURL + "/polls/".concat(encodeURIComponent(pollId), "/options/").concat(encodeURIComponent(optionId)), userId ? {
13724
15019
  user_id: userId
13725
15020
  } : {});
13726
15021
 
@@ -13758,7 +15053,7 @@ var StreamChat = /*#__PURE__*/function () {
13758
15053
  switch (_context106.prev = _context106.next) {
13759
15054
  case 0:
13760
15055
  _context106.next = 2;
13761
- return this.put(this.baseURL + "/polls/".concat(pollId, "/options"), _objectSpread(_objectSpread({}, option), userId ? {
15056
+ return this.put(this.baseURL + "/polls/".concat(encodeURIComponent(pollId), "/options"), _objectSpread(_objectSpread({}, option), userId ? {
13762
15057
  user_id: userId
13763
15058
  } : {}));
13764
15059
 
@@ -13796,7 +15091,7 @@ var StreamChat = /*#__PURE__*/function () {
13796
15091
  switch (_context107.prev = _context107.next) {
13797
15092
  case 0:
13798
15093
  _context107.next = 2;
13799
- return this.delete(this.baseURL + "/polls/".concat(pollId, "/options/").concat(optionId), userId ? {
15094
+ return this.delete(this.baseURL + "/polls/".concat(encodeURIComponent(pollId), "/options/").concat(encodeURIComponent(optionId)), userId ? {
13800
15095
  user_id: userId
13801
15096
  } : {});
13802
15097
 
@@ -13835,7 +15130,7 @@ var StreamChat = /*#__PURE__*/function () {
13835
15130
  switch (_context108.prev = _context108.next) {
13836
15131
  case 0:
13837
15132
  _context108.next = 2;
13838
- return this.post(this.baseURL + "/messages/".concat(messageId, "/polls/").concat(pollId, "/vote"), _objectSpread({
15133
+ return this.post(this.baseURL + "/messages/".concat(encodeURIComponent(messageId), "/polls/").concat(encodeURIComponent(pollId), "/vote"), _objectSpread({
13839
15134
  vote: vote
13840
15135
  }, userId ? {
13841
15136
  user_id: userId
@@ -13901,7 +15196,7 @@ var StreamChat = /*#__PURE__*/function () {
13901
15196
  switch (_context110.prev = _context110.next) {
13902
15197
  case 0:
13903
15198
  _context110.next = 2;
13904
- return this.delete(this.baseURL + "/messages/".concat(messageId, "/polls/").concat(pollId, "/vote/").concat(voteId), _objectSpread({}, userId ? {
15199
+ return this.delete(this.baseURL + "/messages/".concat(encodeURIComponent(messageId), "/polls/").concat(encodeURIComponent(pollId), "/vote/").concat(encodeURIComponent(voteId)), _objectSpread({}, userId ? {
13905
15200
  user_id: userId
13906
15201
  } : {}));
13907
15202
 
@@ -14003,7 +15298,7 @@ var StreamChat = /*#__PURE__*/function () {
14003
15298
  userId = _args112.length > 4 ? _args112[4] : undefined;
14004
15299
  q = userId ? "?user_id=".concat(userId) : '';
14005
15300
  _context112.next = 7;
14006
- return this.post(this.baseURL + "/polls/".concat(pollId, "/votes").concat(q), _objectSpread({
15301
+ return this.post(this.baseURL + "/polls/".concat(encodeURIComponent(pollId), "/votes").concat(q), _objectSpread({
14007
15302
  filter: filter,
14008
15303
  sort: normalizeQuerySort(sort)
14009
15304
  }, options));
@@ -14292,8 +15587,10 @@ exports.Moderation = Moderation;
14292
15587
  exports.Permission = Permission;
14293
15588
  exports.Segment = Segment;
14294
15589
  exports.StableWSConnection = StableWSConnection;
15590
+ exports.StateStore = StateStore;
14295
15591
  exports.StreamChat = StreamChat;
14296
15592
  exports.Thread = Thread;
15593
+ exports.ThreadManager = ThreadManager;
14297
15594
  exports.TokenManager = TokenManager;
14298
15595
  exports.UserFromToken = UserFromToken;
14299
15596
  exports.buildWsFatalInsight = buildWsFatalInsight;