stream-chat-react 13.10.2 → 13.11.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.
@@ -24,7 +24,7 @@ export const useChat = ({ client, defaultLanguage = 'en', i18nInstance, initialN
24
24
  useEffect(() => {
25
25
  if (!client)
26
26
  return;
27
- const version = "13.10.2";
27
+ const version = "13.11.0";
28
28
  const userAgent = client.getUserAgent();
29
29
  if (!userAgent.includes('stream-chat-react')) {
30
30
  // result looks like: 'stream-chat-react-2.3.2-stream-chat-javascript-client-browser-2.2.2'
@@ -9,7 +9,7 @@ import type { ChatContextValue } from '../../context/ChatContext';
9
9
  import type { ComponentContextValue } from '../../context/ComponentContext';
10
10
  import type { LocalMessage, UserResponse } from 'stream-chat';
11
11
  import type { UnknownType } from '../../types/types';
12
- type PropsDrilledToMessage = 'additionalMessageInputProps' | 'customMessageActions' | 'formatDate' | 'messageActions' | 'openThread' | 'reactionDetailsSort' | 'sortReactions' | 'sortReactionDetails';
12
+ type PropsDrilledToMessage = 'additionalMessageInputProps' | 'customMessageActions' | 'formatDate' | 'messageActions' | 'openThread' | 'reactionDetailsSort' | 'renderText' | 'sortReactions' | 'sortReactionDetails';
13
13
  type VirtualizedMessageListPropsForContext = PropsDrilledToMessage | 'closeReactionSelectorOnClick' | 'customMessageRenderer' | 'head' | 'loadingMore' | 'Message' | 'returnAllReadData' | 'shouldGroupByUser' | 'threadList';
14
14
  /**
15
15
  * Context object provided to some Virtuoso props that are functions (components rendered by Virtuoso and other functions)
@@ -56,7 +56,7 @@ function calculateInitialTopMostItemIndex(messages, highlightedMessageId) {
56
56
  const VirtualizedMessageListWithContext = (props) => {
57
57
  const { additionalMessageInputProps, additionalVirtuosoProps = {}, channel, channelUnreadUiState, closeReactionSelectorOnClick, customMessageActions, customMessageRenderer, defaultItemHeight, disableDateSeparator = true, formatDate, groupStyles, hasMoreNewer, head, hideDeletedMessages = false, hideNewMessageSeparator = false, highlightedMessageId, jumpToLatestMessage, loadingMore, loadMore, loadMoreNewer, maxTimeBetweenGroupedMessages, Message: MessageUIComponentFromProps, messageActions, messageLimit = DEFAULT_NEXT_CHANNEL_PAGE_SIZE, messages, notifications, openThread,
58
58
  // TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
59
- overscan = 0, reactionDetailsSort, returnAllReadData = false, reviewProcessedMessage, scrollSeekPlaceHolder, scrollToLatestMessageOnFocus = false, separateGiphyPreview = false, shouldGroupByUser = false, showUnreadNotificationAlways, sortReactionDetails, sortReactions, stickToBottomScrollBehavior = 'smooth', suppressAutoscroll, threadList, } = props;
59
+ overscan = 0, reactionDetailsSort, renderText, returnAllReadData = false, reviewProcessedMessage, scrollSeekPlaceHolder, scrollToLatestMessageOnFocus = false, separateGiphyPreview = false, shouldGroupByUser = false, showUnreadNotificationAlways, sortReactionDetails, sortReactions, stickToBottomScrollBehavior = 'smooth', suppressAutoscroll, threadList, } = props;
60
60
  const { components: virtuosoComponentsFromProps, ...overridingVirtuosoProps } = additionalVirtuosoProps;
61
61
  // Stops errors generated from react-virtuoso to bubble up
62
62
  // to Sentry or other tracking tools.
@@ -245,6 +245,7 @@ const VirtualizedMessageListWithContext = (props) => {
245
245
  ownMessagesReadByOthers,
246
246
  processedMessages,
247
247
  reactionDetailsSort,
248
+ renderText,
248
249
  returnAllReadData,
249
250
  shouldGroupByUser,
250
251
  sortReactionDetails,
@@ -51,7 +51,7 @@ export const EmptyPlaceholder = ({ context }) => {
51
51
  return (React.createElement(React.Fragment, null, EmptyStateIndicator && (React.createElement(EmptyStateIndicator, { listType: context?.threadList ? 'thread' : 'message' }))));
52
52
  };
53
53
  export const messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
54
- const { additionalMessageInputProps, closeReactionSelectorOnClick, customMessageActions, customMessageRenderer, DateSeparator, firstUnreadMessageId, formatDate, lastOwnMessage, lastReadDate, lastReadMessageId, lastReceivedMessageId, Message: MessageUIComponent, messageActions, messageGroupStyles, MessageSystem, numItemsPrepended, openThread, ownMessagesDeliveredToOthers, ownMessagesReadByOthers, processedMessages: messageList, reactionDetailsSort, returnAllReadData, shouldGroupByUser, sortReactionDetails, sortReactions, threadList, unreadMessageCount = 0, UnreadMessagesSeparator, virtuosoRef, } = virtuosoContext;
54
+ const { additionalMessageInputProps, closeReactionSelectorOnClick, customMessageActions, customMessageRenderer, DateSeparator, firstUnreadMessageId, formatDate, lastOwnMessage, lastReadDate, lastReadMessageId, lastReceivedMessageId, Message: MessageUIComponent, messageActions, messageGroupStyles, MessageSystem, numItemsPrepended, openThread, ownMessagesDeliveredToOthers, ownMessagesReadByOthers, processedMessages: messageList, reactionDetailsSort, renderText, returnAllReadData, shouldGroupByUser, sortReactionDetails, sortReactions, threadList, unreadMessageCount = 0, UnreadMessagesSeparator, virtuosoRef, } = virtuosoContext;
55
55
  const streamMessageIndex = calculateItemIndex(virtuosoIndex, numItemsPrepended);
56
56
  if (customMessageRenderer) {
57
57
  return customMessageRenderer(messageList, streamMessageIndex);
@@ -88,5 +88,5 @@ export const messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
88
88
  return (React.createElement(React.Fragment, null,
89
89
  isFirstUnreadMessage && (React.createElement("div", { className: 'str-chat__unread-messages-separator-wrapper' },
90
90
  React.createElement(UnreadMessagesSeparator, { unreadCount: unreadMessageCount }))),
91
- React.createElement(Message, { additionalMessageInputProps: additionalMessageInputProps, autoscrollToBottom: virtuosoRef.current?.autoscrollToBottom, closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: customMessageActions, deliveredTo: ownMessagesDeliveredToOthers[message.id] || [], endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, formatDate: formatDate, groupedByUser: groupedByUser, groupStyles: [messageGroupStyles[message.id] ?? ''], lastOwnMessage: lastOwnMessage, lastReceivedId: lastReceivedMessageId, message: message, Message: MessageUIComponent, messageActions: messageActions, openThread: openThread, reactionDetailsSort: reactionDetailsSort, readBy: ownMessagesReadByOthers[message.id] || [], returnAllReadData: returnAllReadData, sortReactionDetails: sortReactionDetails, sortReactions: sortReactions, threadList: threadList })));
91
+ React.createElement(Message, { additionalMessageInputProps: additionalMessageInputProps, autoscrollToBottom: virtuosoRef.current?.autoscrollToBottom, closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: customMessageActions, deliveredTo: ownMessagesDeliveredToOthers[message.id] || [], endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, formatDate: formatDate, groupedByUser: groupedByUser, groupStyles: [messageGroupStyles[message.id] ?? ''], lastOwnMessage: lastOwnMessage, lastReceivedId: lastReceivedMessageId, message: message, Message: MessageUIComponent, messageActions: messageActions, openThread: openThread, reactionDetailsSort: reactionDetailsSort, readBy: ownMessagesReadByOthers[message.id] || [], renderText: renderText, returnAllReadData: returnAllReadData, sortReactionDetails: sortReactionDetails, sortReactions: sortReactions, threadList: threadList })));
92
92
  };
@@ -1,16 +1,14 @@
1
1
  import { useCallback, useEffect, useState } from 'react';
2
2
  export const useLastDeliveredData = (props) => {
3
3
  const { channel, lastOwnMessage, messages, returnAllReadData } = props;
4
- const calculate = useCallback(() => {
5
- if (returnAllReadData) {
6
- return messages.reduce((acc, msg) => {
7
- acc[msg.id] = channel.messageReceiptsTracker.deliveredForMessage({
8
- msgId: msg.id,
9
- timestampMs: msg.created_at.getTime(),
10
- });
11
- return acc;
12
- }, {});
13
- }
4
+ const calculateForAll = useCallback(() => messages.reduce((acc, msg) => {
5
+ acc[msg.id] = channel.messageReceiptsTracker.deliveredForMessage({
6
+ msgId: msg.id,
7
+ timestampMs: msg.created_at.getTime(),
8
+ });
9
+ return acc;
10
+ }, {}), [channel, messages]);
11
+ const calculateForLastOwn = useCallback(() => {
14
12
  if (!lastOwnMessage)
15
13
  return {};
16
14
  return {
@@ -19,8 +17,22 @@ export const useLastDeliveredData = (props) => {
19
17
  timestampMs: lastOwnMessage.created_at.getTime(),
20
18
  }),
21
19
  };
22
- }, [channel, lastOwnMessage, messages, returnAllReadData]);
23
- const [deliveredTo, setDeliveredTo] = useState(calculate);
24
- useEffect(() => channel.on('message.delivered', () => setDeliveredTo(calculate)).unsubscribe, [channel, calculate]);
20
+ }, [channel, lastOwnMessage]);
21
+ const [deliveredTo, setDeliveredTo] = useState(returnAllReadData ? calculateForAll : calculateForLastOwn);
22
+ useEffect(() => {
23
+ if (!returnAllReadData)
24
+ return;
25
+ setDeliveredTo(calculateForAll);
26
+ return channel.on('message.delivered', () => setDeliveredTo(calculateForAll))
27
+ .unsubscribe;
28
+ }, [channel, calculateForAll, returnAllReadData]);
29
+ useEffect(() => {
30
+ if (returnAllReadData)
31
+ return;
32
+ else
33
+ setDeliveredTo(calculateForLastOwn);
34
+ return channel.on('message.delivered', () => setDeliveredTo(calculateForLastOwn))
35
+ .unsubscribe;
36
+ }, [channel, calculateForLastOwn, returnAllReadData]);
25
37
  return deliveredTo;
26
38
  };
@@ -27609,19 +27609,20 @@ var useLastReadData = (props) => {
27609
27609
  var import_react163 = require("react");
27610
27610
  var useLastDeliveredData = (props) => {
27611
27611
  const { channel, lastOwnMessage, messages, returnAllReadData } = props;
27612
- const calculate = (0, import_react163.useCallback)(() => {
27613
- if (returnAllReadData) {
27614
- return messages.reduce(
27615
- (acc, msg) => {
27616
- acc[msg.id] = channel.messageReceiptsTracker.deliveredForMessage({
27617
- msgId: msg.id,
27618
- timestampMs: msg.created_at.getTime()
27619
- });
27620
- return acc;
27621
- },
27622
- {}
27623
- );
27624
- }
27612
+ const calculateForAll = (0, import_react163.useCallback)(
27613
+ () => messages.reduce(
27614
+ (acc, msg) => {
27615
+ acc[msg.id] = channel.messageReceiptsTracker.deliveredForMessage({
27616
+ msgId: msg.id,
27617
+ timestampMs: msg.created_at.getTime()
27618
+ });
27619
+ return acc;
27620
+ },
27621
+ {}
27622
+ ),
27623
+ [channel, messages]
27624
+ );
27625
+ const calculateForLastOwn = (0, import_react163.useCallback)(() => {
27625
27626
  if (!lastOwnMessage) return {};
27626
27627
  return {
27627
27628
  [lastOwnMessage.id]: channel.messageReceiptsTracker.deliveredForMessage({
@@ -27629,12 +27630,20 @@ var useLastDeliveredData = (props) => {
27629
27630
  timestampMs: lastOwnMessage.created_at.getTime()
27630
27631
  })
27631
27632
  };
27632
- }, [channel, lastOwnMessage, messages, returnAllReadData]);
27633
- const [deliveredTo, setDeliveredTo] = (0, import_react163.useState)(calculate);
27634
- (0, import_react163.useEffect)(
27635
- () => channel.on("message.delivered", () => setDeliveredTo(calculate)).unsubscribe,
27636
- [channel, calculate]
27637
- );
27633
+ }, [channel, lastOwnMessage]);
27634
+ const [deliveredTo, setDeliveredTo] = (0, import_react163.useState)(
27635
+ returnAllReadData ? calculateForAll : calculateForLastOwn
27636
+ );
27637
+ (0, import_react163.useEffect)(() => {
27638
+ if (!returnAllReadData) return;
27639
+ setDeliveredTo(calculateForAll);
27640
+ return channel.on("message.delivered", () => setDeliveredTo(calculateForAll)).unsubscribe;
27641
+ }, [channel, calculateForAll, returnAllReadData]);
27642
+ (0, import_react163.useEffect)(() => {
27643
+ if (returnAllReadData) return;
27644
+ else setDeliveredTo(calculateForLastOwn);
27645
+ return channel.on("message.delivered", () => setDeliveredTo(calculateForLastOwn)).unsubscribe;
27646
+ }, [channel, calculateForLastOwn, returnAllReadData]);
27638
27647
  return deliveredTo;
27639
27648
  };
27640
27649
 
@@ -29043,6 +29052,7 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
29043
29052
  ownMessagesReadByOthers,
29044
29053
  processedMessages: messageList,
29045
29054
  reactionDetailsSort,
29055
+ renderText: renderText2,
29046
29056
  returnAllReadData,
29047
29057
  shouldGroupByUser,
29048
29058
  sortReactionDetails,
@@ -29099,6 +29109,7 @@ var messageRenderer = (virtuosoIndex, _data, virtuosoContext) => {
29099
29109
  openThread,
29100
29110
  reactionDetailsSort,
29101
29111
  readBy: ownMessagesReadByOthers[message.id] || [],
29112
+ renderText: renderText2,
29102
29113
  returnAllReadData,
29103
29114
  sortReactionDetails,
29104
29115
  sortReactions,
@@ -29182,6 +29193,7 @@ var VirtualizedMessageListWithContext = (props) => {
29182
29193
  // TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
29183
29194
  overscan = 0,
29184
29195
  reactionDetailsSort,
29196
+ renderText: renderText2,
29185
29197
  returnAllReadData = false,
29186
29198
  reviewProcessedMessage,
29187
29199
  scrollSeekPlaceHolder,
@@ -29425,6 +29437,7 @@ var VirtualizedMessageListWithContext = (props) => {
29425
29437
  ownMessagesReadByOthers,
29426
29438
  processedMessages,
29427
29439
  reactionDetailsSort,
29440
+ renderText: renderText2,
29428
29441
  returnAllReadData,
29429
29442
  shouldGroupByUser,
29430
29443
  sortReactionDetails,
@@ -36553,7 +36566,7 @@ var useChat = ({
36553
36566
  };
36554
36567
  (0, import_react286.useEffect)(() => {
36555
36568
  if (!client) return;
36556
- const version = "13.10.2";
36569
+ const version = "13.11.0";
36557
36570
  const userAgent = client.getUserAgent();
36558
36571
  if (!userAgent.includes("stream-chat-react")) {
36559
36572
  client.setUserAgent(`stream-chat-react-${version}-${userAgent}`);