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.
- package/dist/browser.full-bundle.js +5791 -5143
- package/dist/browser.full-bundle.js.map +1 -1
- package/dist/browser.full-bundle.min.js +4 -4
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/components/Attachment/Attachment.d.ts.map +1 -1
- package/dist/components/Attachment/Attachment.js +1 -0
- package/dist/components/Attachment/AttachmentContainer.d.ts.map +1 -1
- package/dist/components/Attachment/AttachmentContainer.js +1 -0
- package/dist/components/Attachment/hooks/useAudioController.d.ts.map +1 -1
- package/dist/components/Attachment/hooks/useAudioController.js +1 -0
- package/dist/components/Channel/Channel.d.ts +9 -2
- package/dist/components/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +119 -45
- package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts.map +1 -1
- package/dist/components/Channel/hooks/useCreateChannelStateContext.js +3 -1
- package/dist/components/Channel/hooks/useCreateTypingContext.d.ts.map +1 -1
- package/dist/components/Channel/hooks/useCreateTypingContext.js +3 -1
- package/dist/components/ChannelList/ChannelList.d.ts.map +1 -1
- package/dist/components/ChannelList/ChannelList.js +3 -0
- package/dist/components/ChannelList/hooks/useChannelDeletedListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelDeletedListener.js +1 -0
- package/dist/components/ChannelList/hooks/useChannelHiddenListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelHiddenListener.js +1 -0
- package/dist/components/ChannelList/hooks/useChannelTruncatedListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelTruncatedListener.js +1 -0
- package/dist/components/ChannelList/hooks/useChannelUpdatedListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelUpdatedListener.js +1 -0
- package/dist/components/ChannelList/hooks/useChannelVisibleListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useChannelVisibleListener.js +1 -0
- package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.js +1 -0
- package/dist/components/ChannelList/hooks/useMessageNewListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useMessageNewListener.js +1 -0
- package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.js +1 -0
- package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.js +1 -0
- package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.js +1 -0
- package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/usePaginatedChannels.js +2 -0
- package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.js +1 -0
- package/dist/components/ChannelPreview/ChannelPreview.d.ts +16 -0
- package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
- package/dist/components/ChannelPreview/ChannelPreview.js +18 -2
- package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts +5 -0
- package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts.map +1 -1
- package/dist/components/ChannelPreview/ChannelPreviewMessenger.js +62 -2
- package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.d.ts.map +1 -1
- package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.js +1 -0
- package/dist/components/ChannelPreview/hooks/useIsChannelMuted.d.ts.map +1 -1
- package/dist/components/ChannelPreview/hooks/useIsChannelMuted.js +1 -0
- package/dist/components/ChannelSearch/SearchBar.d.ts.map +1 -1
- package/dist/components/ChannelSearch/SearchBar.js +2 -0
- package/dist/components/ChannelSearch/SearchResults.d.ts.map +1 -1
- package/dist/components/ChannelSearch/SearchResults.js +3 -1
- package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts.map +1 -1
- package/dist/components/ChannelSearch/hooks/useChannelSearch.js +7 -1
- package/dist/components/Chat/hooks/useChat.d.ts.map +1 -1
- package/dist/components/Chat/hooks/useChat.js +2 -0
- package/dist/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
- package/dist/components/Chat/hooks/useCreateChatContext.js +3 -1
- package/dist/components/Emojis/index.cjs.js +1 -1
- package/dist/components/Gallery/ModalGallery.d.ts.map +1 -1
- package/dist/components/Gallery/ModalGallery.js +3 -1
- package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts.map +1 -1
- package/dist/components/InfiniteScrollPaginator/InfiniteScroll.js +1 -0
- package/dist/components/LoadMore/LoadMoreButton.d.ts.map +1 -1
- package/dist/components/LoadMore/LoadMoreButton.js +1 -0
- package/dist/components/LoadMore/LoadMorePaginator.d.ts.map +1 -1
- package/dist/components/LoadMore/LoadMorePaginator.js +1 -0
- package/dist/components/Message/Message.d.ts.map +1 -1
- package/dist/components/Message/Message.js +40 -8
- package/dist/components/Message/MessageText.d.ts.map +1 -1
- package/dist/components/Message/MessageText.js +1 -0
- package/dist/components/Message/hooks/index.d.ts +2 -0
- package/dist/components/Message/hooks/index.d.ts.map +1 -1
- package/dist/components/Message/hooks/index.js +2 -0
- package/dist/components/Message/hooks/useMarkUnreadHandler.d.ts +10 -0
- package/dist/components/Message/hooks/useMarkUnreadHandler.d.ts.map +1 -0
- package/dist/components/Message/hooks/useMarkUnreadHandler.js +45 -0
- package/dist/components/Message/hooks/useReactionHandler.d.ts.map +1 -1
- package/dist/components/Message/hooks/useReactionHandler.js +6 -2
- package/dist/components/Message/hooks/useReactionsFetcher.d.ts +11 -0
- package/dist/components/Message/hooks/useReactionsFetcher.d.ts.map +1 -0
- package/dist/components/Message/hooks/useReactionsFetcher.js +58 -0
- package/dist/components/Message/hooks/useUserRole.d.ts +1 -0
- package/dist/components/Message/hooks/useUserRole.d.ts.map +1 -1
- package/dist/components/Message/hooks/useUserRole.js +2 -0
- package/dist/components/Message/types.d.ts +7 -1
- package/dist/components/Message/types.d.ts.map +1 -1
- package/dist/components/Message/utils.d.ts +4 -1
- package/dist/components/Message/utils.d.ts.map +1 -1
- package/dist/components/Message/utils.js +12 -3
- package/dist/components/MessageActions/MessageActions.d.ts +1 -1
- package/dist/components/MessageActions/MessageActions.d.ts.map +1 -1
- package/dist/components/MessageActions/MessageActions.js +14 -5
- package/dist/components/MessageActions/MessageActionsBox.d.ts +4 -3
- package/dist/components/MessageActions/MessageActionsBox.d.ts.map +1 -1
- package/dist/components/MessageActions/MessageActionsBox.js +8 -24
- package/dist/components/MessageActions/hooks/index.d.ts +2 -0
- package/dist/components/MessageActions/hooks/index.d.ts.map +1 -0
- package/dist/components/MessageActions/hooks/index.js +1 -0
- package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.d.ts +18 -0
- package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.d.ts.map +1 -0
- package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.js +32 -0
- package/dist/components/MessageInput/MessageInputFlat.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputFlat.js +1 -0
- package/dist/components/MessageInput/MessageInputSmall.d.ts.map +1 -1
- package/dist/components/MessageInput/MessageInputSmall.js +1 -0
- package/dist/components/MessageInput/hooks/useAttachments.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useAttachments.js +3 -1
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +3 -1
- package/dist/components/MessageInput/hooks/useFileUploads.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useFileUploads.js +3 -0
- package/dist/components/MessageInput/hooks/useImageUploads.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useImageUploads.js +4 -1
- package/dist/components/MessageInput/hooks/useLinkPreviews.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useLinkPreviews.js +5 -1
- package/dist/components/MessageInput/hooks/useMessageInputText.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useMessageInputText.js +6 -2
- package/dist/components/MessageInput/hooks/usePasteHandler.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/usePasteHandler.js +3 -1
- package/dist/components/MessageInput/hooks/useUserTrigger.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useUserTrigger.js +1 -0
- package/dist/components/MessageList/MessageList.d.ts +6 -1
- package/dist/components/MessageList/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList/MessageList.js +32 -13
- package/dist/components/MessageList/MessageListMainPanel.d.ts +1 -0
- package/dist/components/MessageList/MessageListMainPanel.d.ts.map +1 -1
- package/dist/components/MessageList/MessageListMainPanel.js +2 -1
- package/dist/components/MessageList/MessageListNotifications.d.ts +1 -0
- package/dist/components/MessageList/MessageListNotifications.d.ts.map +1 -1
- package/dist/components/MessageList/MessageListNotifications.js +2 -2
- package/dist/components/MessageList/MessageNotification.d.ts +2 -0
- package/dist/components/MessageList/MessageNotification.d.ts.map +1 -1
- package/dist/components/MessageList/ScrollToBottomButton.d.ts +1 -1
- package/dist/components/MessageList/ScrollToBottomButton.d.ts.map +1 -1
- package/dist/components/MessageList/ScrollToBottomButton.js +3 -43
- package/dist/components/MessageList/UnreadMessagesNotification.d.ts +6 -0
- package/dist/components/MessageList/UnreadMessagesNotification.d.ts.map +1 -0
- package/dist/components/MessageList/UnreadMessagesNotification.js +12 -0
- package/dist/components/MessageList/UnreadMessagesSeparator.d.ts +6 -0
- package/dist/components/MessageList/UnreadMessagesSeparator.d.ts.map +1 -0
- package/dist/components/MessageList/UnreadMessagesSeparator.js +10 -0
- package/dist/components/MessageList/VirtualizedMessageList.d.ts +12 -1
- package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.js +51 -30
- package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts +5 -3
- package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageListComponents.js +27 -6
- package/dist/components/MessageList/hooks/MessageList/index.d.ts +1 -0
- package/dist/components/MessageList/hooks/MessageList/index.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/MessageList/index.js +1 -0
- package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.js +3 -1
- package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts +5 -8
- package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/MessageList/useMessageListElements.js +22 -31
- package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.js +1 -0
- package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.js +1 -0
- package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.d.ts +7 -0
- package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.js +42 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/index.d.ts +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/index.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/VirtualizedMessageList/index.js +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.js +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.js +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.js +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.js +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.d.ts +22 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.js +29 -0
- package/dist/components/MessageList/hooks/useMarkRead.d.ts +19 -0
- package/dist/components/MessageList/hooks/useMarkRead.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/useMarkRead.js +38 -0
- package/dist/components/MessageList/icons.d.ts +1 -0
- package/dist/components/MessageList/icons.d.ts.map +1 -1
- package/dist/components/MessageList/icons.js +2 -0
- package/dist/components/MessageList/index.d.ts +3 -0
- package/dist/components/MessageList/index.d.ts.map +1 -1
- package/dist/components/MessageList/index.js +3 -0
- package/dist/components/MessageList/renderMessages.d.ts +33 -0
- package/dist/components/MessageList/renderMessages.d.ts.map +1 -0
- package/dist/components/MessageList/renderMessages.js +35 -0
- package/dist/components/MessageList/utils.d.ts.map +1 -1
- package/dist/components/MessageList/utils.js +1 -1
- package/dist/components/Reactions/ReactionsList.d.ts +2 -1
- package/dist/components/Reactions/ReactionsList.d.ts.map +1 -1
- package/dist/components/Reactions/ReactionsList.js +32 -41
- package/dist/components/Reactions/ReactionsListModal.d.ts +13 -0
- package/dist/components/Reactions/ReactionsListModal.d.ts.map +1 -0
- package/dist/components/Reactions/ReactionsListModal.js +46 -0
- package/dist/components/Reactions/SimpleReactionsList.d.ts +2 -4
- package/dist/components/Reactions/SimpleReactionsList.d.ts.map +1 -1
- package/dist/components/Reactions/SimpleReactionsList.js +7 -24
- package/dist/components/Reactions/hooks/useFetchReactions.d.ts +12 -0
- package/dist/components/Reactions/hooks/useFetchReactions.d.ts.map +1 -0
- package/dist/components/Reactions/hooks/useFetchReactions.js +50 -0
- package/dist/components/Reactions/hooks/useProcessReactions.d.ts +3 -13
- package/dist/components/Reactions/hooks/useProcessReactions.d.ts.map +1 -1
- package/dist/components/Reactions/hooks/useProcessReactions.js +51 -43
- package/dist/components/Reactions/types.d.ts +9 -0
- package/dist/components/Reactions/types.d.ts.map +1 -0
- package/dist/components/Reactions/types.js +1 -0
- package/dist/components/Thread/Thread.js +1 -0
- package/dist/context/ChannelActionContext.d.ts +2 -0
- package/dist/context/ChannelActionContext.d.ts.map +1 -1
- package/dist/context/ComponentContext.d.ts +6 -2
- package/dist/context/ComponentContext.d.ts.map +1 -1
- package/dist/context/MessageContext.d.ts +8 -2
- package/dist/context/MessageContext.d.ts.map +1 -1
- package/dist/css/v2/index.css +1 -1
- package/dist/css/v2/index.layout.css +1 -1
- package/dist/i18n/Streami18n.d.ts +10 -0
- package/dist/i18n/Streami18n.d.ts.map +1 -1
- package/dist/i18n/de.json +10 -0
- package/dist/i18n/en.json +10 -0
- package/dist/i18n/es.json +12 -0
- package/dist/i18n/fr.json +12 -0
- package/dist/i18n/hi.json +11 -0
- package/dist/i18n/it.json +12 -0
- package/dist/i18n/ja.json +8 -0
- package/dist/i18n/ko.json +8 -0
- package/dist/i18n/nl.json +10 -0
- package/dist/i18n/pt.json +12 -0
- package/dist/i18n/ru.json +14 -0
- package/dist/i18n/tr.json +10 -0
- package/dist/{icons-b84cd102.js → icons-7ead3d97.js} +12 -12
- package/dist/index.cjs.js +4911 -4265
- package/dist/scss/v2/AttachmentPreviewList/AttachmentPreviewList-layout.scss +1 -0
- package/dist/scss/v2/Message/Message-layout.scss +68 -10
- package/dist/scss/v2/Message/Message-theme.scss +34 -2
- package/dist/scss/v2/MessageActionsBox/MessageActionsBox-layout.scss +0 -11
- package/dist/scss/v2/MessageBounceOptions/MessageBounceOptions-layout.scss +18 -0
- package/dist/scss/v2/MessageBounceOptions/MessageBounceOptions-theme.scss +51 -0
- package/dist/scss/v2/MessageReactions/MessageReactions-layout.scss +74 -0
- package/dist/scss/v2/MessageReactions/MessageReactions-theme.scss +17 -0
- package/dist/scss/v2/_base.scss +3 -20
- package/dist/scss/v2/_global-theme-variables.scss +3 -0
- package/dist/scss/v2/index.layout.scss +1 -0
- package/dist/scss/v2/index.scss +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -3
|
@@ -1,53 +1,13 @@
|
|
|
1
|
-
import 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,
|
|
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
|
-
|
|
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":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAA2C,MAAM,OAAO,CAAC;AAClF,OAAO,EAEL,uBAAuB,EACvB,0BAA0B,EAE1B,cAAc,EACd,aAAa,EACd,MAAM,gBAAgB,CAAC;
|
|
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 {
|
|
13
|
-
import {
|
|
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
|
|
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
|
-
|
|
52
|
+
_h = props.overscan,
|
|
52
53
|
// TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
|
|
53
|
-
overscan =
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
162
|
-
|
|
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
|
|
171
|
-
if (
|
|
172
|
-
|
|
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
|
|
186
|
+
var scrollTimeout;
|
|
177
187
|
if (highlightedMessageId) {
|
|
178
|
-
var
|
|
179
|
-
if (
|
|
180
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
},
|
|
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 {
|
|
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":"
|
|
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
|
|
3
|
-
import
|
|
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
|
|
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
|
-
|
|
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
|
};
|
|
@@ -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"}
|
|
@@ -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;;;;;
|
|
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
|
-
},
|
|
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 {
|
|
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
|
-
|
|
6
|
+
import { MessageRenderer, SharedMessageProps } from '../../renderMessages';
|
|
8
7
|
type UseMessageListElementsProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
9
8
|
enrichedMessages: StreamMessage<StreamChatGenerics>[];
|
|
10
|
-
internalMessageProps:
|
|
9
|
+
internalMessageProps: SharedMessageProps<StreamChatGenerics>;
|
|
11
10
|
messageGroupStyles: Record<string, GroupStyle>;
|
|
11
|
+
renderMessages: MessageRenderer<StreamChatGenerics>;
|
|
12
12
|
returnAllReadData: boolean;
|
|
13
13
|
threadList: boolean;
|
|
14
|
-
read?:
|
|
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":"
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
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,
|
|
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;
|