stream-chat-react 11.6.0 → 11.8.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/Window-7c2f264c.js +41846 -0
- package/dist/browser.full-bundle.js +329 -230
- 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/Channel/Channel.d.ts +7 -5
- package/dist/components/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +97 -56
- package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts.map +1 -1
- package/dist/components/Channel/hooks/useCreateChannelStateContext.js +3 -1
- package/dist/components/ChannelList/ChannelList.d.ts +3 -0
- package/dist/components/ChannelList/ChannelList.d.ts.map +1 -1
- package/dist/components/ChannelList/ChannelList.js +2 -2
- package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts +12 -1
- package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
- package/dist/components/ChannelList/hooks/usePaginatedChannels.js +55 -43
- package/dist/components/ChannelPreview/ChannelPreview.d.ts +0 -16
- package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
- package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts +0 -5
- package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts.map +1 -1
- package/dist/components/ChannelPreview/ChannelPreviewMessenger.js +2 -62
- package/dist/components/Chat/hooks/useChannelsQueryState.d.ts +2 -2
- package/dist/components/Chat/hooks/useChannelsQueryState.d.ts.map +1 -1
- package/dist/components/Emojis/index.cjs.js +30 -12
- package/dist/components/Message/MessageErrorText.d.ts +9 -0
- package/dist/components/Message/MessageErrorText.d.ts.map +1 -0
- package/dist/components/Message/MessageErrorText.js +16 -0
- package/dist/components/Message/MessageSimple.d.ts.map +1 -1
- package/dist/components/Message/MessageSimple.js +17 -5
- package/dist/components/Message/MessageText.d.ts.map +1 -1
- package/dist/components/Message/MessageText.js +3 -5
- package/dist/components/Message/utils.d.ts +1 -0
- package/dist/components/Message/utils.d.ts.map +1 -1
- package/dist/components/Message/utils.js +5 -0
- package/dist/components/MessageActions/MessageActionsBox.d.ts.map +1 -1
- package/dist/components/MessageActions/MessageActionsBox.js +1 -1
- package/dist/components/MessageBounce/MessageBounceModal.d.ts +8 -0
- package/dist/components/MessageBounce/MessageBounceModal.d.ts.map +1 -0
- package/dist/components/MessageBounce/MessageBounceModal.js +10 -0
- package/dist/components/MessageBounce/MessageBouncePrompt.d.ts +6 -0
- package/dist/components/MessageBounce/MessageBouncePrompt.d.ts.map +1 -0
- package/dist/components/MessageBounce/MessageBouncePrompt.js +19 -0
- package/dist/components/MessageBounce/index.d.ts +3 -0
- package/dist/components/MessageBounce/index.d.ts.map +1 -0
- package/dist/components/MessageBounce/index.js +2 -0
- package/dist/components/MessageInput/hooks/useSubmitHandler.js +1 -1
- package/dist/components/MessageList/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList/MessageList.js +15 -14
- package/dist/components/MessageList/UnreadMessagesNotification.d.ts.map +1 -1
- package/dist/components/MessageList/UnreadMessagesNotification.js +2 -2
- package/dist/components/MessageList/UnreadMessagesSeparator.js +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.js +11 -12
- package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts +2 -1
- package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/MessageList/useMessageListElements.js +3 -4
- package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.js +0 -2
- package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.d.ts +2 -1
- package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.js +19 -4
- package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.js +3 -3
- package/dist/components/MessageList/renderMessages.d.ts +8 -7
- package/dist/components/MessageList/renderMessages.d.ts.map +1 -1
- package/dist/components/MessageList/renderMessages.js +4 -4
- package/dist/context/ChannelActionContext.d.ts +9 -1
- package/dist/context/ChannelActionContext.d.ts.map +1 -1
- package/dist/context/ChannelStateContext.d.ts +3 -2
- package/dist/context/ChannelStateContext.d.ts.map +1 -1
- package/dist/context/ComponentContext.d.ts +3 -1
- package/dist/context/ComponentContext.d.ts.map +1 -1
- package/dist/context/MessageBounceContext.d.ts +12 -0
- package/dist/context/MessageBounceContext.d.ts.map +1 -0
- package/dist/context/MessageBounceContext.js +37 -0
- package/dist/context/index.d.ts +1 -0
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +1 -0
- package/dist/css/v2/index.css +1 -1
- package/dist/css/v2/index.layout.css +1 -1
- package/dist/i18n/Streami18n.d.ts +3 -0
- package/dist/i18n/Streami18n.d.ts.map +1 -1
- package/dist/i18n/de.json +3 -0
- package/dist/i18n/en.json +3 -0
- package/dist/i18n/es.json +3 -0
- package/dist/i18n/fr.json +3 -0
- package/dist/i18n/hi.json +3 -0
- package/dist/i18n/it.json +3 -0
- package/dist/i18n/ja.json +3 -0
- package/dist/i18n/ko.json +3 -0
- package/dist/i18n/nl.json +3 -0
- package/dist/i18n/pt.json +3 -0
- package/dist/i18n/ru.json +3 -0
- package/dist/i18n/tr.json +3 -0
- package/dist/index.cjs.js +1392 -39747
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/scss/v2/{MessageBounceOptions/MessageBounceOptions-layout.scss → MessageBouncePrompt/MessageBouncePrompt-layout.scss} +2 -1
- package/dist/scss/v2/{MessageBounceOptions/MessageBounceOptions-theme.scss → MessageBouncePrompt/MessageBouncePrompt-theme.scss} +1 -1
- package/dist/scss/v2/index.layout.scss +1 -1
- package/dist/scss/v2/index.scss +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/types.d.ts +12 -10
- package/dist/types/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
- package/dist/icons-7ead3d97.js +0 -3172
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useMessageBounceContext, useTranslationContext } from '../../context';
|
|
3
|
+
export function MessageBouncePrompt(_a) {
|
|
4
|
+
var children = _a.children, onClose = _a.onClose;
|
|
5
|
+
var _b = useMessageBounceContext('MessageBouncePrompt'), handleDelete = _b.handleDelete, handleEdit = _b.handleEdit, handleRetry = _b.handleRetry;
|
|
6
|
+
var t = useTranslationContext('MessageBouncePrompt').t;
|
|
7
|
+
function createHandler(handle) {
|
|
8
|
+
return function (e) {
|
|
9
|
+
handle(e);
|
|
10
|
+
onClose === null || onClose === void 0 ? void 0 : onClose(e);
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
return (React.createElement("div", { className: 'str-chat__message-bounce-prompt', "data-testid": 'message-bounce-prompt' },
|
|
14
|
+
React.createElement("div", { className: 'str-chat__message-bounce-prompt-header' }, children !== null && children !== void 0 ? children : t('This message did not meet our content guidelines')),
|
|
15
|
+
React.createElement("div", { className: 'str-chat__message-bounce-actions' },
|
|
16
|
+
React.createElement("button", { className: 'str-chat__message-bounce-edit', "data-testid": 'message-bounce-edit', onClick: createHandler(handleEdit), type: 'button' }, t('Edit Message')),
|
|
17
|
+
React.createElement("button", { className: 'str-chat__message-bounce-send', "data-testid": 'message-bounce-send', onClick: createHandler(handleRetry) }, t('Send Anyway')),
|
|
18
|
+
React.createElement("button", { className: 'str-chat__message-bounce-delete', "data-testid": 'message-bounce-delete', onClick: createHandler(handleDelete) }, t('Delete')))));
|
|
19
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/MessageBounce/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC"}
|
|
@@ -128,7 +128,7 @@ export var useSubmitHandler = function (props, state, dispatch, numberOfUploads,
|
|
|
128
128
|
((!someLinkPreviewsLoading && attachmentsFromLinkPreviews.length > 0) ||
|
|
129
129
|
someLinkPreviewsDismissed);
|
|
130
130
|
sendOptions = linkPreviewsEnabled ? { skip_enrich_url: skip_enrich_url } : undefined;
|
|
131
|
-
if (!message) return [3 /*break*/, 5];
|
|
131
|
+
if (!(message && message.type !== 'error')) return [3 /*break*/, 5];
|
|
132
132
|
delete message.i18n;
|
|
133
133
|
_a.label = 1;
|
|
134
134
|
case 1:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,OAAO,EACL,yBAAyB,EAE1B,MAAM,oCAAoC,CAAC;AAS5C,OAAO,EAAkB,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAMhG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAyB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/MessageList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,OAAO,EACL,yBAAyB,EAE1B,MAAM,oCAAoC,CAAC;AAS5C,OAAO,EAAkB,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAMhG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAyB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAoOnE,KAAK,qBAAqB,GACtB,6BAA6B,GAC7B,8BAA8B,GAC9B,sBAAsB,GACtB,uBAAuB,GACvB,YAAY,GACZ,mCAAmC,GACnC,iCAAiC,GACjC,mCAAmC,GACnC,uCAAuC,GACvC,yCAAyC,GACzC,8BAA8B,GAC9B,gCAAgC,GAChC,gCAAgC,GAChC,SAAS,GACT,gBAAgB,GAChB,mBAAmB,GACnB,iBAAiB,GACjB,iBAAiB,GACjB,aAAa,GACb,aAAa,GACb,YAAY,GACZ,gBAAgB,GAChB,YAAY,GACZ,kBAAkB,GAClB,YAAY,CAAC;AAEjB,MAAM,MAAM,gBAAgB,CAC1B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,qBAAqB,CAAC,CAAC,GAAG;IAC3E,8FAA8F;IAC9F,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,CACZ,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAC1C,eAAe,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAClD,WAAW,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAC9C,aAAa,EAAE,OAAO,KACnB,UAAU,CAAC;IAChB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iIAAiI;IACjI,IAAI,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qIAAqI;IACrI,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,mLAAmL;IACnL,2BAA2B,CAAC,EAAE,mBAAmB,CAAC;IAClD,iHAAiH;IACjH,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,4LAA4L;IAC5L,QAAQ,CAAC,EAAE,yBAAyB,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,6LAA6L;IAC7L,aAAa,CAAC,EAAE,yBAAyB,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACnF,qJAAqJ;IACrJ,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yKAAyK;IACzK,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/C,qDAAqD;IACrD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qDAAqD;IACrD,cAAc,CAAC,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACrD,qHAAqH;IACrH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,gJA2BvB,CAAC"}
|
|
@@ -19,33 +19,33 @@ import { MessageListMainPanel } from './MessageListMainPanel';
|
|
|
19
19
|
import { defaultRenderMessages } from './renderMessages';
|
|
20
20
|
var MessageListWithContext = function (props) {
|
|
21
21
|
var _a;
|
|
22
|
-
var channel = props.channel, _b = props.disableDateSeparator, disableDateSeparator = _b === void 0 ? false : _b, groupStyles = props.groupStyles, _c = props.hideDeletedMessages, hideDeletedMessages = _c === void 0 ? false : _c, _d = props.hideNewMessageSeparator, hideNewMessageSeparator = _d === void 0 ? false : _d, internalInfiniteScrollProps = props.internalInfiniteScrollProps, _e = props.messageActions, messageActions = _e === void 0 ? Object.keys(MESSAGE_ACTIONS) : _e, _f = props.messages, messages = _f === void 0 ? [] : _f, notifications = props.notifications, _g = props.noGroupByUser, noGroupByUser = _g === void 0 ? false : _g, _h = props.pinPermissions, pinPermissions = _h === void 0 ? defaultPinPermissions : _h, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
|
|
22
|
+
var channel = props.channel, channelUnreadUiState = props.channelUnreadUiState, _b = props.disableDateSeparator, disableDateSeparator = _b === void 0 ? false : _b, groupStyles = props.groupStyles, _c = props.hideDeletedMessages, hideDeletedMessages = _c === void 0 ? false : _c, _d = props.hideNewMessageSeparator, hideNewMessageSeparator = _d === void 0 ? false : _d, internalInfiniteScrollProps = props.internalInfiniteScrollProps, _e = props.messageActions, messageActions = _e === void 0 ? Object.keys(MESSAGE_ACTIONS) : _e, _f = props.messages, messages = _f === void 0 ? [] : _f, notifications = props.notifications, _g = props.noGroupByUser, noGroupByUser = _g === void 0 ? false : _g, _h = props.pinPermissions, pinPermissions = _h === void 0 ? defaultPinPermissions : _h, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
|
|
23
23
|
_j = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
|
|
24
24
|
returnAllReadData = _j === void 0 ? false : _j, _k = props.threadList, threadList = _k === void 0 ? false : _k, _l = props.unsafeHTML, unsafeHTML = _l === void 0 ? false : _l, headerPosition = props.headerPosition, read = props.read, markReadOnScrolledToBottom = props.markReadOnScrolledToBottom, _m = props.renderMessages, renderMessages = _m === void 0 ? defaultRenderMessages : _m, _o = props.messageLimit, messageLimit = _o === void 0 ? 100 : _o, loadMoreCallback = props.loadMore, loadMoreNewerCallback = props.loadMoreNewer, _p = props.hasMoreNewer, hasMoreNewer = _p === void 0 ? false : _p, suppressAutoscroll = props.suppressAutoscroll, highlightedMessageId = props.highlightedMessageId, _q = props.jumpToLatestMessage, jumpToLatestMessage = _q === void 0 ? function () { return Promise.resolve(); } : _q;
|
|
25
25
|
var _r = React.useState(null), listElement = _r[0], setListElement = _r[1];
|
|
26
26
|
var _s = React.useState(null), ulElement = _s[0], setUlElement = _s[1];
|
|
27
|
-
var
|
|
28
|
-
var
|
|
27
|
+
var customClasses = useChatContext('MessageList').customClasses;
|
|
28
|
+
var _t = useComponentContext('MessageList'), _u = _t.EmptyStateIndicator, EmptyStateIndicator = _u === void 0 ? DefaultEmptyStateIndicator : _u, _v = _t.LoadingIndicator, LoadingIndicator = _v === void 0 ? DefaultLoadingIndicator : _v, _w = _t.MessageListNotifications, MessageListNotifications = _w === void 0 ? DefaultMessageListNotifications : _w, _x = _t.MessageNotification, MessageNotification = _x === void 0 ? DefaultMessageNotification : _x, _y = _t.TypingIndicator, TypingIndicator = _y === void 0 ? DefaultTypingIndicator : _y, _z = _t.UnreadMessagesNotification, UnreadMessagesNotification = _z === void 0 ? DefaultUnreadMessagesNotification : _z;
|
|
29
29
|
var loadMoreScrollThreshold = (internalInfiniteScrollProps === null || internalInfiniteScrollProps === void 0 ? void 0 : internalInfiniteScrollProps.threshold) || 250;
|
|
30
|
-
var
|
|
31
|
-
var showUnreadMessagesNotification = useUnreadMessagesNotification({
|
|
32
|
-
unreadCount: currentUserChannelReadState === null || currentUserChannelReadState === void 0 ? void 0 : currentUserChannelReadState.unread_messages,
|
|
33
|
-
}).show;
|
|
34
|
-
var _1 = useScrollLocationLogic({
|
|
30
|
+
var _0 = useScrollLocationLogic({
|
|
35
31
|
hasMoreNewer: hasMoreNewer,
|
|
36
32
|
listElement: listElement,
|
|
37
33
|
loadMoreScrollThreshold: loadMoreScrollThreshold,
|
|
38
34
|
messages: messages,
|
|
39
35
|
scrolledUpThreshold: props.scrolledUpThreshold,
|
|
40
36
|
suppressAutoscroll: suppressAutoscroll,
|
|
41
|
-
}), hasNewMessages =
|
|
37
|
+
}), hasNewMessages = _0.hasNewMessages, isMessageListScrolledToBottom = _0.isMessageListScrolledToBottom, onScroll = _0.onScroll, scrollToBottom = _0.scrollToBottom, wrapperRect = _0.wrapperRect;
|
|
38
|
+
var showUnreadMessagesNotification = useUnreadMessagesNotification({
|
|
39
|
+
isMessageListScrolledToBottom: isMessageListScrolledToBottom,
|
|
40
|
+
unreadCount: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages,
|
|
41
|
+
}).show;
|
|
42
42
|
useMarkRead({
|
|
43
43
|
isMessageListScrolledToBottom: isMessageListScrolledToBottom,
|
|
44
44
|
markReadOnScrolledToBottom: markReadOnScrolledToBottom,
|
|
45
45
|
messageListIsThread: threadList,
|
|
46
|
-
unreadCount: (_a =
|
|
46
|
+
unreadCount: (_a = channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages) !== null && _a !== void 0 ? _a : 0,
|
|
47
47
|
});
|
|
48
|
-
var
|
|
48
|
+
var _1 = useEnrichedMessages({
|
|
49
49
|
channel: channel,
|
|
50
50
|
disableDateSeparator: disableDateSeparator,
|
|
51
51
|
groupStyles: groupStyles,
|
|
@@ -54,8 +54,9 @@ var MessageListWithContext = function (props) {
|
|
|
54
54
|
hideNewMessageSeparator: hideNewMessageSeparator,
|
|
55
55
|
messages: messages,
|
|
56
56
|
noGroupByUser: noGroupByUser,
|
|
57
|
-
}), messageGroupStyles =
|
|
57
|
+
}), messageGroupStyles = _1.messageGroupStyles, enrichedMessages = _1.messages;
|
|
58
58
|
var elements = useMessageListElements({
|
|
59
|
+
channelUnreadUiState: channelUnreadUiState,
|
|
59
60
|
enrichedMessages: enrichedMessages,
|
|
60
61
|
internalMessageProps: {
|
|
61
62
|
additionalMessageInputProps: props.additionalMessageInputProps,
|
|
@@ -131,12 +132,12 @@ var MessageListWithContext = function (props) {
|
|
|
131
132
|
var showEmptyStateIndicator = elements.length === 0 && !threadList;
|
|
132
133
|
return (React.createElement(MessageListContextProvider, { value: { listElement: listElement, scrollToBottom: scrollToBottom } },
|
|
133
134
|
React.createElement(MessageListMainPanel, null,
|
|
134
|
-
!threadList && showUnreadMessagesNotification && (React.createElement(UnreadMessagesNotification, { unreadCount:
|
|
135
|
+
!threadList && showUnreadMessagesNotification && (React.createElement(UnreadMessagesNotification, { unreadCount: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages })),
|
|
135
136
|
React.createElement("div", { className: "".concat(messageListClass, " ").concat(threadListClass), onScroll: onScroll, ref: setListElement, tabIndex: 0 }, showEmptyStateIndicator ? (React.createElement(EmptyStateIndicator, { key: 'empty-state-indicator', listType: threadList ? 'thread' : 'message' })) : (React.createElement(InfiniteScroll, __assign({ className: 'str-chat__reverse-infinite-scroll str-chat__message-list-scroll', "data-testid": 'reverse-infinite-scroll', hasNextPage: props.hasMoreNewer, hasPreviousPage: props.hasMore, head: props.head, isLoading: props.loadingMore, loader: React.createElement("div", { className: 'str-chat__list__loading', key: 'loading-indicator' }, props.loadingMore && React.createElement(LoadingIndicator, { size: 20 })), loadNextPage: loadMoreNewer, loadPreviousPage: loadMore }, props.internalInfiniteScrollProps, { threshold: loadMoreScrollThreshold }),
|
|
136
137
|
React.createElement("ul", { className: 'str-chat__ul', ref: setUlElement }, elements),
|
|
137
138
|
React.createElement(TypingIndicator, { threadList: threadList }),
|
|
138
139
|
React.createElement("div", { key: 'bottom' }))))),
|
|
139
|
-
React.createElement(MessageListNotifications, { hasNewMessages: hasNewMessages, isMessageListScrolledToBottom: isMessageListScrolledToBottom, isNotAtLatestMessageSet: hasMoreNewer, MessageNotification: MessageNotification, notifications: notifications, scrollToBottom: scrollToBottomFromNotification, threadList: threadList, unreadCount: threadList ? undefined :
|
|
140
|
+
React.createElement(MessageListNotifications, { hasNewMessages: hasNewMessages, isMessageListScrolledToBottom: isMessageListScrolledToBottom, isNotAtLatestMessageSet: hasMoreNewer, MessageNotification: MessageNotification, notifications: notifications, scrollToBottom: scrollToBottomFromNotification, threadList: threadList, unreadCount: threadList ? undefined : channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages })));
|
|
140
141
|
};
|
|
141
142
|
/**
|
|
142
143
|
* The MessageList component renders a list of Messages.
|
|
@@ -1 +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,
|
|
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,gBAmBjC,CAAC"}
|
|
@@ -5,8 +5,8 @@ export var UnreadMessagesNotification = function (_a) {
|
|
|
5
5
|
var queryMessageLimit = _a.queryMessageLimit, unreadCount = _a.unreadCount;
|
|
6
6
|
var _b = useChannelActionContext('UnreadMessagesNotification'), jumpToFirstUnreadMessage = _b.jumpToFirstUnreadMessage, markRead = _b.markRead;
|
|
7
7
|
var t = useTranslationContext('UnreadMessagesNotification').t;
|
|
8
|
-
return (React.createElement("div", { className: 'str-chat__unread-messages-notification' },
|
|
8
|
+
return (React.createElement("div", { className: 'str-chat__unread-messages-notification', "data-testid": 'unread-messages-notification' },
|
|
9
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 },
|
|
10
|
+
React.createElement("button", { onClick: function () { return markRead(); } },
|
|
11
11
|
React.createElement(CloseIcon, null))));
|
|
12
12
|
};
|
|
@@ -4,7 +4,7 @@ export var UNREAD_MESSAGE_SEPARATOR_CLASS = 'str-chat__unread-messages-separator
|
|
|
4
4
|
export var UnreadMessagesSeparator = function (_a) {
|
|
5
5
|
var unreadCount = _a.unreadCount;
|
|
6
6
|
var t = useTranslationContext('UnreadMessagesSeparator').t;
|
|
7
|
-
return (React.createElement("div", { className: UNREAD_MESSAGE_SEPARATOR_CLASS }, unreadCount
|
|
7
|
+
return (React.createElement("div", { className: UNREAD_MESSAGE_SEPARATOR_CLASS, "data-testid": 'unread-messages-separator' }, unreadCount
|
|
8
8
|
? t('unreadMessagesSeparatorText', { count: unreadCount })
|
|
9
9
|
: t('Unread messages')));
|
|
10
10
|
};
|
|
@@ -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;AAkBxB,OAAO,EAAmC,UAAU,EAAmB,MAAM,SAAS,CAAC;AACvF,OAAO,EAAE,YAAY,EAAiB,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAalF,OAAO,EACL,yBAAyB,EAE1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,
|
|
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;AAkBxB,OAAO,EAAmC,UAAU,EAAmB,MAAM,SAAS,CAAC;AACvF,OAAO,EAAE,YAAY,EAAiB,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAalF,OAAO,EACL,yBAAyB,EAE1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAGL,aAAa,EAEd,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAkB,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAuB,MAAM,gCAAgC,CAAC;AAE5F,OAAO,KAAK,EAA+C,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,KAAK,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhF,KAAK,qCAAqC,GACtC,6BAA6B,GAC7B,8BAA8B,GAC9B,sBAAsB,GACtB,uBAAuB,GACvB,MAAM,GACN,aAAa,GACb,SAAS,GACT,gBAAgB,GAChB,mBAAmB,GACnB,YAAY,CAAC;AAEjB;;GAEG;AACH,MAAM,MAAM,eAAe,CACzB,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,QAAQ,CACV,IAAI,CACF,qBAAqB,CAAC,kBAAkB,CAAC,EACzC,eAAe,GAAG,eAAe,GAAG,yBAAyB,CAC9D,CACF,GACC,IAAI,CAAC,2BAA2B,CAAC,kBAAkB,CAAC,EAAE,qCAAqC,CAAC,GAC5F,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,eAAe,CAAC,GAAG;IAC5D,wDAAwD;IACxD,qBAAqB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACjD,mJAAmJ;IACnJ,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/C,4IAA4I;IAC5I,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8FAA8F;IAC9F,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAC5E,2GAA2G;IAC3G,iBAAiB,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IACvD,yHAAyH;IACzH,WAAW,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IACvC,4GAA4G;IAC5G,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4DAA4D;IAC5D,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AA+XJ,KAAK,qBAAqB,GACtB,6BAA6B,GAC7B,sBAAsB,GACtB,gBAAgB,CAAC;AAErB,MAAM,MAAM,2BAA2B,CACrC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,qBAAqB,CAAC,CAAC,GAAG;IAC3E,gJAAgJ;IAChJ,uBAAuB,CAAC,EAAE,aAAa,CAAC,WAAW,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC1F,gGAAgG;IAChG,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,sEAAsE;IACtE,qBAAqB,CAAC,EAAE,CACtB,WAAW,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,EAChD,KAAK,EAAE,MAAM,KACV,KAAK,CAAC,YAAY,CAAC;IACxB;;SAEK;IACL,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6FAA6F;IAC7F,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,CACZ,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAC1C,eAAe,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAClD,WAAW,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAC9C,aAAa,EAAE,OAAO,KACnB,UAAU,CAAC;IAChB,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAC1B,+EAA+E;IAC/E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,uIAAuI;IACvI,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,oDAAoD;IACpD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,4LAA4L;IAC5L,QAAQ,CAAC,EAAE,yBAAyB,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,2LAA2L;IAC3L,aAAa,CAAC,EAAE,yBAAyB,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,qJAAqJ;IACrJ,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,2MAA2M;IAC3M,OAAO,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC3E,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4JAA4J;IAC5J,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/C;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kJAAkJ;IAClJ,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;;;;;;OAYG;IACH,qBAAqB,CAAC,EAAE,uBAAuB,GAAG;QAChD,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC;KAC9D,CAAC;IACF,4FAA4F;IAC5F,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,sJAAsJ;IACtJ,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,wLAAwL;IACxL,2BAA2B,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAChD,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,KAAK,EAAE,2BAA2B,CAAC,kBAAkB,CAAC,eAyCvD"}
|
|
@@ -47,7 +47,7 @@ function calculateInitialTopMostItemIndex(messages, highlightedMessageId) {
|
|
|
47
47
|
}
|
|
48
48
|
var VirtualizedMessageListWithContext = function (props) {
|
|
49
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
|
+
var additionalMessageInputProps = props.additionalMessageInputProps, _c = props.additionalVirtuosoProps, additionalVirtuosoProps = _c === void 0 ? {} : _c, channel = props.channel, channelUnreadUiState = props.channelUnreadUiState, 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,
|
|
51
51
|
// TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
|
|
52
52
|
_h = props.overscan,
|
|
53
53
|
// TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
|
|
@@ -61,10 +61,9 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
61
61
|
var _v = useChatContext('VirtualizedMessageList'), client = _v.client, customClasses = _v.customClasses;
|
|
62
62
|
var virtuoso = useRef(null);
|
|
63
63
|
var lastRead = useMemo(function () { var _a; return (_a = channel.lastRead) === null || _a === void 0 ? void 0 : _a.call(channel); }, [channel]);
|
|
64
|
-
var currentUserChannelReadState = client.user && (read === null || read === void 0 ? void 0 : read[client.user.id]);
|
|
65
64
|
var _w = useUnreadMessagesNotificationVirtualized({
|
|
66
|
-
lastRead:
|
|
67
|
-
unreadCount: (_a =
|
|
65
|
+
lastRead: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read,
|
|
66
|
+
unreadCount: (_a = channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages) !== null && _a !== void 0 ? _a : 0,
|
|
68
67
|
}), showUnreadMessagesNotification = _w.show, toggleShowUnreadMessagesNotification = _w.toggleShowUnreadMessagesNotification;
|
|
69
68
|
var _x = useGiphyPreview(separateGiphyPreview), giphyPreviewMessage = _x.giphyPreviewMessage, setGiphyPreviewMessage = _x.setGiphyPreviewMessage;
|
|
70
69
|
var processedMessages = useMemo(function () {
|
|
@@ -123,7 +122,7 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
123
122
|
isMessageListScrolledToBottom: isMessageListScrolledToBottom,
|
|
124
123
|
markReadOnScrolledToBottom: markReadOnScrolledToBottom,
|
|
125
124
|
messageListIsThread: !!threadList,
|
|
126
|
-
unreadCount: (_b =
|
|
125
|
+
unreadCount: (_b = channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages) !== null && _b !== void 0 ? _b : 0,
|
|
127
126
|
});
|
|
128
127
|
var scrollToBottom = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
129
128
|
return __generator(this, function (_a) {
|
|
@@ -201,7 +200,7 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
201
200
|
return null;
|
|
202
201
|
return (React.createElement(React.Fragment, null,
|
|
203
202
|
React.createElement(MessageListMainPanel, null,
|
|
204
|
-
!threadList && showUnreadMessagesNotification && (React.createElement(UnreadMessagesNotification, { unreadCount:
|
|
203
|
+
!threadList && showUnreadMessagesNotification && (React.createElement(UnreadMessagesNotification, { unreadCount: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages })),
|
|
205
204
|
React.createElement("div", { className: (customClasses === null || customClasses === void 0 ? void 0 : customClasses.virtualizedMessageList) || 'str-chat__virtual-list' },
|
|
206
205
|
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: {
|
|
207
206
|
additionalMessageInputProps: additionalMessageInputProps,
|
|
@@ -210,9 +209,9 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
210
209
|
customMessageActions: customMessageActions,
|
|
211
210
|
customMessageRenderer: customMessageRenderer,
|
|
212
211
|
DateSeparator: DateSeparator,
|
|
213
|
-
firstUnreadMessageId:
|
|
212
|
+
firstUnreadMessageId: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.first_unread_message_id,
|
|
214
213
|
head: head,
|
|
215
|
-
lastReadMessageId:
|
|
214
|
+
lastReadMessageId: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read_message_id,
|
|
216
215
|
lastReceivedMessageId: lastReceivedMessageId,
|
|
217
216
|
loadingMore: loadingMore,
|
|
218
217
|
Message: MessageUIComponent,
|
|
@@ -224,11 +223,11 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
224
223
|
processedMessages: processedMessages,
|
|
225
224
|
shouldGroupByUser: shouldGroupByUser,
|
|
226
225
|
threadList: threadList,
|
|
227
|
-
unreadMessageCount:
|
|
226
|
+
unreadMessageCount: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages,
|
|
228
227
|
UnreadMessagesSeparator: UnreadMessagesSeparator,
|
|
229
228
|
virtuosoRef: virtuoso,
|
|
230
229
|
}, 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 :
|
|
230
|
+
React.createElement(MessageListNotifications, { hasNewMessages: newMessagesNotification, isMessageListScrolledToBottom: isMessageListScrolledToBottom, isNotAtLatestMessageSet: hasMoreNewer, MessageNotification: MessageNotification, notifications: notifications, scrollToBottom: scrollToBottom, threadList: threadList, unreadCount: threadList ? undefined : channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages }),
|
|
232
231
|
giphyPreviewMessage && React.createElement(GiphyPreviewMessage, { message: giphyPreviewMessage })));
|
|
233
232
|
};
|
|
234
233
|
/**
|
|
@@ -237,7 +236,7 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
237
236
|
*/
|
|
238
237
|
export function VirtualizedMessageList(props) {
|
|
239
238
|
var _a = useChannelActionContext('VirtualizedMessageList'), jumpToLatestMessage = _a.jumpToLatestMessage, loadMore = _a.loadMore, loadMoreNewer = _a.loadMoreNewer;
|
|
240
|
-
var _b = useChannelStateContext('VirtualizedMessageList'), channel = _b.channel, hasMore = _b.hasMore, hasMoreNewer = _b.hasMoreNewer, highlightedMessageId = _b.highlightedMessageId, loadingMore = _b.loadingMore, loadingMoreNewer = _b.loadingMoreNewer, contextMessages = _b.messages, notifications = _b.notifications, read = _b.read, suppressAutoscroll = _b.suppressAutoscroll;
|
|
239
|
+
var _b = useChannelStateContext('VirtualizedMessageList'), channel = _b.channel, channelUnreadUiState = _b.channelUnreadUiState, hasMore = _b.hasMore, hasMoreNewer = _b.hasMoreNewer, highlightedMessageId = _b.highlightedMessageId, loadingMore = _b.loadingMore, loadingMoreNewer = _b.loadingMoreNewer, contextMessages = _b.messages, notifications = _b.notifications, read = _b.read, suppressAutoscroll = _b.suppressAutoscroll;
|
|
241
240
|
var messages = props.messages || contextMessages;
|
|
242
|
-
return (React.createElement(VirtualizedMessageListWithContext, __assign({ channel: channel, hasMore: !!hasMore, hasMoreNewer: !!hasMoreNewer, highlightedMessageId: highlightedMessageId, jumpToLatestMessage: jumpToLatestMessage, loadingMore: !!loadingMore, loadingMoreNewer: !!loadingMoreNewer, loadMore: loadMore, loadMoreNewer: loadMoreNewer, messages: messages, notifications: notifications, read: read, suppressAutoscroll: suppressAutoscroll }, props)));
|
|
241
|
+
return (React.createElement(VirtualizedMessageListWithContext, __assign({ channel: channel, channelUnreadUiState: channelUnreadUiState, hasMore: !!hasMore, hasMoreNewer: !!hasMoreNewer, highlightedMessageId: highlightedMessageId, jumpToLatestMessage: jumpToLatestMessage, loadingMore: !!loadingMore, loadingMoreNewer: !!loadingMoreNewer, loadMore: loadMore, loadMoreNewer: loadMoreNewer, messages: messages, notifications: notifications, read: read, suppressAutoscroll: suppressAutoscroll }, props)));
|
|
243
242
|
}
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { GroupStyle } from '../../utils';
|
|
3
3
|
import type { ChannelState as StreamChannelState } from 'stream-chat';
|
|
4
4
|
import type { StreamMessage } from '../../../../context/ChannelStateContext';
|
|
5
|
-
import type { DefaultStreamChatGenerics } from '../../../../types/types';
|
|
5
|
+
import type { ChannelUnreadUiState, DefaultStreamChatGenerics } from '../../../../types/types';
|
|
6
6
|
import { MessageRenderer, SharedMessageProps } from '../../renderMessages';
|
|
7
7
|
type UseMessageListElementsProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
8
8
|
enrichedMessages: StreamMessage<StreamChatGenerics>[];
|
|
@@ -11,6 +11,7 @@ type UseMessageListElementsProps<StreamChatGenerics extends DefaultStreamChatGen
|
|
|
11
11
|
renderMessages: MessageRenderer<StreamChatGenerics>;
|
|
12
12
|
returnAllReadData: boolean;
|
|
13
13
|
threadList: boolean;
|
|
14
|
+
channelUnreadUiState?: ChannelUnreadUiState<StreamChatGenerics>;
|
|
14
15
|
read?: StreamChannelState<StreamChatGenerics>['read'];
|
|
15
16
|
};
|
|
16
17
|
export declare const useMessageListElements: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(props: UseMessageListElementsProps<StreamChatGenerics>) => React.ReactNode[];
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,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,oBAAoB,CAAC,EAAE,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;IAChE,IAAI,CAAC,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;CACvD,CAAC;AAEF,eAAO,MAAM,sBAAsB,iKAyDlC,CAAC"}
|
|
@@ -5,7 +5,7 @@ import { getLastReceived } from '../../utils';
|
|
|
5
5
|
import { useChatContext } from '../../../../context/ChatContext';
|
|
6
6
|
import { useComponentContext } from '../../../../context/ComponentContext';
|
|
7
7
|
export var useMessageListElements = function (props) {
|
|
8
|
-
var enrichedMessages = props.enrichedMessages, internalMessageProps = props.internalMessageProps, messageGroupStyles = props.messageGroupStyles, read = props.read, renderMessages = props.renderMessages, returnAllReadData = props.returnAllReadData, threadList = props.threadList;
|
|
8
|
+
var channelUnreadUiState = props.channelUnreadUiState, enrichedMessages = props.enrichedMessages, internalMessageProps = props.internalMessageProps, messageGroupStyles = props.messageGroupStyles, read = props.read, renderMessages = props.renderMessages, returnAllReadData = props.returnAllReadData, threadList = props.threadList;
|
|
9
9
|
var _a = useChatContext('useMessageListElements'), client = _a.client, customClasses = _a.customClasses;
|
|
10
10
|
var components = useComponentContext('useMessageListElements');
|
|
11
11
|
// get the readData, but only for messages submitted by the user themselves
|
|
@@ -18,15 +18,14 @@ export var useMessageListElements = function (props) {
|
|
|
18
18
|
var lastReceivedMessageId = useMemo(function () { return getLastReceived(enrichedMessages); }, [
|
|
19
19
|
enrichedMessages,
|
|
20
20
|
]);
|
|
21
|
-
var ownReadState = client.user && (read === null || read === void 0 ? void 0 : read[client.user.id]) ? read[client.user.id] : undefined;
|
|
22
21
|
var elements = useMemo(function () {
|
|
23
22
|
return renderMessages({
|
|
23
|
+
channelUnreadUiState: channelUnreadUiState,
|
|
24
24
|
components: components,
|
|
25
25
|
customClasses: customClasses,
|
|
26
26
|
lastReceivedMessageId: lastReceivedMessageId,
|
|
27
27
|
messageGroupStyles: messageGroupStyles,
|
|
28
28
|
messages: enrichedMessages,
|
|
29
|
-
ownReadState: ownReadState,
|
|
30
29
|
readData: readData,
|
|
31
30
|
sharedMessageProps: __assign(__assign({}, internalMessageProps), { threadList: threadList }),
|
|
32
31
|
});
|
|
@@ -37,7 +36,7 @@ export var useMessageListElements = function (props) {
|
|
|
37
36
|
internalMessageProps,
|
|
38
37
|
lastReceivedMessageId,
|
|
39
38
|
messageGroupStyles,
|
|
40
|
-
|
|
39
|
+
channelUnreadUiState,
|
|
41
40
|
readData,
|
|
42
41
|
renderMessages,
|
|
43
42
|
threadList,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScrollLocationLogic.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/MessageList/useScrollLocationLogic.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAI9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,MAAM,MAAM,4BAA4B,CACtC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,cAAc,GAAG,IAAI,CAAC;IACnC,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/C,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;
|
|
1
|
+
{"version":3,"file":"useScrollLocationLogic.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/MessageList/useScrollLocationLogic.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAI9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,MAAM,MAAM,4BAA4B,CACtC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,cAAc,GAAG,IAAI,CAAC;IACnC,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/C,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;sBAyDvB,aAAa,CAAC,cAAc,CAAC;;;CAgCxC,CAAC"}
|
|
@@ -7,12 +7,10 @@ export var useScrollLocationLogic = function (params) {
|
|
|
7
7
|
var _e = useState(true), isMessageListScrolledToBottom = _e[0], setIsMessageListScrolledToBottom = _e[1];
|
|
8
8
|
var closeToBottom = useRef(false);
|
|
9
9
|
var closeToTop = useRef(false);
|
|
10
|
-
var scrollCounter = useRef({ autoScroll: 0, scroll: 0 });
|
|
11
10
|
var scrollToBottom = useCallback(function () {
|
|
12
11
|
if (!(listElement === null || listElement === void 0 ? void 0 : listElement.scrollTo) || hasMoreNewer || suppressAutoscroll) {
|
|
13
12
|
return;
|
|
14
13
|
}
|
|
15
|
-
scrollCounter.current.autoScroll += 1;
|
|
16
14
|
listElement.scrollTo({
|
|
17
15
|
top: listElement.scrollHeight,
|
|
18
16
|
});
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export type UseUnreadMessagesNotificationParams = {
|
|
2
|
+
isMessageListScrolledToBottom: boolean;
|
|
2
3
|
unreadCount?: number;
|
|
3
4
|
};
|
|
4
|
-
export declare const useUnreadMessagesNotification: ({ unreadCount, }: UseUnreadMessagesNotificationParams) => {
|
|
5
|
+
export declare const useUnreadMessagesNotification: ({ isMessageListScrolledToBottom, unreadCount, }: UseUnreadMessagesNotificationParams) => {
|
|
5
6
|
show: boolean;
|
|
6
7
|
};
|
|
7
8
|
//# sourceMappingURL=useUnreadMessagesNotification.d.ts.map
|
package/dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUnreadMessagesNotification.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,mCAAmC,GAAG;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,6BAA6B,
|
|
1
|
+
{"version":3,"file":"useUnreadMessagesNotification.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,mCAAmC,GAAG;IAChD,6BAA6B,EAAE,OAAO,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,6BAA6B,oDAGvC,mCAAmC;;CA0DrC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useChannelStateContext } from '../../../../context';
|
|
2
|
-
import { useEffect, useState } from 'react';
|
|
2
|
+
import { useEffect, useRef, useState } from 'react';
|
|
3
3
|
import { MESSAGE_LIST_MAIN_PANEL_CLASS } from '../../MessageListMainPanel';
|
|
4
4
|
import { UNREAD_MESSAGE_SEPARATOR_CLASS } from '../../UnreadMessagesSeparator';
|
|
5
5
|
var targetIsVisibleInContainer = function (element, container) {
|
|
@@ -8,9 +8,10 @@ var targetIsVisibleInContainer = function (element, container) {
|
|
|
8
8
|
return 0 <= targetMessageY && targetMessageY <= msgListHeight;
|
|
9
9
|
};
|
|
10
10
|
export var useUnreadMessagesNotification = function (_a) {
|
|
11
|
-
var unreadCount = _a.unreadCount;
|
|
11
|
+
var isMessageListScrolledToBottom = _a.isMessageListScrolledToBottom, unreadCount = _a.unreadCount;
|
|
12
12
|
var messages = useChannelStateContext('UnreadMessagesNotification').messages;
|
|
13
13
|
var _b = useState(false), show = _b[0], setShow = _b[1];
|
|
14
|
+
var isScrolledAboveTargetTop = useRef(false);
|
|
14
15
|
var intersectionObserverIsSupported = typeof IntersectionObserver !== 'undefined';
|
|
15
16
|
useEffect(function () {
|
|
16
17
|
if (!(unreadCount && intersectionObserverIsSupported)) {
|
|
@@ -30,13 +31,27 @@ export var useUnreadMessagesNotification = function (_a) {
|
|
|
30
31
|
if (!elements.length)
|
|
31
32
|
return;
|
|
32
33
|
var _a = elements[0], boundingClientRect = _a.boundingClientRect, isIntersecting = _a.isIntersecting, rootBounds = _a.rootBounds;
|
|
33
|
-
var
|
|
34
|
-
|
|
34
|
+
var isScrolledAboveTargetTopCurrent = !!(rootBounds &&
|
|
35
|
+
boundingClientRect &&
|
|
36
|
+
rootBounds.bottom < boundingClientRect.top);
|
|
37
|
+
setShow(!isIntersecting && !isScrolledAboveTargetTopCurrent);
|
|
38
|
+
isScrolledAboveTargetTop.current = isScrolledAboveTargetTopCurrent;
|
|
35
39
|
}, { root: msgListPanel });
|
|
36
40
|
observer.observe(observedTarget);
|
|
37
41
|
return function () {
|
|
38
42
|
observer.disconnect();
|
|
39
43
|
};
|
|
40
44
|
}, [intersectionObserverIsSupported, messages, unreadCount]);
|
|
45
|
+
useEffect(function () {
|
|
46
|
+
/**
|
|
47
|
+
* Handle situation when scrollToBottom is called from another component when the msg list is scrolled above the observed target (unread separator).
|
|
48
|
+
* The intersection observer is not triggered when Element.scrollTo() is called. So we end up in a situation when we are scrolled to the bottom
|
|
49
|
+
* and at the same time scrolled above the observed target.
|
|
50
|
+
*/
|
|
51
|
+
if (unreadCount && isMessageListScrolledToBottom && isScrolledAboveTargetTop.current) {
|
|
52
|
+
setShow(true);
|
|
53
|
+
isScrolledAboveTargetTop.current = false;
|
|
54
|
+
}
|
|
55
|
+
}, [isMessageListScrolledToBottom, unreadCount]);
|
|
41
56
|
return { show: show && intersectionObserverIsSupported };
|
|
42
57
|
};
|
package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePrependMessagesCount.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAOzE,wBAAgB,yBAAyB,CACvC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"usePrependMessagesCount.d.ts","sourceRoot":"","sources":["../../../../../src/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAOzE,wBAAgB,yBAAyB,CACvC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,UAkEzE"}
|
|
@@ -27,7 +27,7 @@ export function usePrependedMessagesCount(messages, hasDateSeparator) {
|
|
|
27
27
|
// That in turn leads to incorrect index calculation in VirtualizedMessageList trying to access a message
|
|
28
28
|
// at non-existent index. Therefore, we ignore messages of status "sending" / "failed" in order they are
|
|
29
29
|
// not considered as prepended messages.
|
|
30
|
-
var firstMsgMovedAfterMessagesInExcludedStatus = (currentFirstMessage === null || currentFirstMessage === void 0 ? void 0 : currentFirstMessage.status) && STATUSES_EXCLUDED_FROM_PREPEND[currentFirstMessage.status];
|
|
30
|
+
var firstMsgMovedAfterMessagesInExcludedStatus = !!((currentFirstMessage === null || currentFirstMessage === void 0 ? void 0 : currentFirstMessage.status) && STATUSES_EXCLUDED_FROM_PREPEND[currentFirstMessage.status]);
|
|
31
31
|
if (noNewMessages || firstMsgMovedAfterMessagesInExcludedStatus) {
|
|
32
32
|
return previousNumItemsPrepended.current;
|
|
33
33
|
}
|
|
@@ -40,8 +40,8 @@ export function usePrependedMessagesCount(messages, hasDateSeparator) {
|
|
|
40
40
|
for (var prependedMessageCount = previousNumItemsPrepended.current; prependedMessageCount < messages.length; prependedMessageCount += 1) {
|
|
41
41
|
var messageIsFirstOnFirstLoadedPage = messages[prependedMessageCount].id === ((_b = firstMessageOnFirstLoadedPage.current) === null || _b === void 0 ? void 0 : _b.id);
|
|
42
42
|
if (messageIsFirstOnFirstLoadedPage) {
|
|
43
|
-
previousNumItemsPrepended.current = prependedMessageCount;
|
|
44
|
-
return
|
|
43
|
+
previousNumItemsPrepended.current = prependedMessageCount - firstRealMessageIndex;
|
|
44
|
+
return previousNumItemsPrepended.current;
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
// if no match has found, we have jumped - reset the prepended item count.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
2
|
import { MessageProps } from '../Message/types';
|
|
3
3
|
import { StreamMessage } from '../../context/ChannelStateContext';
|
|
4
|
-
import { DefaultStreamChatGenerics } from '../../types/types';
|
|
4
|
+
import { ChannelUnreadUiState, DefaultStreamChatGenerics } from '../../types/types';
|
|
5
5
|
import { ComponentContextValue, CustomClasses } from '../../context';
|
|
6
6
|
import { GroupStyle } from './utils';
|
|
7
|
-
import {
|
|
7
|
+
import { UserResponse } from 'stream-chat';
|
|
8
8
|
export interface RenderMessagesOptions<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> {
|
|
9
9
|
components: ComponentContextValue<StreamChatGenerics>;
|
|
10
10
|
lastReceivedMessageId: string | null;
|
|
@@ -18,16 +18,17 @@ export interface RenderMessagesOptions<StreamChatGenerics extends DefaultStreamC
|
|
|
18
18
|
* Props forwarded to the Message component.
|
|
19
19
|
*/
|
|
20
20
|
sharedMessageProps: SharedMessageProps<StreamChatGenerics>;
|
|
21
|
-
customClasses?: CustomClasses;
|
|
22
21
|
/**
|
|
23
|
-
* Current user's read
|
|
24
|
-
*
|
|
22
|
+
* Current user's channel read state used to render components reflecting unread state.
|
|
23
|
+
* It does not reflect the back-end state if a channel is marked read on mount.
|
|
24
|
+
* This is in order to keep the unread UI when an unread channel is open.
|
|
25
25
|
*/
|
|
26
|
-
|
|
26
|
+
channelUnreadUiState?: ChannelUnreadUiState<StreamChatGenerics>;
|
|
27
|
+
customClasses?: CustomClasses;
|
|
27
28
|
}
|
|
28
29
|
export type SharedMessageProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Omit<MessageProps<StreamChatGenerics>, MessagePropsToOmit>;
|
|
29
30
|
export type MessageRenderer<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = (options: RenderMessagesOptions<StreamChatGenerics>) => Array<ReactNode>;
|
|
30
31
|
type MessagePropsToOmit = 'channel' | 'groupStyles' | 'initialMessage' | 'lastReceivedId' | 'message' | 'readBy';
|
|
31
|
-
export declare function defaultRenderMessages<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ components, customClasses, lastReceivedMessageId: lastReceivedId, messageGroupStyles, messages,
|
|
32
|
+
export declare function defaultRenderMessages<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ channelUnreadUiState, components, customClasses, lastReceivedMessageId: lastReceivedId, messageGroupStyles, messages, readData, sharedMessageProps: messageProps, }: RenderMessagesOptions<StreamChatGenerics>): JSX.Element[];
|
|
32
33
|
export {};
|
|
33
34
|
//# sourceMappingURL=renderMessages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderMessages.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/renderMessages.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAY,SAAS,EAAE,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"renderMessages.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/renderMessages.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAY,SAAS,EAAE,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAU,MAAM,eAAe,CAAC;AAE7E,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,qBAAqB,CACpC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB;IAEhF,UAAU,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;IACtD,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/C,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACnD;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAClE;;OAEG;IACH,kBAAkB,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;IAC3D;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;IAChE,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,MAAM,MAAM,kBAAkB,CAC5B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAE/D,MAAM,MAAM,eAAe,CACzB,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,CAAC,OAAO,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;AAE7E,KAAK,kBAAkB,GACnB,SAAS,GACT,aAAa,GACb,gBAAgB,GAChB,gBAAgB,GAChB,SAAS,GACT,QAAQ,CAAC;AAEb,wBAAgB,qBAAqB,CACnC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,EACA,oBAAoB,EACpB,UAAU,EACV,aAAa,EACb,qBAAqB,EAAE,cAAc,EACrC,kBAAkB,EAClB,QAAQ,EACR,QAAQ,EACR,kBAAkB,EAAE,YAAY,GACjC,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,iBA6D3C"}
|
|
@@ -4,7 +4,7 @@ import { isDate } from '../../context';
|
|
|
4
4
|
import { CUSTOM_MESSAGE_TYPE } from '../../constants/messageTypes';
|
|
5
5
|
import { Message } from '../Message/Message';
|
|
6
6
|
export function defaultRenderMessages(_a) {
|
|
7
|
-
var components = _a.components, customClasses = _a.customClasses, lastReceivedId = _a.lastReceivedMessageId, messageGroupStyles = _a.messageGroupStyles, messages = _a.messages,
|
|
7
|
+
var channelUnreadUiState = _a.channelUnreadUiState, components = _a.components, customClasses = _a.customClasses, lastReceivedId = _a.lastReceivedMessageId, messageGroupStyles = _a.messageGroupStyles, messages = _a.messages, readData = _a.readData, messageProps = _a.sharedMessageProps;
|
|
8
8
|
var DateSeparator = components.DateSeparator, HeaderComponent = components.HeaderComponent, MessageSystem = components.MessageSystem, UnreadMessagesSeparator = components.UnreadMessagesSeparator;
|
|
9
9
|
return messages.map(function (message, index) {
|
|
10
10
|
if (message.customType === CUSTOM_MESSAGE_TYPE.date && message.date && isDate(message.date)) {
|
|
@@ -22,14 +22,14 @@ export function defaultRenderMessages(_a) {
|
|
|
22
22
|
var groupStyles = messageGroupStyles[message.id] || '';
|
|
23
23
|
var messageClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.message) || "str-chat__li str-chat__li--".concat(groupStyles);
|
|
24
24
|
var isNewestMessage = index === messages.length - 1;
|
|
25
|
-
var isLastReadMessage = (
|
|
25
|
+
var isLastReadMessage = (channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read_message_id) === message.id;
|
|
26
26
|
var showUnreadSeparator = isLastReadMessage &&
|
|
27
27
|
!isNewestMessage &&
|
|
28
|
-
((
|
|
28
|
+
((channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.first_unread_message_id) || (channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages) > 0); // unread count can be 0 if the user marks unread only own messages
|
|
29
29
|
return (React.createElement(Fragment, { key: message.id || message.created_at },
|
|
30
30
|
React.createElement("li", { className: messageClass, "data-message-id": message.id, "data-testid": messageClass },
|
|
31
31
|
React.createElement(Message, __assign({ groupStyles: [groupStyles], lastReceivedId: lastReceivedId, message: message, readBy: readData[message.id] || [] }, messageProps))),
|
|
32
32
|
showUnreadSeparator && UnreadMessagesSeparator && (React.createElement("li", { className: 'str-chat__li str-chat__unread-messages-separator-wrapper' },
|
|
33
|
-
React.createElement(UnreadMessagesSeparator, { unreadCount:
|
|
33
|
+
React.createElement(UnreadMessagesSeparator, { unreadCount: channelUnreadUiState.unread_messages })))));
|
|
34
34
|
});
|
|
35
35
|
}
|
|
@@ -4,6 +4,14 @@ import type { StreamMessage } from './ChannelStateContext';
|
|
|
4
4
|
import type { ChannelStateReducerAction } from '../components/Channel/channelState';
|
|
5
5
|
import type { CustomMentionHandler } from '../components/Message/hooks/useMentionsHandler';
|
|
6
6
|
import type { DefaultStreamChatGenerics, SendMessageOptions, UnknownType, UpdateMessageOptions } from '../types/types';
|
|
7
|
+
export type MarkReadWrapperOptions = {
|
|
8
|
+
/**
|
|
9
|
+
* Signal, whether the `channelUnreadUiState` should be updated.
|
|
10
|
+
* By default, the local state update is prevented when the Channel component is mounted.
|
|
11
|
+
* This is in order to keep the UI indicating the original unread state, when the user opens a channel.
|
|
12
|
+
*/
|
|
13
|
+
updateChannelUiUnreadState?: boolean;
|
|
14
|
+
};
|
|
7
15
|
export type MessageAttachments<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Array<Attachment<StreamChatGenerics>>;
|
|
8
16
|
export type MessageToSend<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
9
17
|
attachments?: MessageAttachments<StreamChatGenerics>;
|
|
@@ -29,7 +37,7 @@ export type ChannelActionContextValue<StreamChatGenerics extends DefaultStreamCh
|
|
|
29
37
|
loadMore: (limit?: number) => Promise<number>;
|
|
30
38
|
loadMoreNewer: (limit?: number) => Promise<number>;
|
|
31
39
|
loadMoreThread: () => Promise<void>;
|
|
32
|
-
markRead: () => void;
|
|
40
|
+
markRead: (options?: MarkReadWrapperOptions) => void;
|
|
33
41
|
onMentionsClick: CustomMentionHandler<StreamChatGenerics>;
|
|
34
42
|
onMentionsHover: CustomMentionHandler<StreamChatGenerics>;
|
|
35
43
|
openThread: (message: StreamMessage<StreamChatGenerics>, event?: React.BaseSyntheticEvent) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChannelActionContext.d.ts","sourceRoot":"","sources":["../../src/context/ChannelActionContext.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ChannelActionContext.d.ts","sourceRoot":"","sources":["../../src/context/ChannelActionContext.tsx"],"names":[],"mappings":"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"}
|