stream-chat-react 11.12.1 → 11.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Window-40a618cb.js → Window-44a85f63.js} +230 -94
- package/dist/browser.full-bundle.js +309 -138
- package/dist/browser.full-bundle.js.map +1 -1
- package/dist/browser.full-bundle.min.js +3 -3
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/components/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +122 -47
- package/dist/components/Channel/utils.d.ts +27 -0
- package/dist/components/Channel/utils.d.ts.map +1 -1
- package/dist/components/Channel/utils.js +56 -0
- package/dist/components/Emojis/index.cjs.js +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.d.ts +1 -0
- package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.js +1 -0
- package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageListComponents.js +20 -7
- package/dist/components/MessageList/hooks/useMarkRead.js +2 -3
- package/dist/components/MessageList/renderMessages.d.ts +5 -5
- package/dist/components/MessageList/renderMessages.d.ts.map +1 -1
- package/dist/components/MessageList/renderMessages.js +44 -22
- package/dist/components/MessageList/utils.d.ts +10 -1
- package/dist/components/MessageList/utils.d.ts.map +1 -1
- package/dist/components/MessageList/utils.js +3 -0
- package/dist/constants/limits.d.ts +1 -0
- package/dist/constants/limits.d.ts.map +1 -1
- package/dist/constants/limits.js +1 -0
- package/dist/index.cjs.js +67 -31
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -1,35 +1,57 @@
|
|
|
1
1
|
import { __assign } from "tslib";
|
|
2
2
|
import React, { Fragment } from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { isDateSeparatorMessage } from './utils';
|
|
4
|
+
import { Message } from '../Message';
|
|
4
5
|
import { CUSTOM_MESSAGE_TYPE } from '../../constants/messageTypes';
|
|
5
|
-
import { Message } from '../Message/Message';
|
|
6
6
|
export function defaultRenderMessages(_a) {
|
|
7
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
var renderedMessages = [];
|
|
10
|
+
var firstMessage;
|
|
11
|
+
for (var index = 0; index < messages.length; index++) {
|
|
12
|
+
var message = messages[index];
|
|
13
|
+
if (isDateSeparatorMessage(message)) {
|
|
14
|
+
renderedMessages.push(React.createElement("li", { key: "".concat(message.date.toISOString(), "-i") },
|
|
12
15
|
React.createElement(DateSeparator, { date: message.date, formatDate: messageProps.formatDate, unread: message.unread })));
|
|
13
16
|
}
|
|
14
|
-
if (message.customType === CUSTOM_MESSAGE_TYPE.intro && HeaderComponent) {
|
|
15
|
-
|
|
17
|
+
else if (message.customType === CUSTOM_MESSAGE_TYPE.intro && HeaderComponent) {
|
|
18
|
+
renderedMessages.push(React.createElement("li", { key: 'intro' },
|
|
16
19
|
React.createElement(HeaderComponent, null)));
|
|
17
20
|
}
|
|
18
|
-
if (message.type === 'system') {
|
|
19
|
-
|
|
21
|
+
else if (message.type === 'system') {
|
|
22
|
+
renderedMessages.push(React.createElement("li", { key: message.id || message.created_at },
|
|
20
23
|
React.createElement(MessageSystem, { message: message })));
|
|
21
24
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
25
|
+
else {
|
|
26
|
+
if (!firstMessage) {
|
|
27
|
+
firstMessage = message;
|
|
28
|
+
}
|
|
29
|
+
var groupStyles = messageGroupStyles[message.id] || '';
|
|
30
|
+
var messageClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.message) || "str-chat__li str-chat__li--".concat(groupStyles);
|
|
31
|
+
var createdAtTimestamp = message.created_at && new Date(message.created_at).getTime();
|
|
32
|
+
var lastReadTimestamp = channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read.getTime();
|
|
33
|
+
var isFirstMessage = (firstMessage === null || firstMessage === void 0 ? void 0 : firstMessage.id) && firstMessage.id === message.id;
|
|
34
|
+
var isNewestMessage = index === messages.length - 1;
|
|
35
|
+
var isLastReadMessage = (channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read_message_id) === message.id ||
|
|
36
|
+
(!(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages) && createdAtTimestamp === lastReadTimestamp);
|
|
37
|
+
var isFirstUnreadMessage = (channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.first_unread_message_id) === message.id ||
|
|
38
|
+
(!!(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages) &&
|
|
39
|
+
!!createdAtTimestamp &&
|
|
40
|
+
!!lastReadTimestamp &&
|
|
41
|
+
createdAtTimestamp > lastReadTimestamp &&
|
|
42
|
+
isFirstMessage);
|
|
43
|
+
var showUnreadSeparatorAbove = !(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read_message_id) && isFirstUnreadMessage;
|
|
44
|
+
var showUnreadSeparatorBelow = isLastReadMessage &&
|
|
45
|
+
!isNewestMessage &&
|
|
46
|
+
((channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.first_unread_message_id) || !!(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages)); // this part has to be here as we do not mark channel read when sending a message
|
|
47
|
+
renderedMessages.push(React.createElement(Fragment, { key: message.id || message.created_at },
|
|
48
|
+
showUnreadSeparatorAbove && UnreadMessagesSeparator && (React.createElement("li", { className: 'str-chat__li str-chat__unread-messages-separator-wrapper' },
|
|
49
|
+
React.createElement(UnreadMessagesSeparator, { unreadCount: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages }))),
|
|
50
|
+
React.createElement("li", { className: messageClass, "data-message-id": message.id, "data-testid": messageClass },
|
|
51
|
+
React.createElement(Message, __assign({ groupStyles: [groupStyles], lastReceivedId: lastReceivedId, message: message, readBy: readData[message.id] || [] }, messageProps))),
|
|
52
|
+
showUnreadSeparatorBelow && UnreadMessagesSeparator && (React.createElement("li", { className: 'str-chat__li str-chat__unread-messages-separator-wrapper' },
|
|
53
|
+
React.createElement(UnreadMessagesSeparator, { unreadCount: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages })))));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return renderedMessages;
|
|
35
57
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import
|
|
2
|
+
import { CUSTOM_MESSAGE_TYPE } from '../../constants/messageTypes';
|
|
3
|
+
import type { MessageLabel, UserResponse } from 'stream-chat';
|
|
3
4
|
import type { DefaultStreamChatGenerics } from '../../types/types';
|
|
4
5
|
import type { StreamMessage } from '../../context/ChannelStateContext';
|
|
5
6
|
type ProcessMessagesParams<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
@@ -44,5 +45,13 @@ export type GroupStyle = '' | 'middle' | 'top' | 'bottom' | 'single';
|
|
|
44
45
|
export declare const getGroupStyles: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(message: StreamMessage<StreamChatGenerics>, previousMessage: StreamMessage<StreamChatGenerics>, nextMessage: StreamMessage<StreamChatGenerics>, noGroupByUser: boolean) => GroupStyle;
|
|
45
46
|
export declare const hasMoreMessagesProbably: (returnedCountMessages: number, limit: number) => boolean;
|
|
46
47
|
export declare const hasNotMoreMessages: (returnedCountMessages: number, limit: number) => boolean;
|
|
48
|
+
type DateSeparatorMessage = {
|
|
49
|
+
customType: typeof CUSTOM_MESSAGE_TYPE.date;
|
|
50
|
+
date: Date;
|
|
51
|
+
id: string;
|
|
52
|
+
type: MessageLabel;
|
|
53
|
+
unread: boolean;
|
|
54
|
+
};
|
|
55
|
+
export declare function isDateSeparatorMessage<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(message: StreamMessage<StreamChatGenerics>): message is DateSeparatorMessage;
|
|
47
56
|
export {};
|
|
48
57
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/utils.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/utils.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAInE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAGvE,KAAK,qBAAqB,CACxB,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kEAAkE;IAClE,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,+FAA+F;IAC/F,sBAAsB,CAAC,EAAE,KAAK,CAAC,QAAQ,CACrC,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAC,CACpE,CAAC;CACH,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,8KAuF3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,MAAM,GAAG,IAAI,WAQrD,CAAC;AAGF,eAAO,MAAM,eAAe,oJAY3B,CAAC;AAEF,eAAO,MAAM,aAAa;eAIU,IAAI;;mCACnB,OAAO,uDAqC3B,CAAC;AAEF,eAAO,MAAM,WAAW,qJAIL,MAAM,wCAgDxB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,EAAE,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAErE,eAAO,MAAM,cAAc,oPAMV,OAAO,KACrB,UA2CF,CAAC;AAOF,eAAO,MAAM,uBAAuB,0BAA2B,MAAM,SAAS,MAAM,YACpD,CAAC;AAGjC,eAAO,MAAM,kBAAkB,0BAA2B,MAAM,SAAS,MAAM,YAChD,CAAC;AAEhC,KAAK,oBAAoB,GAAG;IAC1B,UAAU,EAAE,OAAO,mBAAmB,CAAC,IAAI,CAAC;IAC5C,IAAI,EAAE,IAAI,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,GAAG,OAAO,IAAI,oBAAoB,CAE7E"}
|
|
@@ -226,3 +226,6 @@ export var hasMoreMessagesProbably = function (returnedCountMessages, limit) {
|
|
|
226
226
|
export var hasNotMoreMessages = function (returnedCountMessages, limit) {
|
|
227
227
|
return returnedCountMessages < limit;
|
|
228
228
|
};
|
|
229
|
+
export function isDateSeparatorMessage(message) {
|
|
230
|
+
return message.customType === CUSTOM_MESSAGE_TYPE.date && !!message.date && isDate(message.date);
|
|
231
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare const DEFAULT_INITIAL_CHANNEL_PAGE_SIZE = 25;
|
|
2
2
|
export declare const DEFAULT_NEXT_CHANNEL_PAGE_SIZE = 100;
|
|
3
|
+
export declare const DEFAULT_JUMP_TO_PAGE_SIZE = 100;
|
|
3
4
|
export declare const DEFAULT_THREAD_PAGE_SIZE = 50;
|
|
4
5
|
export declare const DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD = 250;
|
|
5
6
|
//# sourceMappingURL=limits.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/constants/limits.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,kCAAkC,MAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/constants/limits.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAC7C,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,kCAAkC,MAAM,CAAC"}
|
package/dist/constants/limits.js
CHANGED
package/dist/index.cjs.js
CHANGED
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var Window = require('./Window-
|
|
5
|
+
var Window = require('./Window-44a85f63.js');
|
|
6
6
|
var React = require('react');
|
|
7
7
|
var streamChat = require('stream-chat');
|
|
8
|
-
var reactVirtuoso = require('react-virtuoso');
|
|
9
8
|
var throttle = require('lodash.throttle');
|
|
10
9
|
require('emoji-regex');
|
|
11
10
|
require('linkifyjs');
|
|
12
11
|
require('lodash.uniqby');
|
|
12
|
+
var reactVirtuoso = require('react-virtuoso');
|
|
13
13
|
require('@braintree/sanitize-url');
|
|
14
14
|
require('react-image-gallery');
|
|
15
15
|
require('react-dom');
|
|
@@ -425,7 +425,7 @@ var useMarkRead = function (_a) {
|
|
|
425
425
|
unreadMessages > 0;
|
|
426
426
|
};
|
|
427
427
|
var onVisibilityChange = function () {
|
|
428
|
-
if (shouldMarkRead(
|
|
428
|
+
if (shouldMarkRead(channel.countUnread()))
|
|
429
429
|
markRead();
|
|
430
430
|
};
|
|
431
431
|
var handleMessageNew = function (event) {
|
|
@@ -447,7 +447,6 @@ var useMarkRead = function (_a) {
|
|
|
447
447
|
}
|
|
448
448
|
else if (newMessageToCurrentChannel &&
|
|
449
449
|
mainChannelUpdated &&
|
|
450
|
-
!isOwnMessage &&
|
|
451
450
|
shouldMarkRead(channel.countUnread())) {
|
|
452
451
|
markRead();
|
|
453
452
|
}
|
|
@@ -456,7 +455,7 @@ var useMarkRead = function (_a) {
|
|
|
456
455
|
document.addEventListener('visibilitychange', onVisibilityChange);
|
|
457
456
|
var hasScrolledToBottom = previousRenderMessageListScrolledToBottom.current !== isMessageListScrolledToBottom &&
|
|
458
457
|
isMessageListScrolledToBottom;
|
|
459
|
-
if (
|
|
458
|
+
if (hasScrolledToBottom && shouldMarkRead(channel.countUnread()))
|
|
460
459
|
markRead();
|
|
461
460
|
previousRenderMessageListScrolledToBottom.current = isMessageListScrolledToBottom;
|
|
462
461
|
return function () {
|
|
@@ -600,32 +599,54 @@ var InfiniteScroll = function (props) {
|
|
|
600
599
|
function defaultRenderMessages(_a) {
|
|
601
600
|
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;
|
|
602
601
|
var DateSeparator = components.DateSeparator, HeaderComponent = components.HeaderComponent, MessageSystem = components.MessageSystem, UnreadMessagesSeparator = components.UnreadMessagesSeparator;
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
602
|
+
var renderedMessages = [];
|
|
603
|
+
var firstMessage;
|
|
604
|
+
for (var index = 0; index < messages.length; index++) {
|
|
605
|
+
var message = messages[index];
|
|
606
|
+
if (Window.isDateSeparatorMessage(message)) {
|
|
607
|
+
renderedMessages.push(React__default["default"].createElement("li", { key: "".concat(message.date.toISOString(), "-i") },
|
|
606
608
|
React__default["default"].createElement(DateSeparator, { date: message.date, formatDate: messageProps.formatDate, unread: message.unread })));
|
|
607
609
|
}
|
|
608
|
-
if (message.customType === Window.CUSTOM_MESSAGE_TYPE.intro && HeaderComponent) {
|
|
609
|
-
|
|
610
|
+
else if (message.customType === Window.CUSTOM_MESSAGE_TYPE.intro && HeaderComponent) {
|
|
611
|
+
renderedMessages.push(React__default["default"].createElement("li", { key: 'intro' },
|
|
610
612
|
React__default["default"].createElement(HeaderComponent, null)));
|
|
611
613
|
}
|
|
612
|
-
if (message.type === 'system') {
|
|
613
|
-
|
|
614
|
+
else if (message.type === 'system') {
|
|
615
|
+
renderedMessages.push(React__default["default"].createElement("li", { key: message.id || message.created_at },
|
|
614
616
|
React__default["default"].createElement(MessageSystem, { message: message })));
|
|
615
617
|
}
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
618
|
+
else {
|
|
619
|
+
if (!firstMessage) {
|
|
620
|
+
firstMessage = message;
|
|
621
|
+
}
|
|
622
|
+
var groupStyles = messageGroupStyles[message.id] || '';
|
|
623
|
+
var messageClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.message) || "str-chat__li str-chat__li--".concat(groupStyles);
|
|
624
|
+
var createdAtTimestamp = message.created_at && new Date(message.created_at).getTime();
|
|
625
|
+
var lastReadTimestamp = channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read.getTime();
|
|
626
|
+
var isFirstMessage = (firstMessage === null || firstMessage === void 0 ? void 0 : firstMessage.id) && firstMessage.id === message.id;
|
|
627
|
+
var isNewestMessage = index === messages.length - 1;
|
|
628
|
+
var isLastReadMessage = (channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read_message_id) === message.id ||
|
|
629
|
+
(!(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages) && createdAtTimestamp === lastReadTimestamp);
|
|
630
|
+
var isFirstUnreadMessage = (channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.first_unread_message_id) === message.id ||
|
|
631
|
+
(!!(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages) &&
|
|
632
|
+
!!createdAtTimestamp &&
|
|
633
|
+
!!lastReadTimestamp &&
|
|
634
|
+
createdAtTimestamp > lastReadTimestamp &&
|
|
635
|
+
isFirstMessage);
|
|
636
|
+
var showUnreadSeparatorAbove = !(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read_message_id) && isFirstUnreadMessage;
|
|
637
|
+
var showUnreadSeparatorBelow = isLastReadMessage &&
|
|
638
|
+
!isNewestMessage &&
|
|
639
|
+
((channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.first_unread_message_id) || !!(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages)); // this part has to be here as we do not mark channel read when sending a message
|
|
640
|
+
renderedMessages.push(React__default["default"].createElement(React.Fragment, { key: message.id || message.created_at },
|
|
641
|
+
showUnreadSeparatorAbove && UnreadMessagesSeparator && (React__default["default"].createElement("li", { className: 'str-chat__li str-chat__unread-messages-separator-wrapper' },
|
|
642
|
+
React__default["default"].createElement(UnreadMessagesSeparator, { unreadCount: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages }))),
|
|
643
|
+
React__default["default"].createElement("li", { className: messageClass, "data-message-id": message.id, "data-testid": messageClass },
|
|
644
|
+
React__default["default"].createElement(Window.Message, Window.__assign({ groupStyles: [groupStyles], lastReceivedId: lastReceivedId, message: message, readBy: readData[message.id] || [] }, messageProps))),
|
|
645
|
+
showUnreadSeparatorBelow && UnreadMessagesSeparator && (React__default["default"].createElement("li", { className: 'str-chat__li str-chat__unread-messages-separator-wrapper' },
|
|
646
|
+
React__default["default"].createElement(UnreadMessagesSeparator, { unreadCount: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages })))));
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
return renderedMessages;
|
|
629
650
|
}
|
|
630
651
|
|
|
631
652
|
var MessageListWithContext = function (props) {
|
|
@@ -1048,7 +1069,7 @@ var Footer = function () {
|
|
|
1048
1069
|
};
|
|
1049
1070
|
var messageRenderer = function (virtuosoIndex, _data, virtuosoContext) {
|
|
1050
1071
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
1051
|
-
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, sortReactionDetails = virtuosoContext.sortReactionDetails, sortReactions = virtuosoContext.sortReactions, _h = virtuosoContext.unreadMessageCount, unreadMessageCount = _h === void 0 ? 0 : _h, UnreadMessagesSeparator = virtuosoContext.UnreadMessagesSeparator, virtuosoRef = virtuosoContext.virtuosoRef;
|
|
1072
|
+
var additionalMessageInputProps = virtuosoContext.additionalMessageInputProps, closeReactionSelectorOnClick = virtuosoContext.closeReactionSelectorOnClick, customMessageActions = virtuosoContext.customMessageActions, customMessageRenderer = virtuosoContext.customMessageRenderer, DateSeparator = virtuosoContext.DateSeparator, firstUnreadMessageId = virtuosoContext.firstUnreadMessageId, lastReadDate = virtuosoContext.lastReadDate, 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, sortReactionDetails = virtuosoContext.sortReactionDetails, sortReactions = virtuosoContext.sortReactions, _h = virtuosoContext.unreadMessageCount, unreadMessageCount = _h === void 0 ? 0 : _h, UnreadMessagesSeparator = virtuosoContext.UnreadMessagesSeparator, virtuosoRef = virtuosoContext.virtuosoRef;
|
|
1052
1073
|
var streamMessageIndex = calculateItemIndex(virtuosoIndex, numItemsPrepended);
|
|
1053
1074
|
if (customMessageRenderer) {
|
|
1054
1075
|
return customMessageRenderer(messageList, streamMessageIndex);
|
|
@@ -1056,7 +1077,7 @@ var messageRenderer = function (virtuosoIndex, _data, virtuosoContext) {
|
|
|
1056
1077
|
var message = messageList[streamMessageIndex];
|
|
1057
1078
|
if (!message)
|
|
1058
1079
|
return React__default["default"].createElement("div", { style: { height: '1px' } }); // returning null or zero height breaks the virtuoso
|
|
1059
|
-
if (
|
|
1080
|
+
if (Window.isDateSeparatorMessage(message)) {
|
|
1060
1081
|
return DateSeparator ? React__default["default"].createElement(DateSeparator, { date: message.date, unread: message.unread }) : null;
|
|
1061
1082
|
}
|
|
1062
1083
|
if (message.type === 'system') {
|
|
@@ -1072,12 +1093,25 @@ var messageRenderer = function (virtuosoIndex, _data, virtuosoContext) {
|
|
|
1072
1093
|
(maybePrevMessage && Window.isMessageEdited(maybePrevMessage)));
|
|
1073
1094
|
var endOfGroup = shouldGroupByUser &&
|
|
1074
1095
|
(((_e = message.user) === null || _e === void 0 ? void 0 : _e.id) !== ((_f = maybeNextMessage === null || maybeNextMessage === void 0 ? void 0 : maybeNextMessage.user) === null || _f === void 0 ? void 0 : _f.id) || Window.isMessageEdited(message));
|
|
1096
|
+
var createdAtTimestamp = message.created_at && new Date(message.created_at).getTime();
|
|
1097
|
+
var lastReadTimestamp = lastReadDate === null || lastReadDate === void 0 ? void 0 : lastReadDate.getTime();
|
|
1098
|
+
var isFirstMessage = streamMessageIndex === 0;
|
|
1075
1099
|
var isNewestMessage = lastReadMessageId === lastReceivedMessageId;
|
|
1076
|
-
var isLastReadMessage = message.id === lastReadMessageId
|
|
1077
|
-
|
|
1100
|
+
var isLastReadMessage = message.id === lastReadMessageId ||
|
|
1101
|
+
(!unreadMessageCount && createdAtTimestamp === lastReadTimestamp);
|
|
1102
|
+
var isFirstUnreadMessage = firstUnreadMessageId === message.id ||
|
|
1103
|
+
(!!unreadMessageCount &&
|
|
1104
|
+
createdAtTimestamp &&
|
|
1105
|
+
lastReadTimestamp &&
|
|
1106
|
+
createdAtTimestamp > lastReadTimestamp &&
|
|
1107
|
+
isFirstMessage);
|
|
1108
|
+
var showUnreadSeparatorAbove = !lastReadMessageId && isFirstUnreadMessage;
|
|
1109
|
+
var showUnreadSeparatorBelow = isLastReadMessage && !isNewestMessage && (firstUnreadMessageId || !!unreadMessageCount);
|
|
1078
1110
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
1111
|
+
showUnreadSeparatorAbove && (React__default["default"].createElement("div", { className: 'str-chat__unread-messages-separator-wrapper' },
|
|
1112
|
+
React__default["default"].createElement(UnreadMessagesSeparator, { unreadCount: unreadMessageCount }))),
|
|
1079
1113
|
React__default["default"].createElement(Window.Message, { additionalMessageInputProps: additionalMessageInputProps, autoscrollToBottom: (_g = virtuosoRef.current) === null || _g === void 0 ? void 0 : _g.autoscrollToBottom, closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: customMessageActions, endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, groupedByUser: groupedByUser, lastReceivedId: lastReceivedMessageId, message: message, Message: MessageUIComponent, messageActions: messageActions, readBy: ownMessagesReadByOthers[message.id] || [], sortReactionDetails: sortReactionDetails, sortReactions: sortReactions }),
|
|
1080
|
-
|
|
1114
|
+
showUnreadSeparatorBelow && (React__default["default"].createElement("div", { className: 'str-chat__unread-messages-separator-wrapper' },
|
|
1081
1115
|
React__default["default"].createElement(UnreadMessagesSeparator, { unreadCount: unreadMessageCount })))));
|
|
1082
1116
|
};
|
|
1083
1117
|
|
|
@@ -1278,6 +1312,7 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
1278
1312
|
DateSeparator: DateSeparator,
|
|
1279
1313
|
firstUnreadMessageId: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.first_unread_message_id,
|
|
1280
1314
|
head: head,
|
|
1315
|
+
lastReadDate: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read,
|
|
1281
1316
|
lastReadMessageId: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read_message_id,
|
|
1282
1317
|
lastReceivedMessageId: lastReceivedMessageId,
|
|
1283
1318
|
loadingMore: loadingMore,
|
|
@@ -1310,7 +1345,7 @@ function VirtualizedMessageList(props) {
|
|
|
1310
1345
|
return (React__default["default"].createElement(VirtualizedMessageListWithContext, Window.__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)));
|
|
1311
1346
|
}
|
|
1312
1347
|
|
|
1313
|
-
var version = '11.12.
|
|
1348
|
+
var version = '11.12.2';
|
|
1314
1349
|
|
|
1315
1350
|
var useChat = function (_a) {
|
|
1316
1351
|
var _b, _c;
|
|
@@ -1844,6 +1879,7 @@ exports.insertIntro = Window.insertIntro;
|
|
|
1844
1879
|
exports.isAudioAttachment = Window.isAudioAttachment;
|
|
1845
1880
|
exports.isChannel = Window.isChannel;
|
|
1846
1881
|
exports.isDate = Window.isDate;
|
|
1882
|
+
exports.isDateSeparatorMessage = Window.isDateSeparatorMessage;
|
|
1847
1883
|
exports.isDayOrMoment = Window.isDayOrMoment;
|
|
1848
1884
|
exports.isFileAttachment = Window.isFileAttachment;
|
|
1849
1885
|
exports.isGalleryAttachmentType = Window.isGalleryAttachmentType;
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "11.12.
|
|
1
|
+
export declare const version = "11.12.2";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export var version = '11.12.
|
|
1
|
+
export var version = '11.12.2';
|
package/package.json
CHANGED