stream-chat 8.47.0 → 8.47.1

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.
package/dist/browser.js CHANGED
@@ -603,6 +603,7 @@ function formatMessage(message) {
603
603
  var findIndexInSortedArray = function findIndexInSortedArray(_ref) {
604
604
  var needle = _ref.needle,
605
605
  sortedArray = _ref.sortedArray,
606
+ selectKey = _ref.selectKey,
606
607
  _ref$selectValueToCom = _ref.selectValueToCompare,
607
608
  selectValueToCompare = _ref$selectValueToCom === void 0 ? function (e) {
608
609
  return e;
@@ -622,13 +623,27 @@ var findIndexInSortedArray = function findIndexInSortedArray(_ref) {
622
623
 
623
624
  while (left <= right) {
624
625
  recalculateMiddle();
625
- var comparableMiddle = selectValueToCompare(sortedArray[middle]); // if (comparableNeedle === comparableMiddle) return middle;
626
+ var comparableMiddle = selectValueToCompare(sortedArray[middle]);
626
627
 
627
- if (sortDirection === 'ascending' && comparableNeedle < comparableMiddle || sortDirection === 'descending' && comparableNeedle > comparableMiddle) {
628
+ if (sortDirection === 'ascending' && comparableNeedle < comparableMiddle || sortDirection === 'descending' && comparableNeedle >= comparableMiddle) {
628
629
  right = middle - 1;
629
630
  } else {
630
631
  left = middle + 1;
631
632
  }
633
+ } // In case there are several array elements with the same comparable value, search around the insertion
634
+ // point to possibly find an element with the same key. If found, prefer it.
635
+ // This, for example, prevents duplication of messages with the same creation date.
636
+
637
+
638
+ if (selectKey) {
639
+ var needleKey = selectKey(needle);
640
+ var step = sortDirection === 'ascending' ? -1 : +1;
641
+
642
+ for (var i = left + step; 0 <= i && i < sortedArray.length && selectValueToCompare(sortedArray[i]) === comparableNeedle; i += step) {
643
+ if (selectKey(sortedArray[i]) === needleKey) {
644
+ return i;
645
+ }
646
+ }
632
647
  }
633
648
 
634
649
  return left;
@@ -675,19 +690,15 @@ function addToMessageList(messages, newMessage) {
675
690
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
676
691
  selectValueToCompare: function selectValueToCompare(m) {
677
692
  return m[sortBy].getTime();
693
+ },
694
+ selectKey: function selectKey(m) {
695
+ return m.id;
678
696
  }
679
697
  }); // message already exists and not filtered with timestampChanged, update and return
680
698
 
681
- if (!timestampChanged && newMessage.id) {
682
- if (newMessages[insertionIndex] && newMessage.id === newMessages[insertionIndex].id) {
683
- newMessages[insertionIndex] = newMessage;
684
- return newMessages;
685
- }
686
-
687
- if (newMessages[insertionIndex - 1] && newMessage.id === newMessages[insertionIndex - 1].id) {
688
- newMessages[insertionIndex - 1] = newMessage;
689
- return newMessages;
690
- }
699
+ if (!timestampChanged && newMessage.id && newMessages[insertionIndex] && newMessage.id === newMessages[insertionIndex].id) {
700
+ newMessages[insertionIndex] = newMessage;
701
+ return newMessages;
691
702
  } // do not add updated or deleted messages to the list if they already exist or come with a timestamp change
692
703
 
693
704
 
@@ -7910,7 +7921,7 @@ var Thread = /*#__PURE__*/function () {
7910
7921
  });
7911
7922
 
7912
7923
  _defineProperty__default['default'](this, "deleteReplyLocally", function (_ref5) {
7913
- var _replies$index, _replies;
7924
+ var _replies$index;
7914
7925
 
7915
7926
  var message = _ref5.message;
7916
7927
 
@@ -7923,17 +7934,19 @@ var Thread = /*#__PURE__*/function () {
7923
7934
  sortDirection: 'ascending',
7924
7935
  selectValueToCompare: function selectValueToCompare(reply) {
7925
7936
  return reply.created_at.getTime();
7937
+ },
7938
+ selectKey: function selectKey(reply) {
7939
+ return reply.id;
7926
7940
  }
7927
7941
  });
7928
- 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;
7929
7942
 
7930
- if (actualIndex === null) {
7943
+ if (((_replies$index = replies[index]) === null || _replies$index === void 0 ? void 0 : _replies$index.id) !== message.id) {
7931
7944
  return;
7932
7945
  }
7933
7946
 
7934
7947
  var updatedReplies = _toConsumableArray__default['default'](replies);
7935
7948
 
7936
- updatedReplies.splice(actualIndex, 1);
7949
+ updatedReplies.splice(index, 1);
7937
7950
 
7938
7951
  _this.state.partialNext({
7939
7952
  replies: updatedReplies
@@ -14763,7 +14776,7 @@ var StreamChat = /*#__PURE__*/function () {
14763
14776
  }, {
14764
14777
  key: "getUserAgent",
14765
14778
  value: function getUserAgent() {
14766
- return this.userAgent || "stream-chat-javascript-client-".concat(this.node ? 'node' : 'browser', "-", "8.47.0");
14779
+ return this.userAgent || "stream-chat-javascript-client-".concat(this.node ? 'node' : 'browser', "-", "8.47.1");
14767
14780
  }
14768
14781
  }, {
14769
14782
  key: "setUserAgent",