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.es.js CHANGED
@@ -579,6 +579,7 @@ function formatMessage(message) {
579
579
  var findIndexInSortedArray = function findIndexInSortedArray(_ref) {
580
580
  var needle = _ref.needle,
581
581
  sortedArray = _ref.sortedArray,
582
+ selectKey = _ref.selectKey,
582
583
  _ref$selectValueToCom = _ref.selectValueToCompare,
583
584
  selectValueToCompare = _ref$selectValueToCom === void 0 ? function (e) {
584
585
  return e;
@@ -598,13 +599,27 @@ var findIndexInSortedArray = function findIndexInSortedArray(_ref) {
598
599
 
599
600
  while (left <= right) {
600
601
  recalculateMiddle();
601
- var comparableMiddle = selectValueToCompare(sortedArray[middle]); // if (comparableNeedle === comparableMiddle) return middle;
602
+ var comparableMiddle = selectValueToCompare(sortedArray[middle]);
602
603
 
603
- if (sortDirection === 'ascending' && comparableNeedle < comparableMiddle || sortDirection === 'descending' && comparableNeedle > comparableMiddle) {
604
+ if (sortDirection === 'ascending' && comparableNeedle < comparableMiddle || sortDirection === 'descending' && comparableNeedle >= comparableMiddle) {
604
605
  right = middle - 1;
605
606
  } else {
606
607
  left = middle + 1;
607
608
  }
609
+ } // In case there are several array elements with the same comparable value, search around the insertion
610
+ // point to possibly find an element with the same key. If found, prefer it.
611
+ // This, for example, prevents duplication of messages with the same creation date.
612
+
613
+
614
+ if (selectKey) {
615
+ var needleKey = selectKey(needle);
616
+ var step = sortDirection === 'ascending' ? -1 : +1;
617
+
618
+ for (var i = left + step; 0 <= i && i < sortedArray.length && selectValueToCompare(sortedArray[i]) === comparableNeedle; i += step) {
619
+ if (selectKey(sortedArray[i]) === needleKey) {
620
+ return i;
621
+ }
622
+ }
608
623
  }
609
624
 
610
625
  return left;
@@ -651,19 +666,15 @@ function addToMessageList(messages, newMessage) {
651
666
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
652
667
  selectValueToCompare: function selectValueToCompare(m) {
653
668
  return m[sortBy].getTime();
669
+ },
670
+ selectKey: function selectKey(m) {
671
+ return m.id;
654
672
  }
655
673
  }); // message already exists and not filtered with timestampChanged, update and return
656
674
 
657
- if (!timestampChanged && newMessage.id) {
658
- if (newMessages[insertionIndex] && newMessage.id === newMessages[insertionIndex].id) {
659
- newMessages[insertionIndex] = newMessage;
660
- return newMessages;
661
- }
662
-
663
- if (newMessages[insertionIndex - 1] && newMessage.id === newMessages[insertionIndex - 1].id) {
664
- newMessages[insertionIndex - 1] = newMessage;
665
- return newMessages;
666
- }
675
+ if (!timestampChanged && newMessage.id && newMessages[insertionIndex] && newMessage.id === newMessages[insertionIndex].id) {
676
+ newMessages[insertionIndex] = newMessage;
677
+ return newMessages;
667
678
  } // do not add updated or deleted messages to the list if they already exist or come with a timestamp change
668
679
 
669
680
 
@@ -7888,7 +7899,7 @@ var Thread = /*#__PURE__*/function () {
7888
7899
  });
7889
7900
 
7890
7901
  _defineProperty(this, "deleteReplyLocally", function (_ref5) {
7891
- var _replies$index, _replies;
7902
+ var _replies$index;
7892
7903
 
7893
7904
  var message = _ref5.message;
7894
7905
 
@@ -7901,17 +7912,19 @@ var Thread = /*#__PURE__*/function () {
7901
7912
  sortDirection: 'ascending',
7902
7913
  selectValueToCompare: function selectValueToCompare(reply) {
7903
7914
  return reply.created_at.getTime();
7915
+ },
7916
+ selectKey: function selectKey(reply) {
7917
+ return reply.id;
7904
7918
  }
7905
7919
  });
7906
- 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;
7907
7920
 
7908
- if (actualIndex === null) {
7921
+ if (((_replies$index = replies[index]) === null || _replies$index === void 0 ? void 0 : _replies$index.id) !== message.id) {
7909
7922
  return;
7910
7923
  }
7911
7924
 
7912
7925
  var updatedReplies = _toConsumableArray(replies);
7913
7926
 
7914
- updatedReplies.splice(actualIndex, 1);
7927
+ updatedReplies.splice(index, 1);
7915
7928
 
7916
7929
  _this.state.partialNext({
7917
7930
  replies: updatedReplies
@@ -14741,7 +14754,7 @@ var StreamChat = /*#__PURE__*/function () {
14741
14754
  }, {
14742
14755
  key: "getUserAgent",
14743
14756
  value: function getUserAgent() {
14744
- return this.userAgent || "stream-chat-javascript-client-".concat(this.node ? 'node' : 'browser', "-", "8.47.0");
14757
+ return this.userAgent || "stream-chat-javascript-client-".concat(this.node ? 'node' : 'browser', "-", "8.47.1");
14745
14758
  }
14746
14759
  }, {
14747
14760
  key: "setUserAgent",