stream-chat-react 12.8.1 → 12.8.2

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.
@@ -20327,6 +20327,7 @@ __export(src_exports, {
20327
20327
  getGroupChannelDisplayInfo: () => getGroupChannelDisplayInfo,
20328
20328
  getGroupStyles: () => getGroupStyles,
20329
20329
  getImages: () => getImages,
20330
+ getIsFirstUnreadMessage: () => getIsFirstUnreadMessage,
20330
20331
  getLastReceived: () => getLastReceived,
20331
20332
  getLatestMessagePreview: () => getLatestMessagePreview,
20332
20333
  getMessageActions: () => getMessageActions,
@@ -52386,6 +52387,21 @@ var hasNotMoreMessages = (returnedCountMessages, limit) => returnedCountMessages
52386
52387
  function isDateSeparatorMessage(message) {
52387
52388
  return message.customType === CUSTOM_MESSAGE_TYPE.date && !!message.date && isDate(message.date);
52388
52389
  }
52390
+ var getIsFirstUnreadMessage = ({
52391
+ firstUnreadMessageId,
52392
+ isFirstMessage,
52393
+ lastReadDate,
52394
+ lastReadMessageId,
52395
+ message,
52396
+ previousMessage,
52397
+ unreadMessageCount = 0
52398
+ }) => {
52399
+ const createdAtTimestamp = message.created_at && new Date(message.created_at).getTime();
52400
+ const lastReadTimestamp = lastReadDate?.getTime();
52401
+ const messageIsUnread = !!createdAtTimestamp && !!lastReadTimestamp && createdAtTimestamp > lastReadTimestamp;
52402
+ const previousMessageIsLastRead = !!lastReadMessageId && lastReadMessageId === previousMessage?.id;
52403
+ return firstUnreadMessageId === message.id || !!unreadMessageCount && messageIsUnread && (isFirstMessage || previousMessageIsLastRead);
52404
+ };
52389
52405
 
52390
52406
  // src/components/MessageList/hooks/MessageList/useEnrichedMessages.ts
52391
52407
  var useEnrichedMessages = (args) => {
@@ -52742,7 +52758,6 @@ var useMarkRead = ({
52742
52758
  if (shouldMarkRead(channel.countUnread())) markRead();
52743
52759
  };
52744
52760
  const handleMessageNew = (event) => {
52745
- const newMessageToCurrentChannel = event.cid === channel.cid;
52746
52761
  const isOwnMessage = event.user?.id && event.user.id === client.user?.id;
52747
52762
  const mainChannelUpdated = !event.message?.parent_id || event.message?.show_in_channel;
52748
52763
  if (isOwnMessage) return;
@@ -52760,17 +52775,17 @@ var useMarkRead = ({
52760
52775
  unread_messages: previousUnreadCount + 1
52761
52776
  };
52762
52777
  });
52763
- } else if (newMessageToCurrentChannel && mainChannelUpdated && shouldMarkRead(channel.countUnread())) {
52778
+ } else if (mainChannelUpdated && shouldMarkRead(channel.countUnread())) {
52764
52779
  markRead();
52765
52780
  }
52766
52781
  };
52767
- client.on("message.new", handleMessageNew);
52782
+ channel.on("message.new", handleMessageNew);
52768
52783
  document.addEventListener("visibilitychange", onVisibilityChange);
52769
52784
  const hasScrolledToBottom = previousRenderMessageListScrolledToBottom.current !== isMessageListScrolledToBottom && isMessageListScrolledToBottom;
52770
52785
  if (hasScrolledToBottom && shouldMarkRead(channel.countUnread())) markRead();
52771
52786
  previousRenderMessageListScrolledToBottom.current = isMessageListScrolledToBottom;
52772
52787
  return () => {
52773
- client.off("message.new", handleMessageNew);
52788
+ channel.off("message.new", handleMessageNew);
52774
52789
  document.removeEventListener("visibilitychange", onVisibilityChange);
52775
52790
  };
52776
52791
  }, [
@@ -53205,6 +53220,7 @@ function defaultRenderMessages({
53205
53220
  } = components;
53206
53221
  const renderedMessages = [];
53207
53222
  let firstMessage;
53223
+ let previousMessage = void 0;
53208
53224
  for (let index3 = 0; index3 < messages.length; index3++) {
53209
53225
  const message = messages[index3];
53210
53226
  if (isDateSeparatorMessage(message)) {
@@ -53232,16 +53248,17 @@ function defaultRenderMessages({
53232
53248
  }
53233
53249
  const groupStyles = messageGroupStyles[message.id] || "";
53234
53250
  const messageClass = customClasses?.message || `str-chat__li str-chat__li--${groupStyles}`;
53235
- const createdAtTimestamp = message.created_at && new Date(message.created_at).getTime();
53236
- const lastReadTimestamp = channelUnreadUiState?.last_read.getTime();
53237
- const isFirstMessage = firstMessage?.id && firstMessage.id === message.id;
53238
- const isNewestMessage = index3 === messages.length - 1;
53239
- const isLastReadMessage = channelUnreadUiState?.last_read_message_id === message.id || !channelUnreadUiState?.unread_messages && createdAtTimestamp === lastReadTimestamp;
53240
- const isFirstUnreadMessage = channelUnreadUiState?.first_unread_message_id === message.id || !!channelUnreadUiState?.unread_messages && !!createdAtTimestamp && !!lastReadTimestamp && createdAtTimestamp > lastReadTimestamp && isFirstMessage;
53241
- const showUnreadSeparatorAbove = !channelUnreadUiState?.last_read_message_id && isFirstUnreadMessage;
53242
- const showUnreadSeparatorBelow = isLastReadMessage && !isNewestMessage && (channelUnreadUiState?.first_unread_message_id || !!channelUnreadUiState?.unread_messages);
53251
+ const isFirstUnreadMessage = getIsFirstUnreadMessage({
53252
+ firstUnreadMessageId: channelUnreadUiState?.first_unread_message_id,
53253
+ isFirstMessage: !!firstMessage?.id && firstMessage.id === message.id,
53254
+ lastReadDate: channelUnreadUiState?.last_read,
53255
+ lastReadMessageId: channelUnreadUiState?.last_read_message_id,
53256
+ message,
53257
+ previousMessage,
53258
+ unreadMessageCount: channelUnreadUiState?.unread_messages
53259
+ });
53243
53260
  renderedMessages.push(
53244
- /* @__PURE__ */ import_react245.default.createElement(import_react245.Fragment, { key: message.id || message.created_at }, showUnreadSeparatorAbove && UnreadMessagesSeparator2 && /* @__PURE__ */ import_react245.default.createElement("li", { className: "str-chat__li str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react245.default.createElement(UnreadMessagesSeparator2, { unreadCount: channelUnreadUiState?.unread_messages })), /* @__PURE__ */ import_react245.default.createElement("li", { className: messageClass, "data-message-id": message.id, "data-testid": messageClass }, /* @__PURE__ */ import_react245.default.createElement(
53261
+ /* @__PURE__ */ import_react245.default.createElement(import_react245.Fragment, { key: message.id || message.created_at }, isFirstUnreadMessage && UnreadMessagesSeparator2 && /* @__PURE__ */ import_react245.default.createElement("li", { className: "str-chat__li str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react245.default.createElement(UnreadMessagesSeparator2, { unreadCount: channelUnreadUiState?.unread_messages })), /* @__PURE__ */ import_react245.default.createElement("li", { className: messageClass, "data-message-id": message.id, "data-testid": messageClass }, /* @__PURE__ */ import_react245.default.createElement(
53245
53262
  Message,
53246
53263
  {
53247
53264
  groupStyles: [groupStyles],
@@ -53250,8 +53267,9 @@ function defaultRenderMessages({
53250
53267
  readBy: readData[message.id] || [],
53251
53268
  ...messageProps
53252
53269
  }
53253
- )), showUnreadSeparatorBelow && UnreadMessagesSeparator2 && /* @__PURE__ */ import_react245.default.createElement("li", { className: "str-chat__li str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react245.default.createElement(UnreadMessagesSeparator2, { unreadCount: channelUnreadUiState?.unread_messages })))
53270
+ )))
53254
53271
  );
53272
+ previousMessage = message;
53255
53273
  }
53256
53274
  }
53257
53275
  return renderedMessages;
@@ -53851,15 +53869,16 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
53851
53869
  const maybeNextMessage = messageList[streamMessageIndex + 1];
53852
53870
  const firstOfGroup = shouldGroupByUser && (message.user?.id !== maybePrevMessage?.user?.id || maybePrevMessage && isMessageEdited(maybePrevMessage));
53853
53871
  const endOfGroup = shouldGroupByUser && (message.user?.id !== maybeNextMessage?.user?.id || isMessageEdited(message));
53854
- const createdAtTimestamp = message.created_at && new Date(message.created_at).getTime();
53855
- const lastReadTimestamp = lastReadDate?.getTime();
53856
- const isFirstMessage = streamMessageIndex === 0;
53857
- const isNewestMessage = lastReadMessageId === lastReceivedMessageId;
53858
- const isLastReadMessage = message.id === lastReadMessageId || !unreadMessageCount && createdAtTimestamp === lastReadTimestamp;
53859
- const isFirstUnreadMessage = firstUnreadMessageId === message.id || !!unreadMessageCount && createdAtTimestamp && lastReadTimestamp && createdAtTimestamp > lastReadTimestamp && isFirstMessage;
53860
- const showUnreadSeparatorAbove = !lastReadMessageId && isFirstUnreadMessage;
53861
- const showUnreadSeparatorBelow = isLastReadMessage && !isNewestMessage && (firstUnreadMessageId || !!unreadMessageCount);
53862
- return /* @__PURE__ */ import_react255.default.createElement(import_react255.default.Fragment, null, showUnreadSeparatorAbove && /* @__PURE__ */ import_react255.default.createElement("div", { className: "str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react255.default.createElement(UnreadMessagesSeparator2, { unreadCount: unreadMessageCount })), /* @__PURE__ */ import_react255.default.createElement(
53872
+ const isFirstUnreadMessage = getIsFirstUnreadMessage({
53873
+ firstUnreadMessageId,
53874
+ isFirstMessage: streamMessageIndex === 0,
53875
+ lastReadDate,
53876
+ lastReadMessageId,
53877
+ message,
53878
+ previousMessage: streamMessageIndex ? messageList[streamMessageIndex - 1] : void 0,
53879
+ unreadMessageCount
53880
+ });
53881
+ return /* @__PURE__ */ import_react255.default.createElement(import_react255.default.Fragment, null, isFirstUnreadMessage && /* @__PURE__ */ import_react255.default.createElement("div", { className: "str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react255.default.createElement(UnreadMessagesSeparator2, { unreadCount: unreadMessageCount })), /* @__PURE__ */ import_react255.default.createElement(
53863
53882
  Message,
53864
53883
  {
53865
53884
  additionalMessageInputProps,
@@ -53882,7 +53901,7 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
53882
53901
  sortReactions,
53883
53902
  threadList
53884
53903
  }
53885
- ), showUnreadSeparatorBelow && /* @__PURE__ */ import_react255.default.createElement("div", { className: "str-chat__unread-messages-separator-wrapper" }, /* @__PURE__ */ import_react255.default.createElement(UnreadMessagesSeparator2, { unreadCount: unreadMessageCount })));
53904
+ ));
53886
53905
  };
53887
53906
 
53888
53907
  // src/components/MessageList/VirtualizedMessageList.tsx
@@ -55359,7 +55378,7 @@ var useChat = ({
55359
55378
  if (!client) return;
55360
55379
  const userAgent = client.getUserAgent();
55361
55380
  if (!userAgent.includes("stream-chat-react")) {
55362
- client.setUserAgent(`stream-chat-react-12.8.1-${userAgent}`);
55381
+ client.setUserAgent(`stream-chat-react-12.8.2-${userAgent}`);
55363
55382
  }
55364
55383
  client.threads.registerSubscriptions();
55365
55384
  client.polls.registerSubscriptions();
@@ -55996,6 +56015,7 @@ var Window = import_react270.default.memo(UnMemoizedWindow);
55996
56015
  getGroupChannelDisplayInfo,
55997
56016
  getGroupStyles,
55998
56017
  getImages,
56018
+ getIsFirstUnreadMessage,
55999
56019
  getLastReceived,
56000
56020
  getLatestMessagePreview,
56001
56021
  getMessageActions,