stream-chat-react 11.3.0 → 11.5.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.
Files changed (254) hide show
  1. package/dist/browser.full-bundle.js +5791 -5143
  2. package/dist/browser.full-bundle.js.map +1 -1
  3. package/dist/browser.full-bundle.min.js +4 -4
  4. package/dist/browser.full-bundle.min.js.map +1 -1
  5. package/dist/components/Attachment/Attachment.d.ts.map +1 -1
  6. package/dist/components/Attachment/Attachment.js +1 -0
  7. package/dist/components/Attachment/AttachmentContainer.d.ts.map +1 -1
  8. package/dist/components/Attachment/AttachmentContainer.js +1 -0
  9. package/dist/components/Attachment/hooks/useAudioController.d.ts.map +1 -1
  10. package/dist/components/Attachment/hooks/useAudioController.js +1 -0
  11. package/dist/components/Channel/Channel.d.ts +9 -2
  12. package/dist/components/Channel/Channel.d.ts.map +1 -1
  13. package/dist/components/Channel/Channel.js +119 -45
  14. package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts.map +1 -1
  15. package/dist/components/Channel/hooks/useCreateChannelStateContext.js +3 -1
  16. package/dist/components/Channel/hooks/useCreateTypingContext.d.ts.map +1 -1
  17. package/dist/components/Channel/hooks/useCreateTypingContext.js +3 -1
  18. package/dist/components/ChannelList/ChannelList.d.ts.map +1 -1
  19. package/dist/components/ChannelList/ChannelList.js +3 -0
  20. package/dist/components/ChannelList/hooks/useChannelDeletedListener.d.ts.map +1 -1
  21. package/dist/components/ChannelList/hooks/useChannelDeletedListener.js +1 -0
  22. package/dist/components/ChannelList/hooks/useChannelHiddenListener.d.ts.map +1 -1
  23. package/dist/components/ChannelList/hooks/useChannelHiddenListener.js +1 -0
  24. package/dist/components/ChannelList/hooks/useChannelTruncatedListener.d.ts.map +1 -1
  25. package/dist/components/ChannelList/hooks/useChannelTruncatedListener.js +1 -0
  26. package/dist/components/ChannelList/hooks/useChannelUpdatedListener.d.ts.map +1 -1
  27. package/dist/components/ChannelList/hooks/useChannelUpdatedListener.js +1 -0
  28. package/dist/components/ChannelList/hooks/useChannelVisibleListener.d.ts.map +1 -1
  29. package/dist/components/ChannelList/hooks/useChannelVisibleListener.js +1 -0
  30. package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts.map +1 -1
  31. package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.js +1 -0
  32. package/dist/components/ChannelList/hooks/useMessageNewListener.d.ts.map +1 -1
  33. package/dist/components/ChannelList/hooks/useMessageNewListener.js +1 -0
  34. package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts.map +1 -1
  35. package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.js +1 -0
  36. package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts.map +1 -1
  37. package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.js +1 -0
  38. package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.d.ts.map +1 -1
  39. package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.js +1 -0
  40. package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
  41. package/dist/components/ChannelList/hooks/usePaginatedChannels.js +2 -0
  42. package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.d.ts.map +1 -1
  43. package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.js +1 -0
  44. package/dist/components/ChannelPreview/ChannelPreview.d.ts +16 -0
  45. package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
  46. package/dist/components/ChannelPreview/ChannelPreview.js +18 -2
  47. package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts +5 -0
  48. package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts.map +1 -1
  49. package/dist/components/ChannelPreview/ChannelPreviewMessenger.js +62 -2
  50. package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.d.ts.map +1 -1
  51. package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.js +1 -0
  52. package/dist/components/ChannelPreview/hooks/useIsChannelMuted.d.ts.map +1 -1
  53. package/dist/components/ChannelPreview/hooks/useIsChannelMuted.js +1 -0
  54. package/dist/components/ChannelSearch/SearchBar.d.ts.map +1 -1
  55. package/dist/components/ChannelSearch/SearchBar.js +2 -0
  56. package/dist/components/ChannelSearch/SearchResults.d.ts.map +1 -1
  57. package/dist/components/ChannelSearch/SearchResults.js +3 -1
  58. package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts.map +1 -1
  59. package/dist/components/ChannelSearch/hooks/useChannelSearch.js +7 -1
  60. package/dist/components/Chat/hooks/useChat.d.ts.map +1 -1
  61. package/dist/components/Chat/hooks/useChat.js +2 -0
  62. package/dist/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
  63. package/dist/components/Chat/hooks/useCreateChatContext.js +3 -1
  64. package/dist/components/Emojis/index.cjs.js +1 -1
  65. package/dist/components/Gallery/ModalGallery.d.ts.map +1 -1
  66. package/dist/components/Gallery/ModalGallery.js +3 -1
  67. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts.map +1 -1
  68. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.js +1 -0
  69. package/dist/components/LoadMore/LoadMoreButton.d.ts.map +1 -1
  70. package/dist/components/LoadMore/LoadMoreButton.js +1 -0
  71. package/dist/components/LoadMore/LoadMorePaginator.d.ts.map +1 -1
  72. package/dist/components/LoadMore/LoadMorePaginator.js +1 -0
  73. package/dist/components/Message/Message.d.ts.map +1 -1
  74. package/dist/components/Message/Message.js +40 -8
  75. package/dist/components/Message/MessageText.d.ts.map +1 -1
  76. package/dist/components/Message/MessageText.js +1 -0
  77. package/dist/components/Message/hooks/index.d.ts +2 -0
  78. package/dist/components/Message/hooks/index.d.ts.map +1 -1
  79. package/dist/components/Message/hooks/index.js +2 -0
  80. package/dist/components/Message/hooks/useMarkUnreadHandler.d.ts +10 -0
  81. package/dist/components/Message/hooks/useMarkUnreadHandler.d.ts.map +1 -0
  82. package/dist/components/Message/hooks/useMarkUnreadHandler.js +45 -0
  83. package/dist/components/Message/hooks/useReactionHandler.d.ts.map +1 -1
  84. package/dist/components/Message/hooks/useReactionHandler.js +6 -2
  85. package/dist/components/Message/hooks/useReactionsFetcher.d.ts +11 -0
  86. package/dist/components/Message/hooks/useReactionsFetcher.d.ts.map +1 -0
  87. package/dist/components/Message/hooks/useReactionsFetcher.js +58 -0
  88. package/dist/components/Message/hooks/useUserRole.d.ts +1 -0
  89. package/dist/components/Message/hooks/useUserRole.d.ts.map +1 -1
  90. package/dist/components/Message/hooks/useUserRole.js +2 -0
  91. package/dist/components/Message/types.d.ts +7 -1
  92. package/dist/components/Message/types.d.ts.map +1 -1
  93. package/dist/components/Message/utils.d.ts +4 -1
  94. package/dist/components/Message/utils.d.ts.map +1 -1
  95. package/dist/components/Message/utils.js +12 -3
  96. package/dist/components/MessageActions/MessageActions.d.ts +1 -1
  97. package/dist/components/MessageActions/MessageActions.d.ts.map +1 -1
  98. package/dist/components/MessageActions/MessageActions.js +14 -5
  99. package/dist/components/MessageActions/MessageActionsBox.d.ts +4 -3
  100. package/dist/components/MessageActions/MessageActionsBox.d.ts.map +1 -1
  101. package/dist/components/MessageActions/MessageActionsBox.js +8 -24
  102. package/dist/components/MessageActions/hooks/index.d.ts +2 -0
  103. package/dist/components/MessageActions/hooks/index.d.ts.map +1 -0
  104. package/dist/components/MessageActions/hooks/index.js +1 -0
  105. package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.d.ts +18 -0
  106. package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.d.ts.map +1 -0
  107. package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.js +32 -0
  108. package/dist/components/MessageInput/MessageInputFlat.d.ts.map +1 -1
  109. package/dist/components/MessageInput/MessageInputFlat.js +1 -0
  110. package/dist/components/MessageInput/MessageInputSmall.d.ts.map +1 -1
  111. package/dist/components/MessageInput/MessageInputSmall.js +1 -0
  112. package/dist/components/MessageInput/hooks/useAttachments.d.ts.map +1 -1
  113. package/dist/components/MessageInput/hooks/useAttachments.js +3 -1
  114. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts.map +1 -1
  115. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +3 -1
  116. package/dist/components/MessageInput/hooks/useFileUploads.d.ts.map +1 -1
  117. package/dist/components/MessageInput/hooks/useFileUploads.js +3 -0
  118. package/dist/components/MessageInput/hooks/useImageUploads.d.ts.map +1 -1
  119. package/dist/components/MessageInput/hooks/useImageUploads.js +4 -1
  120. package/dist/components/MessageInput/hooks/useLinkPreviews.d.ts.map +1 -1
  121. package/dist/components/MessageInput/hooks/useLinkPreviews.js +5 -1
  122. package/dist/components/MessageInput/hooks/useMessageInputText.d.ts.map +1 -1
  123. package/dist/components/MessageInput/hooks/useMessageInputText.js +6 -2
  124. package/dist/components/MessageInput/hooks/usePasteHandler.d.ts.map +1 -1
  125. package/dist/components/MessageInput/hooks/usePasteHandler.js +3 -1
  126. package/dist/components/MessageInput/hooks/useUserTrigger.d.ts.map +1 -1
  127. package/dist/components/MessageInput/hooks/useUserTrigger.js +1 -0
  128. package/dist/components/MessageList/MessageList.d.ts +6 -1
  129. package/dist/components/MessageList/MessageList.d.ts.map +1 -1
  130. package/dist/components/MessageList/MessageList.js +32 -13
  131. package/dist/components/MessageList/MessageListMainPanel.d.ts +1 -0
  132. package/dist/components/MessageList/MessageListMainPanel.d.ts.map +1 -1
  133. package/dist/components/MessageList/MessageListMainPanel.js +2 -1
  134. package/dist/components/MessageList/MessageListNotifications.d.ts +1 -0
  135. package/dist/components/MessageList/MessageListNotifications.d.ts.map +1 -1
  136. package/dist/components/MessageList/MessageListNotifications.js +2 -2
  137. package/dist/components/MessageList/MessageNotification.d.ts +2 -0
  138. package/dist/components/MessageList/MessageNotification.d.ts.map +1 -1
  139. package/dist/components/MessageList/ScrollToBottomButton.d.ts +1 -1
  140. package/dist/components/MessageList/ScrollToBottomButton.d.ts.map +1 -1
  141. package/dist/components/MessageList/ScrollToBottomButton.js +3 -43
  142. package/dist/components/MessageList/UnreadMessagesNotification.d.ts +6 -0
  143. package/dist/components/MessageList/UnreadMessagesNotification.d.ts.map +1 -0
  144. package/dist/components/MessageList/UnreadMessagesNotification.js +12 -0
  145. package/dist/components/MessageList/UnreadMessagesSeparator.d.ts +6 -0
  146. package/dist/components/MessageList/UnreadMessagesSeparator.d.ts.map +1 -0
  147. package/dist/components/MessageList/UnreadMessagesSeparator.js +10 -0
  148. package/dist/components/MessageList/VirtualizedMessageList.d.ts +12 -1
  149. package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
  150. package/dist/components/MessageList/VirtualizedMessageList.js +51 -30
  151. package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts +5 -3
  152. package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -1
  153. package/dist/components/MessageList/VirtualizedMessageListComponents.js +27 -6
  154. package/dist/components/MessageList/hooks/MessageList/index.d.ts +1 -0
  155. package/dist/components/MessageList/hooks/MessageList/index.d.ts.map +1 -1
  156. package/dist/components/MessageList/hooks/MessageList/index.js +1 -0
  157. package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts.map +1 -1
  158. package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.js +3 -1
  159. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts +5 -8
  160. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts.map +1 -1
  161. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.js +22 -31
  162. package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.d.ts.map +1 -1
  163. package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.js +1 -0
  164. package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts.map +1 -1
  165. package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.js +1 -0
  166. package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.d.ts +7 -0
  167. package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.d.ts.map +1 -0
  168. package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.js +42 -0
  169. package/dist/components/MessageList/hooks/VirtualizedMessageList/index.d.ts +1 -0
  170. package/dist/components/MessageList/hooks/VirtualizedMessageList/index.d.ts.map +1 -1
  171. package/dist/components/MessageList/hooks/VirtualizedMessageList/index.js +1 -0
  172. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts.map +1 -1
  173. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.js +1 -0
  174. package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.d.ts.map +1 -1
  175. package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.js +1 -0
  176. package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts.map +1 -1
  177. package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.js +1 -0
  178. package/dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.d.ts.map +1 -1
  179. package/dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.js +1 -0
  180. package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.d.ts +22 -0
  181. package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.d.ts.map +1 -0
  182. package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.js +29 -0
  183. package/dist/components/MessageList/hooks/useMarkRead.d.ts +19 -0
  184. package/dist/components/MessageList/hooks/useMarkRead.d.ts.map +1 -0
  185. package/dist/components/MessageList/hooks/useMarkRead.js +38 -0
  186. package/dist/components/MessageList/icons.d.ts +1 -0
  187. package/dist/components/MessageList/icons.d.ts.map +1 -1
  188. package/dist/components/MessageList/icons.js +2 -0
  189. package/dist/components/MessageList/index.d.ts +3 -0
  190. package/dist/components/MessageList/index.d.ts.map +1 -1
  191. package/dist/components/MessageList/index.js +3 -0
  192. package/dist/components/MessageList/renderMessages.d.ts +33 -0
  193. package/dist/components/MessageList/renderMessages.d.ts.map +1 -0
  194. package/dist/components/MessageList/renderMessages.js +35 -0
  195. package/dist/components/MessageList/utils.d.ts.map +1 -1
  196. package/dist/components/MessageList/utils.js +1 -1
  197. package/dist/components/Reactions/ReactionsList.d.ts +2 -1
  198. package/dist/components/Reactions/ReactionsList.d.ts.map +1 -1
  199. package/dist/components/Reactions/ReactionsList.js +32 -41
  200. package/dist/components/Reactions/ReactionsListModal.d.ts +13 -0
  201. package/dist/components/Reactions/ReactionsListModal.d.ts.map +1 -0
  202. package/dist/components/Reactions/ReactionsListModal.js +46 -0
  203. package/dist/components/Reactions/SimpleReactionsList.d.ts +2 -4
  204. package/dist/components/Reactions/SimpleReactionsList.d.ts.map +1 -1
  205. package/dist/components/Reactions/SimpleReactionsList.js +7 -24
  206. package/dist/components/Reactions/hooks/useFetchReactions.d.ts +12 -0
  207. package/dist/components/Reactions/hooks/useFetchReactions.d.ts.map +1 -0
  208. package/dist/components/Reactions/hooks/useFetchReactions.js +50 -0
  209. package/dist/components/Reactions/hooks/useProcessReactions.d.ts +3 -13
  210. package/dist/components/Reactions/hooks/useProcessReactions.d.ts.map +1 -1
  211. package/dist/components/Reactions/hooks/useProcessReactions.js +51 -43
  212. package/dist/components/Reactions/types.d.ts +9 -0
  213. package/dist/components/Reactions/types.d.ts.map +1 -0
  214. package/dist/components/Reactions/types.js +1 -0
  215. package/dist/components/Thread/Thread.js +1 -0
  216. package/dist/context/ChannelActionContext.d.ts +2 -0
  217. package/dist/context/ChannelActionContext.d.ts.map +1 -1
  218. package/dist/context/ComponentContext.d.ts +6 -2
  219. package/dist/context/ComponentContext.d.ts.map +1 -1
  220. package/dist/context/MessageContext.d.ts +8 -2
  221. package/dist/context/MessageContext.d.ts.map +1 -1
  222. package/dist/css/v2/index.css +1 -1
  223. package/dist/css/v2/index.layout.css +1 -1
  224. package/dist/i18n/Streami18n.d.ts +10 -0
  225. package/dist/i18n/Streami18n.d.ts.map +1 -1
  226. package/dist/i18n/de.json +10 -0
  227. package/dist/i18n/en.json +10 -0
  228. package/dist/i18n/es.json +12 -0
  229. package/dist/i18n/fr.json +12 -0
  230. package/dist/i18n/hi.json +11 -0
  231. package/dist/i18n/it.json +12 -0
  232. package/dist/i18n/ja.json +8 -0
  233. package/dist/i18n/ko.json +8 -0
  234. package/dist/i18n/nl.json +10 -0
  235. package/dist/i18n/pt.json +12 -0
  236. package/dist/i18n/ru.json +14 -0
  237. package/dist/i18n/tr.json +10 -0
  238. package/dist/{icons-b84cd102.js → icons-7ead3d97.js} +12 -12
  239. package/dist/index.cjs.js +4911 -4265
  240. package/dist/scss/v2/AttachmentPreviewList/AttachmentPreviewList-layout.scss +1 -0
  241. package/dist/scss/v2/Message/Message-layout.scss +68 -10
  242. package/dist/scss/v2/Message/Message-theme.scss +34 -2
  243. package/dist/scss/v2/MessageActionsBox/MessageActionsBox-layout.scss +0 -11
  244. package/dist/scss/v2/MessageBounceOptions/MessageBounceOptions-layout.scss +18 -0
  245. package/dist/scss/v2/MessageBounceOptions/MessageBounceOptions-theme.scss +51 -0
  246. package/dist/scss/v2/MessageReactions/MessageReactions-layout.scss +74 -0
  247. package/dist/scss/v2/MessageReactions/MessageReactions-theme.scss +17 -0
  248. package/dist/scss/v2/_base.scss +3 -20
  249. package/dist/scss/v2/_global-theme-variables.scss +3 -0
  250. package/dist/scss/v2/index.layout.scss +1 -0
  251. package/dist/scss/v2/index.scss +1 -1
  252. package/dist/version.d.ts +1 -1
  253. package/dist/version.js +1 -1
  254. package/package.json +4 -3
@@ -1,53 +1,13 @@
1
- import React, { useEffect, useState } from 'react';
1
+ import React from 'react';
2
2
  import clsx from 'clsx';
3
3
  import { ArrowDown } from './icons';
4
- import { useChannelStateContext, useChatContext } from '../../context';
5
4
  var UnMemoizedScrollToBottomButton = function (props) {
6
- var isMessageListScrolledToBottom = props.isMessageListScrolledToBottom, onClick = props.onClick, threadList = props.threadList;
7
- var _a = useChatContext(), activeChannel = _a.channel, client = _a.client;
8
- var thread = useChannelStateContext().thread;
9
- var _b = useState((activeChannel === null || activeChannel === void 0 ? void 0 : activeChannel.countUnread()) || 0), countUnread = _b[0], setCountUnread = _b[1];
10
- var _c = useState((thread === null || thread === void 0 ? void 0 : thread.reply_count) || 0), replyCount = _c[0], setReplyCount = _c[1];
11
- var observedEvent = threadList ? 'message.updated' : 'message.new';
12
- useEffect(function () {
13
- var handleEvent = function (event) {
14
- var _a, _b, _c, _d, _e;
15
- var newMessageInAnotherChannel = event.cid !== (activeChannel === null || activeChannel === void 0 ? void 0 : activeChannel.cid);
16
- var newMessageIsMine = ((_a = event.user) === null || _a === void 0 ? void 0 : _a.id) === ((_b = client.user) === null || _b === void 0 ? void 0 : _b.id);
17
- var isThreadOpen = !!thread;
18
- var newMessageIsReply = !!((_c = event.message) === null || _c === void 0 ? void 0 : _c.parent_id);
19
- var dontIncreaseMainListCounterOnNewReply = isThreadOpen && !threadList && newMessageIsReply;
20
- if (isMessageListScrolledToBottom ||
21
- newMessageInAnotherChannel ||
22
- newMessageIsMine ||
23
- dontIncreaseMainListCounterOnNewReply) {
24
- return;
25
- }
26
- if (event.type === 'message.new') {
27
- // cannot rely on channel.countUnread because active channel is automatically marked read
28
- setCountUnread(function (prev) { return prev + 1; });
29
- }
30
- else if (((_d = event.message) === null || _d === void 0 ? void 0 : _d.id) === (thread === null || thread === void 0 ? void 0 : thread.id)) {
31
- var newReplyCount_1 = ((_e = event.message) === null || _e === void 0 ? void 0 : _e.reply_count) || 0;
32
- setCountUnread(function () { return newReplyCount_1 - replyCount; });
33
- }
34
- };
35
- client.on(observedEvent, handleEvent);
36
- return function () {
37
- client.off(observedEvent, handleEvent);
38
- };
39
- }, [activeChannel, isMessageListScrolledToBottom, observedEvent, replyCount, thread]);
40
- useEffect(function () {
41
- if (isMessageListScrolledToBottom) {
42
- setCountUnread(0);
43
- setReplyCount((thread === null || thread === void 0 ? void 0 : thread.reply_count) || 0);
44
- }
45
- }, [isMessageListScrolledToBottom, thread]);
5
+ var isMessageListScrolledToBottom = props.isMessageListScrolledToBottom, onClick = props.onClick, _a = props.unreadCount, unreadCount = _a === void 0 ? 0 : _a;
46
6
  if (isMessageListScrolledToBottom)
47
7
  return null;
48
8
  return (React.createElement("div", { className: 'str-chat__jump-to-latest-message' },
49
9
  React.createElement("button", { "aria-live": 'polite', className: "\n str-chat__message-notification-right\n str-chat__message-notification-scroll-to-latest\n str-chat__circle-fab\n ", "data-testid": 'message-notification', onClick: onClick },
50
10
  React.createElement(ArrowDown, null),
51
- countUnread > 0 && (React.createElement("div", { className: clsx('str-chat__message-notification', 'str-chat__message-notification-scroll-to-latest-unread-count', 'str-chat__jump-to-latest-unread-count'), "data-testid": 'unread-message-notification-counter' }, countUnread)))));
11
+ unreadCount > 0 && (React.createElement("div", { className: clsx('str-chat__message-notification', 'str-chat__message-notification-scroll-to-latest-unread-count', 'str-chat__jump-to-latest-unread-count'), "data-testid": 'unread-message-notification-counter' }, unreadCount)))));
52
12
  };
53
13
  export var ScrollToBottomButton = React.memo(UnMemoizedScrollToBottomButton);
@@ -0,0 +1,6 @@
1
+ export type UnreadMessagesNotificationProps = {
2
+ queryMessageLimit?: number;
3
+ unreadCount?: number;
4
+ };
5
+ export declare const UnreadMessagesNotification: ({ queryMessageLimit, unreadCount, }: UnreadMessagesNotificationProps) => JSX.Element;
6
+ //# sourceMappingURL=UnreadMessagesNotification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnreadMessagesNotification.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/UnreadMessagesNotification.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,+BAA+B,GAAG;IAC5C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,0BAA0B,wCAGpC,+BAA+B,gBAgBjC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { CloseIcon } from './icons';
3
+ import { useChannelActionContext, useTranslationContext } from '../../context';
4
+ export var UnreadMessagesNotification = function (_a) {
5
+ var queryMessageLimit = _a.queryMessageLimit, unreadCount = _a.unreadCount;
6
+ var _b = useChannelActionContext('UnreadMessagesNotification'), jumpToFirstUnreadMessage = _b.jumpToFirstUnreadMessage, markRead = _b.markRead;
7
+ var t = useTranslationContext('UnreadMessagesNotification').t;
8
+ return (React.createElement("div", { className: 'str-chat__unread-messages-notification' },
9
+ React.createElement("button", { onClick: function () { return jumpToFirstUnreadMessage(queryMessageLimit); } }, t('{{count}} unread', { count: unreadCount !== null && unreadCount !== void 0 ? unreadCount : 0 })),
10
+ React.createElement("button", { onClick: markRead },
11
+ React.createElement(CloseIcon, null))));
12
+ };
@@ -0,0 +1,6 @@
1
+ export declare const UNREAD_MESSAGE_SEPARATOR_CLASS = "str-chat__unread-messages-separator";
2
+ export type UnreadMessagesSeparatorProps = {
3
+ unreadCount?: number;
4
+ };
5
+ export declare const UnreadMessagesSeparator: ({ unreadCount }: UnreadMessagesSeparatorProps) => JSX.Element;
6
+ //# sourceMappingURL=UnreadMessagesSeparator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnreadMessagesSeparator.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/UnreadMessagesSeparator.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,8BAA8B,wCAAwC,CAAC;AAEpF,MAAM,MAAM,4BAA4B,GAAG;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,uBAAuB,oBAAqB,4BAA4B,gBASpF,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { useTranslationContext } from '../../context';
3
+ export var UNREAD_MESSAGE_SEPARATOR_CLASS = 'str-chat__unread-messages-separator';
4
+ export var UnreadMessagesSeparator = function (_a) {
5
+ var unreadCount = _a.unreadCount;
6
+ var t = useTranslationContext('UnreadMessagesSeparator').t;
7
+ return (React.createElement("div", { className: UNREAD_MESSAGE_SEPARATOR_CLASS }, unreadCount
8
+ ? t('unreadMessagesSeparatorText', { count: unreadCount })
9
+ : t('Unread messages')));
10
+ };
@@ -12,7 +12,7 @@ type VirtualizedMessageListPropsForContext = 'additionalMessageInputProps' | 'cl
12
12
  /**
13
13
  * Context object provided to some Virtuoso props that are functions (components rendered by Virtuoso and other functions)
14
14
  */
15
- export type VirtuosoContext<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Required<Pick<ComponentContextValue<StreamChatGenerics>, 'DateSeparator' | 'MessageSystem'>> & Pick<VirtualizedMessageListProps<StreamChatGenerics>, VirtualizedMessageListPropsForContext> & Pick<ChatContextValue<StreamChatGenerics>, 'customClasses'> & {
15
+ export type VirtuosoContext<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Required<Pick<ComponentContextValue<StreamChatGenerics>, 'DateSeparator' | 'MessageSystem' | 'UnreadMessagesSeparator'>> & Pick<VirtualizedMessageListProps<StreamChatGenerics>, VirtualizedMessageListPropsForContext> & Pick<ChatContextValue<StreamChatGenerics>, 'customClasses'> & {
16
16
  /** Latest received message id in the current channel */
17
17
  lastReceivedMessageId: string | null | undefined;
18
18
  /** Object mapping between the message ID and a string representing the position in the group of a sequence of messages posted by the same user. */
@@ -25,6 +25,15 @@ export type VirtuosoContext<StreamChatGenerics extends DefaultStreamChatGenerics
25
25
  processedMessages: StreamMessage<StreamChatGenerics>[];
26
26
  /** Instance of VirtuosoHandle object providing the API to navigate in the virtualized list by various scroll actions. */
27
27
  virtuosoRef: RefObject<VirtuosoHandle>;
28
+ /** Message id which was marked as unread. ALl the messages following this message are considered unrea. */
29
+ firstUnreadMessageId?: string;
30
+ /**
31
+ * The ID of the last message considered read by the current user in the current channel.
32
+ * All the messages following this message are considered unread.
33
+ */
34
+ lastReadMessageId?: string;
35
+ /** The number of unread messages in the current channel. */
36
+ unreadMessageCount?: number;
28
37
  };
29
38
  type PropsDrilledToMessage = 'additionalMessageInputProps' | 'customMessageActions' | 'messageActions';
30
39
  export type VirtualizedMessageListProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Partial<Pick<MessageProps<StreamChatGenerics>, PropsDrilledToMessage>> & {
@@ -65,6 +74,8 @@ export type VirtualizedMessageListProps<StreamChatGenerics extends DefaultStream
65
74
  loadMore?: ChannelActionContextValue['loadMore'] | (() => Promise<void>);
66
75
  /** Function called when new messages are to be loaded, defaults to function stored in [ChannelActionContext](https://getstream.io/chat/docs/sdk/react/contexts/channel_action_context/) */
67
76
  loadMoreNewer?: ChannelActionContextValue['loadMore'] | (() => Promise<void>);
77
+ /** When enabled, the channel will be marked read when a user scrolls to the bottom. Ignored when scrolled to the bottom of a thread message list. */
78
+ markReadOnScrolledToBottom?: boolean;
68
79
  /** Custom UI component to display a message, defaults to and accepts same props as [MessageSimple](https://github.com/GetStream/stream-chat-react/blob/master/src/components/Message/MessageSimple.tsx) */
69
80
  Message?: React.ComponentType<MessageUIComponentProps<StreamChatGenerics>>;
70
81
  /** The limit to use when paginating messages */
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualizedMessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/VirtualizedMessageList.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VirtualizedMessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/VirtualizedMessageList.tsx"],"names":[],"mappings":"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"}
@@ -3,15 +3,15 @@ import React, { useCallback, useEffect, useMemo, useRef } from 'react';
3
3
  import { Virtuoso, } from 'react-virtuoso';
4
4
  import { GiphyPreviewMessage as DefaultGiphyPreviewMessage } from './GiphyPreviewMessage';
5
5
  import { useLastReadData } from './hooks';
6
- import { useGiphyPreview, useMessageSetKey, useNewMessageNotification, usePrependedMessagesCount, useScrollToBottomOnNewMessage, useShouldForceScrollToBottom, } from './hooks/VirtualizedMessageList';
6
+ import { useGiphyPreview, useMessageSetKey, useNewMessageNotification, usePrependedMessagesCount, useScrollToBottomOnNewMessage, useShouldForceScrollToBottom, useUnreadMessagesNotificationVirtualized, } from './hooks/VirtualizedMessageList';
7
+ import { useMarkRead } from './hooks/useMarkRead';
7
8
  import { MessageNotification as DefaultMessageNotification } from './MessageNotification';
8
9
  import { MessageListNotifications as DefaultMessageListNotifications } from './MessageListNotifications';
9
10
  import { MessageListMainPanel } from './MessageListMainPanel';
10
11
  import { getGroupStyles, getLastReceived, processMessages } from './utils';
11
12
  import { MessageSimple } from '../Message';
12
- import { DateSeparator as DefaultDateSeparator } from '../DateSeparator';
13
- import { EventComponent } from '../EventComponent';
14
- import { calculateFirstItemIndex, calculateItemIndex, EmptyPlaceholder, Footer, Header, Item, messageRenderer, } from './VirtualizedMessageListComponents';
13
+ import { UnreadMessagesNotification as DefaultUnreadMessagesNotification } from './UnreadMessagesNotification';
14
+ import { calculateFirstItemIndex, calculateItemIndex, EmptyPlaceholder, Footer, Header, Item, makeItemsRenderedHandler, messageRenderer, } from './VirtualizedMessageListComponents';
15
15
  import { useChannelActionContext, } from '../../context/ChannelActionContext';
16
16
  import { useChannelStateContext, } from '../../context/ChannelStateContext';
17
17
  import { useChatContext } from '../../context/ChatContext';
@@ -46,21 +46,27 @@ function calculateInitialTopMostItemIndex(messages, highlightedMessageId) {
46
46
  return messages.length - 1;
47
47
  }
48
48
  var VirtualizedMessageListWithContext = function (props) {
49
- var additionalMessageInputProps = props.additionalMessageInputProps, _a = props.additionalVirtuosoProps, additionalVirtuosoProps = _a === void 0 ? {} : _a, channel = props.channel, closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, customMessageActions = props.customMessageActions, customMessageRenderer = props.customMessageRenderer, defaultItemHeight = props.defaultItemHeight, _b = props.disableDateSeparator, disableDateSeparator = _b === void 0 ? true : _b, groupStyles = props.groupStyles, hasMore = props.hasMore, hasMoreNewer = props.hasMoreNewer, head = props.head, _c = props.hideDeletedMessages, hideDeletedMessages = _c === void 0 ? false : _c, _d = props.hideNewMessageSeparator, hideNewMessageSeparator = _d === void 0 ? false : _d, highlightedMessageId = props.highlightedMessageId, jumpToLatestMessage = props.jumpToLatestMessage, loadingMore = props.loadingMore, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, MessageUIComponentFromProps = props.Message, messageActions = props.messageActions, _e = props.messageLimit, messageLimit = _e === void 0 ? 100 : _e, messages = props.messages, notifications = props.notifications,
49
+ var _a, _b;
50
+ var additionalMessageInputProps = props.additionalMessageInputProps, _c = props.additionalVirtuosoProps, additionalVirtuosoProps = _c === void 0 ? {} : _c, channel = props.channel, closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, customMessageActions = props.customMessageActions, customMessageRenderer = props.customMessageRenderer, defaultItemHeight = props.defaultItemHeight, _d = props.disableDateSeparator, disableDateSeparator = _d === void 0 ? true : _d, groupStyles = props.groupStyles, hasMoreNewer = props.hasMoreNewer, head = props.head, _e = props.hideDeletedMessages, hideDeletedMessages = _e === void 0 ? false : _e, _f = props.hideNewMessageSeparator, hideNewMessageSeparator = _f === void 0 ? false : _f, highlightedMessageId = props.highlightedMessageId, jumpToLatestMessage = props.jumpToLatestMessage, loadingMore = props.loadingMore, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, markReadOnScrolledToBottom = props.markReadOnScrolledToBottom, MessageUIComponentFromProps = props.Message, messageActions = props.messageActions, _g = props.messageLimit, messageLimit = _g === void 0 ? 100 : _g, messages = props.messages, notifications = props.notifications,
50
51
  // TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
51
- _f = props.overscan,
52
+ _h = props.overscan,
52
53
  // TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
53
- overscan = _f === void 0 ? 0 : _f, read = props.read, _g = props.returnAllReadData, returnAllReadData = _g === void 0 ? false : _g, scrollSeekPlaceHolder = props.scrollSeekPlaceHolder, _h = props.scrollToLatestMessageOnFocus, scrollToLatestMessageOnFocus = _h === void 0 ? false : _h, _j = props.separateGiphyPreview, separateGiphyPreview = _j === void 0 ? false : _j, _k = props.shouldGroupByUser, shouldGroupByUser = _k === void 0 ? false : _k, _l = props.stickToBottomScrollBehavior, stickToBottomScrollBehavior = _l === void 0 ? 'smooth' : _l, suppressAutoscroll = props.suppressAutoscroll, threadList = props.threadList;
54
+ overscan = _h === void 0 ? 0 : _h, read = props.read, _j = props.returnAllReadData, returnAllReadData = _j === void 0 ? false : _j, scrollSeekPlaceHolder = props.scrollSeekPlaceHolder, _k = props.scrollToLatestMessageOnFocus, scrollToLatestMessageOnFocus = _k === void 0 ? false : _k, _l = props.separateGiphyPreview, separateGiphyPreview = _l === void 0 ? false : _l, _m = props.shouldGroupByUser, shouldGroupByUser = _m === void 0 ? false : _m, _o = props.stickToBottomScrollBehavior, stickToBottomScrollBehavior = _o === void 0 ? 'smooth' : _o, suppressAutoscroll = props.suppressAutoscroll, threadList = props.threadList;
54
55
  var virtuosoComponentsFromProps = additionalVirtuosoProps.components, overridingVirtuosoProps = __rest(additionalVirtuosoProps, ["components"]);
55
56
  // Stops errors generated from react-virtuoso to bubble up
56
57
  // to Sentry or other tracking tools.
57
58
  useCaptureResizeObserverExceededError();
58
- var _m = useComponentContext('VirtualizedMessageList'), _o = _m.DateSeparator, DateSeparator = _o === void 0 ? DefaultDateSeparator : _o, _p = _m.GiphyPreviewMessage, GiphyPreviewMessage = _p === void 0 ? DefaultGiphyPreviewMessage : _p, _q = _m.MessageListNotifications, MessageListNotifications = _q === void 0 ? DefaultMessageListNotifications : _q, _r = _m.MessageNotification, MessageNotification = _r === void 0 ? DefaultMessageNotification : _r, _s = _m.MessageSystem, MessageSystem = _s === void 0 ? EventComponent : _s, _t = _m.VirtualMessage, MessageUIComponentFromContext = _t === void 0 ? MessageSimple : _t;
59
+ var _p = useComponentContext('VirtualizedMessageList'), DateSeparator = _p.DateSeparator, _q = _p.GiphyPreviewMessage, GiphyPreviewMessage = _q === void 0 ? DefaultGiphyPreviewMessage : _q, _r = _p.MessageListNotifications, MessageListNotifications = _r === void 0 ? DefaultMessageListNotifications : _r, _s = _p.MessageNotification, MessageNotification = _s === void 0 ? DefaultMessageNotification : _s, MessageSystem = _p.MessageSystem, _t = _p.UnreadMessagesNotification, UnreadMessagesNotification = _t === void 0 ? DefaultUnreadMessagesNotification : _t, UnreadMessagesSeparator = _p.UnreadMessagesSeparator, _u = _p.VirtualMessage, MessageUIComponentFromContext = _u === void 0 ? MessageSimple : _u;
59
60
  var MessageUIComponent = MessageUIComponentFromProps || MessageUIComponentFromContext;
60
- var _u = useChatContext('VirtualizedMessageList'), client = _u.client, customClasses = _u.customClasses;
61
+ var _v = useChatContext('VirtualizedMessageList'), client = _v.client, customClasses = _v.customClasses;
61
62
  var virtuoso = useRef(null);
62
63
  var lastRead = useMemo(function () { var _a; return (_a = channel.lastRead) === null || _a === void 0 ? void 0 : _a.call(channel); }, [channel]);
63
- var _v = useGiphyPreview(separateGiphyPreview), giphyPreviewMessage = _v.giphyPreviewMessage, setGiphyPreviewMessage = _v.setGiphyPreviewMessage;
64
+ var currentUserChannelReadState = client.user && (read === null || read === void 0 ? void 0 : read[client.user.id]);
65
+ var _w = useUnreadMessagesNotificationVirtualized({
66
+ lastRead: currentUserChannelReadState === null || currentUserChannelReadState === void 0 ? void 0 : currentUserChannelReadState.last_read,
67
+ unreadCount: (_a = currentUserChannelReadState === null || currentUserChannelReadState === void 0 ? void 0 : currentUserChannelReadState.unread_messages) !== null && _a !== void 0 ? _a : 0,
68
+ }), showUnreadMessagesNotification = _w.show, toggleShowUnreadMessagesNotification = _w.toggleShowUnreadMessagesNotification;
69
+ var _x = useGiphyPreview(separateGiphyPreview), giphyPreviewMessage = _x.giphyPreviewMessage, setGiphyPreviewMessage = _x.setGiphyPreviewMessage;
64
70
  var processedMessages = useMemo(function () {
65
71
  if (typeof messages === 'undefined') {
66
72
  return [];
@@ -80,6 +86,7 @@ var VirtualizedMessageListWithContext = function (props) {
80
86
  setGiphyPreviewMessage: setGiphyPreviewMessage,
81
87
  userId: client.userID || '',
82
88
  });
89
+ // eslint-disable-next-line react-hooks/exhaustive-deps
83
90
  }, [
84
91
  disableDateSeparator,
85
92
  hideDeletedMessages,
@@ -109,8 +116,15 @@ var VirtualizedMessageListWithContext = function (props) {
109
116
  }, {});
110
117
  },
111
118
  // processedMessages were incorrectly rebuilt with a new object identity at some point, hence the .length usage
119
+ // eslint-disable-next-line react-hooks/exhaustive-deps
112
120
  [processedMessages.length, shouldGroupByUser, groupStylesFn]);
113
- var _w = useNewMessageNotification(processedMessages, client.userID, hasMoreNewer), atBottom = _w.atBottom, isMessageListScrolledToBottom = _w.isMessageListScrolledToBottom, newMessagesNotification = _w.newMessagesNotification, setIsMessageListScrolledToBottom = _w.setIsMessageListScrolledToBottom, setNewMessagesNotification = _w.setNewMessagesNotification;
121
+ var _y = useNewMessageNotification(processedMessages, client.userID, hasMoreNewer), atBottom = _y.atBottom, isMessageListScrolledToBottom = _y.isMessageListScrolledToBottom, newMessagesNotification = _y.newMessagesNotification, setIsMessageListScrolledToBottom = _y.setIsMessageListScrolledToBottom, setNewMessagesNotification = _y.setNewMessagesNotification;
122
+ useMarkRead({
123
+ isMessageListScrolledToBottom: isMessageListScrolledToBottom,
124
+ markReadOnScrolledToBottom: markReadOnScrolledToBottom,
125
+ messageListIsThread: !!threadList,
126
+ unreadCount: (_b = currentUserChannelReadState === null || currentUserChannelReadState === void 0 ? void 0 : currentUserChannelReadState.unread_messages) !== null && _b !== void 0 ? _b : 0,
127
+ });
114
128
  var scrollToBottom = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
115
129
  return __generator(this, function (_a) {
116
130
  switch (_a.label) {
@@ -141,6 +155,7 @@ var VirtualizedMessageListWithContext = function (props) {
141
155
  var numItemsPrepended = usePrependedMessagesCount(processedMessages, !disableDateSeparator);
142
156
  var messageSetKey = useMessageSetKey({ messages: messages }).messageSetKey;
143
157
  var shouldForceScrollToBottom = useShouldForceScrollToBottom(processedMessages, client.userID);
158
+ var handleItemsRendered = useMemo(function () { return makeItemsRenderedHandler([toggleShowUnreadMessagesNotification], processedMessages); }, [processedMessages, toggleShowUnreadMessagesNotification]);
144
159
  var followOutput = function (isAtBottom) {
145
160
  if (hasMoreNewer || suppressAutoscroll) {
146
161
  return false;
@@ -158,42 +173,46 @@ var VirtualizedMessageListWithContext = function (props) {
158
173
  var atBottomStateChange = function (isAtBottom) {
159
174
  atBottom.current = isAtBottom;
160
175
  setIsMessageListScrolledToBottom(isAtBottom);
161
- if (isAtBottom && newMessagesNotification) {
162
- setNewMessagesNotification(false);
163
- }
164
- };
165
- var startReached = function () {
166
- if (hasMore && loadMore) {
167
- loadMore(messageLimit);
176
+ if (isAtBottom) {
177
+ loadMoreNewer === null || loadMoreNewer === void 0 ? void 0 : loadMoreNewer(messageLimit);
178
+ setNewMessagesNotification === null || setNewMessagesNotification === void 0 ? void 0 : setNewMessagesNotification(false);
168
179
  }
169
180
  };
170
- var endReached = function () {
171
- if (hasMoreNewer && loadMoreNewer) {
172
- loadMoreNewer(messageLimit);
173
- }
181
+ var atTopStateChange = function (isAtTop) {
182
+ if (isAtTop)
183
+ loadMore === null || loadMore === void 0 ? void 0 : loadMore(messageLimit);
174
184
  };
175
185
  useEffect(function () {
176
- var _a;
186
+ var scrollTimeout;
177
187
  if (highlightedMessageId) {
178
- var index = findMessageIndex(processedMessages, highlightedMessageId);
179
- if (index !== -1) {
180
- (_a = virtuoso.current) === null || _a === void 0 ? void 0 : _a.scrollToIndex({ align: 'center', index: index });
188
+ var index_1 = findMessageIndex(processedMessages, highlightedMessageId);
189
+ if (index_1 !== -1) {
190
+ scrollTimeout = setTimeout(function () {
191
+ var _a;
192
+ (_a = virtuoso.current) === null || _a === void 0 ? void 0 : _a.scrollToIndex({ align: 'center', index: index_1 });
193
+ }, 0);
181
194
  }
182
195
  }
183
- }, [highlightedMessageId]);
196
+ return function () {
197
+ clearTimeout(scrollTimeout);
198
+ };
199
+ }, [highlightedMessageId, processedMessages]);
184
200
  if (!processedMessages)
185
201
  return null;
186
202
  return (React.createElement(React.Fragment, null,
187
203
  React.createElement(MessageListMainPanel, null,
204
+ !threadList && showUnreadMessagesNotification && (React.createElement(UnreadMessagesNotification, { unreadCount: currentUserChannelReadState === null || currentUserChannelReadState === void 0 ? void 0 : currentUserChannelReadState.unread_messages })),
188
205
  React.createElement("div", { className: (customClasses === null || customClasses === void 0 ? void 0 : customClasses.virtualizedMessageList) || 'str-chat__virtual-list' },
189
- React.createElement(Virtuoso, __assign({ atBottomStateChange: atBottomStateChange, atBottomThreshold: 200, className: 'str-chat__message-list-scroll', components: __assign({ EmptyPlaceholder: EmptyPlaceholder, Footer: Footer, Header: Header, Item: Item }, virtuosoComponentsFromProps), computeItemKey: computeItemKey, context: {
206
+ React.createElement(Virtuoso, __assign({ atBottomStateChange: atBottomStateChange, atBottomThreshold: 100, atTopStateChange: atTopStateChange, atTopThreshold: 100, className: 'str-chat__message-list-scroll', components: __assign({ EmptyPlaceholder: EmptyPlaceholder, Footer: Footer, Header: Header, Item: Item }, virtuosoComponentsFromProps), computeItemKey: computeItemKey, context: {
190
207
  additionalMessageInputProps: additionalMessageInputProps,
191
208
  closeReactionSelectorOnClick: closeReactionSelectorOnClick,
192
209
  customClasses: customClasses,
193
210
  customMessageActions: customMessageActions,
194
211
  customMessageRenderer: customMessageRenderer,
195
212
  DateSeparator: DateSeparator,
213
+ firstUnreadMessageId: currentUserChannelReadState === null || currentUserChannelReadState === void 0 ? void 0 : currentUserChannelReadState.first_unread_message_id,
196
214
  head: head,
215
+ lastReadMessageId: currentUserChannelReadState === null || currentUserChannelReadState === void 0 ? void 0 : currentUserChannelReadState.last_read_message_id,
197
216
  lastReceivedMessageId: lastReceivedMessageId,
198
217
  loadingMore: loadingMore,
199
218
  Message: MessageUIComponent,
@@ -205,9 +224,11 @@ var VirtualizedMessageListWithContext = function (props) {
205
224
  processedMessages: processedMessages,
206
225
  shouldGroupByUser: shouldGroupByUser,
207
226
  threadList: threadList,
227
+ unreadMessageCount: currentUserChannelReadState === null || currentUserChannelReadState === void 0 ? void 0 : currentUserChannelReadState.unread_messages,
228
+ UnreadMessagesSeparator: UnreadMessagesSeparator,
208
229
  virtuosoRef: virtuoso,
209
- }, endReached: endReached, firstItemIndex: calculateFirstItemIndex(numItemsPrepended), followOutput: followOutput, increaseViewportBy: { bottom: 200, top: 0 }, initialTopMostItemIndex: calculateInitialTopMostItemIndex(processedMessages, highlightedMessageId), itemContent: messageRenderer, itemSize: fractionalItemSize, key: messageSetKey, overscan: overscan, ref: virtuoso, startReached: startReached, style: { overflowX: 'hidden' }, totalCount: processedMessages.length }, overridingVirtuosoProps, (scrollSeekPlaceHolder ? { scrollSeek: scrollSeekPlaceHolder } : {}), (defaultItemHeight ? { defaultItemHeight: defaultItemHeight } : {}))))),
210
- React.createElement(MessageListNotifications, { hasNewMessages: newMessagesNotification, isMessageListScrolledToBottom: isMessageListScrolledToBottom, isNotAtLatestMessageSet: hasMoreNewer, MessageNotification: MessageNotification, notifications: notifications, scrollToBottom: scrollToBottom, threadList: threadList }),
230
+ }, firstItemIndex: calculateFirstItemIndex(numItemsPrepended), followOutput: followOutput, increaseViewportBy: { bottom: 200, top: 0 }, initialTopMostItemIndex: calculateInitialTopMostItemIndex(processedMessages, highlightedMessageId), itemContent: messageRenderer, itemSize: fractionalItemSize, itemsRendered: handleItemsRendered, key: messageSetKey, overscan: overscan, ref: virtuoso, style: { overflowX: 'hidden' }, totalCount: processedMessages.length }, overridingVirtuosoProps, (scrollSeekPlaceHolder ? { scrollSeek: scrollSeekPlaceHolder } : {}), (defaultItemHeight ? { defaultItemHeight: defaultItemHeight } : {}))))),
231
+ React.createElement(MessageListNotifications, { hasNewMessages: newMessagesNotification, isMessageListScrolledToBottom: isMessageListScrolledToBottom, isNotAtLatestMessageSet: hasMoreNewer, MessageNotification: MessageNotification, notifications: notifications, scrollToBottom: scrollToBottom, threadList: threadList, unreadCount: threadList ? undefined : currentUserChannelReadState === null || currentUserChannelReadState === void 0 ? void 0 : currentUserChannelReadState.unread_messages }),
211
232
  giphyPreviewMessage && React.createElement(GiphyPreviewMessage, { message: giphyPreviewMessage })));
212
233
  };
213
234
  /**
@@ -1,9 +1,11 @@
1
- import { DefaultStreamChatGenerics, UnknownType } from '../../types/types';
2
1
  import React from 'react';
3
- import { ItemProps } from 'react-virtuoso';
4
- import { VirtuosoContext } from './VirtualizedMessageList';
2
+ import { ItemProps, ListItem } from 'react-virtuoso';
3
+ import { StreamMessage } from '../../context';
4
+ import type { VirtuosoContext } from './VirtualizedMessageList';
5
+ import type { DefaultStreamChatGenerics, UnknownType } from '../../types/types';
5
6
  export declare function calculateItemIndex(virtuosoIndex: number, numItemsPrepended: number): number;
6
7
  export declare function calculateFirstItemIndex(numItemsPrepended: number): number;
8
+ export declare const makeItemsRenderedHandler: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(renderedItemsActions: ((msg: StreamMessage<StreamChatGenerics>[]) => void)[], processedMessages: StreamMessage<StreamChatGenerics>[]) => import("lodash").DebouncedFunc<(items: ListItem<UnknownType>[]) => void>;
7
9
  type CommonVirtuosoComponentProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
8
10
  context?: VirtuosoContext<StreamChatGenerics>;
9
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualizedMessageListComponents.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/VirtualizedMessageListComponents.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAI3D,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,UAElF;AAED,wBAAgB,uBAAuB,CAAC,iBAAiB,EAAE,MAAM,UAEhE;AAED,KAAK,4BAA4B,CAC/B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,OAAO,CAAC,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;CAC/C,CAAC;AAGF,eAAO,MAAM,IAAI;;;;;;;oEAyBhB,CAAC;AACF,eAAO,MAAM,MAAM,0KAgBlB,CAAC;AACF,eAAO,MAAM,gBAAgB,mKAe5B,CAAC;AACF,eAAO,MAAM,MAAM,4GAKlB,CAAC;AACF,eAAO,MAAM,eAAe,oGAGX,MAAM,SACd,WAAW,6EAgEnB,CAAC"}
1
+ {"version":3,"file":"VirtualizedMessageListComponents.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/VirtualizedMessageListComponents.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAMrD,OAAO,EAAU,aAAa,EAAuB,MAAM,eAAe,CAAC;AAI3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhF,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,UAElF;AAED,wBAAgB,uBAAuB,CAAC,iBAAiB,EAAE,MAAM,UAEhE;AAED,eAAO,MAAM,wBAAwB,0JAGuC,IAAI,uGAG7D,SAAS,WAAW,CAAC,EAAE,UAUjC,CAAC;AAEV,KAAK,4BAA4B,CAC/B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,OAAO,CAAC,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;CAC/C,CAAC;AAGF,eAAO,MAAM,IAAI;;;;;;;oEAyBhB,CAAC;AACF,eAAO,MAAM,MAAM,0KAgBlB,CAAC;AACF,eAAO,MAAM,gBAAgB,mKAe5B,CAAC;AACF,eAAO,MAAM,MAAM,4GAKlB,CAAC;AACF,eAAO,MAAM,eAAe,oGAGX,MAAM,SACd,WAAW,6EA+EnB,CAAC"}
@@ -1,11 +1,12 @@
1
1
  import { __assign, __rest } from "tslib";
2
- import { EmptyStateIndicator as DefaultEmptyStateIndicator } from '../EmptyStateIndicator';
3
- import { isDate, useComponentContext } from '../../context';
2
+ import clsx from 'clsx';
3
+ import throttle from 'lodash.throttle';
4
4
  import React from 'react';
5
+ import { EmptyStateIndicator as DefaultEmptyStateIndicator } from '../EmptyStateIndicator';
5
6
  import { LoadingIndicator as DefaultLoadingIndicator } from '../Loading';
6
- import { CUSTOM_MESSAGE_TYPE } from '../../constants/messageTypes';
7
7
  import { Message } from '../Message';
8
- import clsx from 'clsx';
8
+ import { isDate, useComponentContext } from '../../context';
9
+ import { CUSTOM_MESSAGE_TYPE } from '../../constants/messageTypes';
9
10
  var PREPEND_OFFSET = Math.pow(10, 7);
10
11
  export function calculateItemIndex(virtuosoIndex, numItemsPrepended) {
11
12
  return virtuosoIndex + numItemsPrepended - PREPEND_OFFSET;
@@ -13,6 +14,20 @@ export function calculateItemIndex(virtuosoIndex, numItemsPrepended) {
13
14
  export function calculateFirstItemIndex(numItemsPrepended) {
14
15
  return PREPEND_OFFSET - numItemsPrepended;
15
16
  }
17
+ export var makeItemsRenderedHandler = function (renderedItemsActions, processedMessages) {
18
+ return throttle(function (items) {
19
+ var renderedMessages = items
20
+ .map(function (item) {
21
+ if (!item.originalIndex)
22
+ return undefined;
23
+ return processedMessages[calculateItemIndex(item.originalIndex, PREPEND_OFFSET)];
24
+ })
25
+ .filter(function (msg) { return !!msg; });
26
+ renderedItemsActions.forEach(function (action) {
27
+ return action(renderedMessages);
28
+ });
29
+ }, 200);
30
+ };
16
31
  // using 'display: inline-block'
17
32
  // traps CSS margins of the item elements, preventing incorrect item measurements
18
33
  export var Item = function (_a) {
@@ -47,7 +62,7 @@ export var Footer = function () {
47
62
  };
48
63
  export var messageRenderer = function (virtuosoIndex, _data, virtuosoContext) {
49
64
  var _a, _b, _c, _d, _e, _f, _g, _h, _j;
50
- var additionalMessageInputProps = virtuosoContext.additionalMessageInputProps, closeReactionSelectorOnClick = virtuosoContext.closeReactionSelectorOnClick, customMessageActions = virtuosoContext.customMessageActions, customMessageRenderer = virtuosoContext.customMessageRenderer, DateSeparator = virtuosoContext.DateSeparator, lastReceivedMessageId = virtuosoContext.lastReceivedMessageId, MessageUIComponent = virtuosoContext.Message, messageActions = virtuosoContext.messageActions, MessageSystem = virtuosoContext.MessageSystem, numItemsPrepended = virtuosoContext.numItemsPrepended, ownMessagesReadByOthers = virtuosoContext.ownMessagesReadByOthers, messageList = virtuosoContext.processedMessages, shouldGroupByUser = virtuosoContext.shouldGroupByUser, virtuosoRef = virtuosoContext.virtuosoRef;
65
+ var additionalMessageInputProps = virtuosoContext.additionalMessageInputProps, closeReactionSelectorOnClick = virtuosoContext.closeReactionSelectorOnClick, customMessageActions = virtuosoContext.customMessageActions, customMessageRenderer = virtuosoContext.customMessageRenderer, DateSeparator = virtuosoContext.DateSeparator, firstUnreadMessageId = virtuosoContext.firstUnreadMessageId, lastReadMessageId = virtuosoContext.lastReadMessageId, lastReceivedMessageId = virtuosoContext.lastReceivedMessageId, MessageUIComponent = virtuosoContext.Message, messageActions = virtuosoContext.messageActions, MessageSystem = virtuosoContext.MessageSystem, numItemsPrepended = virtuosoContext.numItemsPrepended, ownMessagesReadByOthers = virtuosoContext.ownMessagesReadByOthers, messageList = virtuosoContext.processedMessages, shouldGroupByUser = virtuosoContext.shouldGroupByUser, _k = virtuosoContext.unreadMessageCount, unreadMessageCount = _k === void 0 ? 0 : _k, UnreadMessagesSeparator = virtuosoContext.UnreadMessagesSeparator, virtuosoRef = virtuosoContext.virtuosoRef;
51
66
  var streamMessageIndex = calculateItemIndex(virtuosoIndex, numItemsPrepended);
52
67
  if (customMessageRenderer) {
53
68
  return customMessageRenderer(messageList, streamMessageIndex);
@@ -66,5 +81,11 @@ export var messageRenderer = function (virtuosoIndex, _data, virtuosoContext) {
66
81
  ((_a = message.user) === null || _a === void 0 ? void 0 : _a.id) === ((_b = messageList[streamMessageIndex - 1].user) === null || _b === void 0 ? void 0 : _b.id);
67
82
  var firstOfGroup = shouldGroupByUser && ((_c = message.user) === null || _c === void 0 ? void 0 : _c.id) !== ((_e = (_d = messageList[streamMessageIndex - 1]) === null || _d === void 0 ? void 0 : _d.user) === null || _e === void 0 ? void 0 : _e.id);
68
83
  var endOfGroup = shouldGroupByUser && ((_f = message.user) === null || _f === void 0 ? void 0 : _f.id) !== ((_h = (_g = messageList[streamMessageIndex + 1]) === null || _g === void 0 ? void 0 : _g.user) === null || _h === void 0 ? void 0 : _h.id);
69
- return (React.createElement(Message, { additionalMessageInputProps: additionalMessageInputProps, autoscrollToBottom: (_j = virtuosoRef.current) === null || _j === void 0 ? void 0 : _j.autoscrollToBottom, closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: customMessageActions, endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, groupedByUser: groupedByUser, lastReceivedId: lastReceivedMessageId, message: message, Message: MessageUIComponent, messageActions: messageActions, readBy: ownMessagesReadByOthers[message.id] || [] }));
84
+ var isNewestMessage = lastReadMessageId === lastReceivedMessageId;
85
+ var isLastReadMessage = message.id === lastReadMessageId;
86
+ var showUnreadSeparator = isLastReadMessage && !isNewestMessage && (firstUnreadMessageId || unreadMessageCount > 0); // unread count can be 0 if the user marks unread only own messages
87
+ return (React.createElement(React.Fragment, null,
88
+ React.createElement(Message, { additionalMessageInputProps: additionalMessageInputProps, autoscrollToBottom: (_j = virtuosoRef.current) === null || _j === void 0 ? void 0 : _j.autoscrollToBottom, closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: customMessageActions, endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, groupedByUser: groupedByUser, lastReceivedId: lastReceivedMessageId, message: message, Message: MessageUIComponent, messageActions: messageActions, readBy: ownMessagesReadByOthers[message.id] || [] }),
89
+ showUnreadSeparator && (React.createElement("div", { className: 'str-chat__unread-messages-separator-wrapper' },
90
+ React.createElement(UnreadMessagesSeparator, { unreadCount: unreadMessageCount })))));
70
91
  };
@@ -2,4 +2,5 @@ export * from './useEnrichedMessages';
2
2
  export * from './useMessageListElements';
3
3
  export * from './useMessageListScrollManager';
4
4
  export * from './useScrollLocationLogic';
5
+ export * from './useUnreadMessagesNotification';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/MessageList/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/MessageList/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC"}
@@ -2,3 +2,4 @@ export * from './useEnrichedMessages';
2
2
  export * from './useMessageListElements';
3
3
  export * from './useMessageListScrollManager';
4
4
  export * from './useScrollLocationLogic';
5
+ export * from './useUnreadMessagesNotification';
@@ -1 +1 @@
1
- {"version":3,"file":"useEnrichedMessages.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/MessageList/useEnrichedMessages.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,UAAU,EAAgC,MAAM,aAAa,CAAC;AAKvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,eAAO,MAAM,mBAAmB;;0BAIR,OAAO;yBACR,OAAO;6BACH,OAAO;;mBAEjB,OAAO;mLAKL,OAAO,KACnB,UAAU;;;;;CAsDhB,CAAC"}
1
+ {"version":3,"file":"useEnrichedMessages.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/MessageList/useEnrichedMessages.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,UAAU,EAAgC,MAAM,aAAa,CAAC;AAKvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,eAAO,MAAM,mBAAmB;;0BAIR,OAAO;yBACR,OAAO;6BACH,OAAO;;mBAEjB,OAAO;mLAKL,OAAO,KACnB,UAAU;;;;;CAuDhB,CAAC"}
@@ -29,6 +29,8 @@ export var useEnrichedMessages = function (args) {
29
29
  acc[message.id] = style;
30
30
  return acc;
31
31
  }, {});
32
- }, [messagesWithDates, noGroupByUser]);
32
+ },
33
+ // eslint-disable-next-line react-hooks/exhaustive-deps
34
+ [messagesWithDates, noGroupByUser]);
33
35
  return { messageGroupStyles: messageGroupStyles, messages: messagesWithDates };
34
36
  };
@@ -1,20 +1,17 @@
1
1
  import React from 'react';
2
2
  import { GroupStyle } from '../../utils';
3
- import type { UserResponse } from 'stream-chat';
4
- import type { MessageProps } from '../../../Message/types';
3
+ import type { ChannelState as StreamChannelState } from 'stream-chat';
5
4
  import type { StreamMessage } from '../../../../context/ChannelStateContext';
6
5
  import type { DefaultStreamChatGenerics } from '../../../../types/types';
7
- type MessagePropsToOmit = 'channel' | 'groupStyles' | 'initialMessage' | 'lastReceivedId' | 'message' | 'readBy' | 'threadList';
6
+ import { MessageRenderer, SharedMessageProps } from '../../renderMessages';
8
7
  type UseMessageListElementsProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
9
8
  enrichedMessages: StreamMessage<StreamChatGenerics>[];
10
- internalMessageProps: Omit<MessageProps<StreamChatGenerics>, MessagePropsToOmit>;
9
+ internalMessageProps: SharedMessageProps<StreamChatGenerics>;
11
10
  messageGroupStyles: Record<string, GroupStyle>;
11
+ renderMessages: MessageRenderer<StreamChatGenerics>;
12
12
  returnAllReadData: boolean;
13
13
  threadList: boolean;
14
- read?: Record<string, {
15
- last_read: Date;
16
- user: UserResponse<StreamChatGenerics>;
17
- }>;
14
+ read?: StreamChannelState<StreamChatGenerics>['read'];
18
15
  };
19
16
  export declare const useMessageListElements: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(props: UseMessageListElementsProps<StreamChatGenerics>) => React.ReactNode[];
20
17
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"useMessageListElements.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/MessageList/useMessageListElements.tsx"],"names":[],"mappings":"AACA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAGvC,OAAO,EAAmB,UAAU,EAAE,MAAM,aAAa,CAAC;AAW1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,KAAK,kBAAkB,GACnB,SAAS,GACT,aAAa,GACb,gBAAgB,GAChB,gBAAgB,GAChB,SAAS,GACT,QAAQ,GACR,YAAY,CAAC;AAEjB,KAAK,2BAA2B,CAC9B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,gBAAgB,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IACtD,oBAAoB,EAAE,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACjF,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/C,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAA;KAAE,CAAC,CAAC;CACpF,CAAC;AAEF,eAAO,MAAM,sBAAsB,iKAkGlC,CAAC"}
1
+ {"version":3,"file":"useMessageListElements.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/MessageList/useMessageListElements.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAGvC,OAAO,EAAmB,UAAU,EAAE,MAAM,aAAa,CAAC;AAK1D,OAAO,KAAK,EAAE,YAAY,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE3E,KAAK,2BAA2B,CAC9B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,gBAAgB,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IACtD,oBAAoB,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;IAC7D,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/C,cAAc,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACpD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;CACvD,CAAC;AAEF,eAAO,MAAM,sBAAsB,iKA0DlC,CAAC"}
@@ -1,19 +1,13 @@
1
1
  import { __assign } from "tslib";
2
- /* eslint-disable no-continue */
3
- import React, { useMemo } from 'react';
2
+ import { useMemo } from 'react';
4
3
  import { useLastReadData } from '../useLastReadData';
5
4
  import { getLastReceived } from '../../utils';
6
- import { CUSTOM_MESSAGE_TYPE } from '../../../../constants/messageTypes';
7
- import { DateSeparator as DefaultDateSeparator } from '../../../DateSeparator/DateSeparator';
8
- import { EventComponent } from '../../../EventComponent/EventComponent';
9
- import { Message } from '../../../Message';
10
5
  import { useChatContext } from '../../../../context/ChatContext';
11
6
  import { useComponentContext } from '../../../../context/ComponentContext';
12
- import { isDate } from '../../../../context/TranslationContext';
13
7
  export var useMessageListElements = function (props) {
14
- var enrichedMessages = props.enrichedMessages, internalMessageProps = props.internalMessageProps, messageGroupStyles = props.messageGroupStyles, read = props.read, returnAllReadData = props.returnAllReadData, threadList = props.threadList;
8
+ var enrichedMessages = props.enrichedMessages, internalMessageProps = props.internalMessageProps, messageGroupStyles = props.messageGroupStyles, read = props.read, renderMessages = props.renderMessages, returnAllReadData = props.returnAllReadData, threadList = props.threadList;
15
9
  var _a = useChatContext('useMessageListElements'), client = _a.client, customClasses = _a.customClasses;
16
- var _b = useComponentContext('useMessageListElements'), _c = _b.DateSeparator, DateSeparator = _c === void 0 ? DefaultDateSeparator : _c, HeaderComponent = _b.HeaderComponent, _d = _b.MessageSystem, MessageSystem = _d === void 0 ? EventComponent : _d;
10
+ var components = useComponentContext('useMessageListElements');
17
11
  // get the readData, but only for messages submitted by the user themselves
18
12
  var readData = useLastReadData({
19
13
  messages: enrichedMessages,
@@ -21,34 +15,31 @@ export var useMessageListElements = function (props) {
21
15
  returnAllReadData: returnAllReadData,
22
16
  userID: client.userID,
23
17
  });
24
- var lastReceivedId = useMemo(function () { return getLastReceived(enrichedMessages); }, [enrichedMessages]);
18
+ var lastReceivedMessageId = useMemo(function () { return getLastReceived(enrichedMessages); }, [
19
+ enrichedMessages,
20
+ ]);
21
+ var ownReadState = client.user && (read === null || read === void 0 ? void 0 : read[client.user.id]) ? read[client.user.id] : undefined;
25
22
  var elements = useMemo(function () {
26
- return enrichedMessages.map(function (message) {
27
- if (message.customType === CUSTOM_MESSAGE_TYPE.date &&
28
- message.date &&
29
- isDate(message.date)) {
30
- return (React.createElement("li", { key: "".concat(message.date.toISOString(), "-i") },
31
- React.createElement(DateSeparator, { date: message.date, formatDate: internalMessageProps.formatDate, unread: message.unread })));
32
- }
33
- if (message.customType === CUSTOM_MESSAGE_TYPE.intro && HeaderComponent) {
34
- return (React.createElement("li", { key: 'intro' },
35
- React.createElement(HeaderComponent, null)));
36
- }
37
- if (message.type === 'system') {
38
- return (React.createElement("li", { key: message.id || message.created_at },
39
- React.createElement(MessageSystem, { message: message })));
40
- }
41
- var groupStyles = messageGroupStyles[message.id] || '';
42
- var messageClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.message) || "str-chat__li str-chat__li--".concat(groupStyles);
43
- return (React.createElement("li", { className: messageClass, "data-message-id": message.id, "data-testid": messageClass, key: message.id || message.created_at },
44
- React.createElement(Message, __assign({ groupStyles: [groupStyles], lastReceivedId: lastReceivedId, message: message, readBy: readData[message.id] || [], threadList: threadList }, internalMessageProps))));
23
+ return renderMessages({
24
+ components: components,
25
+ customClasses: customClasses,
26
+ lastReceivedMessageId: lastReceivedMessageId,
27
+ messageGroupStyles: messageGroupStyles,
28
+ messages: enrichedMessages,
29
+ ownReadState: ownReadState,
30
+ readData: readData,
31
+ sharedMessageProps: __assign(__assign({}, internalMessageProps), { threadList: threadList }),
45
32
  });
46
- }, [
33
+ },
34
+ // eslint-disable-next-line react-hooks/exhaustive-deps
35
+ [
47
36
  enrichedMessages,
48
37
  internalMessageProps,
49
- lastReceivedId,
38
+ lastReceivedMessageId,
50
39
  messageGroupStyles,
40
+ ownReadState,
51
41
  readData,
42
+ renderMessages,
52
43
  threadList,
53
44
  ]);
54
45
  return elements;
@@ -1 +1 @@
1
- {"version":3,"file":"useMessageListScrollManager.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/MessageList/useMessageListScrollManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,iCAAiC,CAC3C,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,uBAAuB,EAAE,MAAM,CAAC;IAChC,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC9C,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;IACjD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B,CAAC;AAGF,wBAAgB,2BAA2B,CACzC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,MAAM,EAAE,iCAAiC,CAAC,kBAAkB,CAAC,oBAmErC,MAAM,UAG/B"}
1
+ {"version":3,"file":"useMessageListScrollManager.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/MessageList/useMessageListScrollManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,iCAAiC,CAC3C,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,uBAAuB,EAAE,MAAM,CAAC;IAChC,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC9C,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;IACjD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B,CAAC;AAGF,wBAAgB,2BAA2B,CACzC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,MAAM,EAAE,iCAAiC,CAAC,kBAAkB,CAAC,oBAoErC,MAAM,UAG/B"}
@@ -51,6 +51,7 @@ export function useMessageListScrollManager(params) {
51
51
  }
52
52
  messages.current = newMessages;
53
53
  measures.current = newMeasures;
54
+ // eslint-disable-next-line react-hooks/exhaustive-deps
54
55
  }, [measures, messages, params.messages]);
55
56
  return function (scrollTopValue) {
56
57
  scrollTop.current = scrollTopValue;