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/index.js CHANGED
@@ -607,6 +607,7 @@ function formatMessage(message) {
607
607
  var findIndexInSortedArray = function findIndexInSortedArray(_ref) {
608
608
  var needle = _ref.needle,
609
609
  sortedArray = _ref.sortedArray,
610
+ selectKey = _ref.selectKey,
610
611
  _ref$selectValueToCom = _ref.selectValueToCompare,
611
612
  selectValueToCompare = _ref$selectValueToCom === void 0 ? function (e) {
612
613
  return e;
@@ -626,13 +627,27 @@ var findIndexInSortedArray = function findIndexInSortedArray(_ref) {
626
627
 
627
628
  while (left <= right) {
628
629
  recalculateMiddle();
629
- var comparableMiddle = selectValueToCompare(sortedArray[middle]); // if (comparableNeedle === comparableMiddle) return middle;
630
+ var comparableMiddle = selectValueToCompare(sortedArray[middle]);
630
631
 
631
- if (sortDirection === 'ascending' && comparableNeedle < comparableMiddle || sortDirection === 'descending' && comparableNeedle > comparableMiddle) {
632
+ if (sortDirection === 'ascending' && comparableNeedle < comparableMiddle || sortDirection === 'descending' && comparableNeedle >= comparableMiddle) {
632
633
  right = middle - 1;
633
634
  } else {
634
635
  left = middle + 1;
635
636
  }
637
+ } // In case there are several array elements with the same comparable value, search around the insertion
638
+ // point to possibly find an element with the same key. If found, prefer it.
639
+ // This, for example, prevents duplication of messages with the same creation date.
640
+
641
+
642
+ if (selectKey) {
643
+ var needleKey = selectKey(needle);
644
+ var step = sortDirection === 'ascending' ? -1 : +1;
645
+
646
+ for (var i = left + step; 0 <= i && i < sortedArray.length && selectValueToCompare(sortedArray[i]) === comparableNeedle; i += step) {
647
+ if (selectKey(sortedArray[i]) === needleKey) {
648
+ return i;
649
+ }
650
+ }
636
651
  }
637
652
 
638
653
  return left;
@@ -679,19 +694,15 @@ function addToMessageList(messages, newMessage) {
679
694
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
680
695
  selectValueToCompare: function selectValueToCompare(m) {
681
696
  return m[sortBy].getTime();
697
+ },
698
+ selectKey: function selectKey(m) {
699
+ return m.id;
682
700
  }
683
701
  }); // message already exists and not filtered with timestampChanged, update and return
684
702
 
685
- if (!timestampChanged && newMessage.id) {
686
- if (newMessages[insertionIndex] && newMessage.id === newMessages[insertionIndex].id) {
687
- newMessages[insertionIndex] = newMessage;
688
- return newMessages;
689
- }
690
-
691
- if (newMessages[insertionIndex - 1] && newMessage.id === newMessages[insertionIndex - 1].id) {
692
- newMessages[insertionIndex - 1] = newMessage;
693
- return newMessages;
694
- }
703
+ if (!timestampChanged && newMessage.id && newMessages[insertionIndex] && newMessage.id === newMessages[insertionIndex].id) {
704
+ newMessages[insertionIndex] = newMessage;
705
+ return newMessages;
695
706
  } // do not add updated or deleted messages to the list if they already exist or come with a timestamp change
696
707
 
697
708
 
@@ -7916,7 +7927,7 @@ var Thread = /*#__PURE__*/function () {
7916
7927
  });
7917
7928
 
7918
7929
  _defineProperty__default['default'](this, "deleteReplyLocally", function (_ref5) {
7919
- var _replies$index, _replies;
7930
+ var _replies$index;
7920
7931
 
7921
7932
  var message = _ref5.message;
7922
7933
 
@@ -7929,17 +7940,19 @@ var Thread = /*#__PURE__*/function () {
7929
7940
  sortDirection: 'ascending',
7930
7941
  selectValueToCompare: function selectValueToCompare(reply) {
7931
7942
  return reply.created_at.getTime();
7943
+ },
7944
+ selectKey: function selectKey(reply) {
7945
+ return reply.id;
7932
7946
  }
7933
7947
  });
7934
- 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;
7935
7948
 
7936
- if (actualIndex === null) {
7949
+ if (((_replies$index = replies[index]) === null || _replies$index === void 0 ? void 0 : _replies$index.id) !== message.id) {
7937
7950
  return;
7938
7951
  }
7939
7952
 
7940
7953
  var updatedReplies = _toConsumableArray__default['default'](replies);
7941
7954
 
7942
- updatedReplies.splice(actualIndex, 1);
7955
+ updatedReplies.splice(index, 1);
7943
7956
 
7944
7957
  _this.state.partialNext({
7945
7958
  replies: updatedReplies
@@ -14769,7 +14782,7 @@ var StreamChat = /*#__PURE__*/function () {
14769
14782
  }, {
14770
14783
  key: "getUserAgent",
14771
14784
  value: function getUserAgent() {
14772
- return this.userAgent || "stream-chat-javascript-client-".concat(this.node ? 'node' : 'browser', "-", "8.47.0");
14785
+ return this.userAgent || "stream-chat-javascript-client-".concat(this.node ? 'node' : 'browser', "-", "8.47.1");
14773
14786
  }
14774
14787
  }, {
14775
14788
  key: "setUserAgent",