Skip to content

Commit 59f11f2

Browse files
committed
hide deleted messages and handle DateSeparator
1 parent 71ded65 commit 59f11f2

File tree

3 files changed

+25
-6
lines changed

3 files changed

+25
-6
lines changed

src/components/MessageList/MessageList.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ class MessageList extends PureComponent {
238238
EmptyStateIndicator={this.props.EmptyStateIndicator}
239239
HeaderComponent={this.props.HeaderComponent}
240240
headerPosition={this.props.headerPosition}
241+
hideDeletedMessages={this.props.hideDeletedMessages}
241242
messages={this.props.messages}
242243
MessageSystem={this.props.MessageSystem}
243244
noGroupByUser={this.props.noGroupByUser}
@@ -322,6 +323,8 @@ MessageList.propTypes = {
322323
dateSeparator: PropTypes.elementType,
323324
/** Disables the injection of date separator components, defaults to false */
324325
disableDateSeparator: PropTypes.bool,
326+
/** Hides the MessageDeleted components from the list, defaults to false */
327+
hideDeletedMessages: PropTypes.bool,
325328
/** Turn off grouping of messages by user */
326329
noGroupByUser: PropTypes.bool,
327330
/** render HTML instead of markdown. Posting HTML is only allowed server-side */

src/components/MessageList/MessageListInner.js

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,18 @@ const getReadStates = (messages, read) => {
3535
return readData;
3636
};
3737

38-
const insertDates = (messages, lastRead, userID) => {
38+
const insertDates = (messages, lastRead, userID, hideDeletedMessages) => {
3939
let unread = false;
40+
let lastDateSeparator;
4041
const newMessages = [];
4142

4243
for (let i = 0, l = messages.length; i < l; i += 1) {
4344
const message = messages[i];
4445

46+
if (hideDeletedMessages && message.type === 'deleted') {
47+
continue;
48+
}
49+
4550
if (message.type === 'message.read') {
4651
newMessages.push(message);
4752
continue;
@@ -56,19 +61,27 @@ const insertDates = (messages, lastRead, userID) => {
5661

5762
if (!unread) {
5863
unread = lastRead && new Date(lastRead) < message.created_at;
59-
// userId check makes sure New is not shown for current user messages
60-
if (unread && message.user.id !== userID)
64+
65+
// do not show date separator for current user's messages
66+
if (unread && message.user.id !== userID) {
6167
newMessages.push({
6268
type: 'message.date',
6369
date: message.created_at,
6470
unread,
6571
});
72+
}
6673
}
6774

6875
if (
69-
(i === 0 || messageDate !== prevMessageDate) &&
70-
newMessages?.[newMessages.length - 1]?.type !== 'message.date' // prevent two subsequent DateSeparator
76+
(i === 0 ||
77+
messageDate !== prevMessageDate ||
78+
(hideDeletedMessages &&
79+
messages[i - 1]?.type === 'deleted' &&
80+
lastDateSeparator !== messageDate)) &&
81+
newMessages?.[newMessages.length - 1]?.type !== 'message.date' // do not show two date separators in a row
7182
) {
83+
lastDateSeparator = messageDate;
84+
7285
newMessages.push(
7386
{ type: 'message.date', date: message.created_at },
7487
message,
@@ -188,6 +201,7 @@ const MessageListInner = (props) => {
188201
EmptyStateIndicator,
189202
HeaderComponent,
190203
headerPosition,
204+
hideDeletedMessages = false,
191205
internalInfiniteScrollProps,
192206
internalMessageProps,
193207
messages,
@@ -205,7 +219,7 @@ const MessageListInner = (props) => {
205219
const messageWithDates =
206220
disableDateSeparator || threadList
207221
? messages
208-
: insertDates(messages, lastRead, client.userID);
222+
: insertDates(messages, lastRead, client.userID, hideDeletedMessages);
209223

210224
if (HeaderComponent) return insertIntro(messageWithDates, headerPosition);
211225

@@ -215,6 +229,7 @@ const MessageListInner = (props) => {
215229
disableDateSeparator,
216230
HeaderComponent,
217231
headerPosition,
232+
hideDeletedMessages,
218233
lastRead,
219234
messages,
220235
threadList,

types/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,7 @@ export interface MessageListProps {
592592
dateSeparator?: React.ElementType<DateSeparatorProps>;
593593
DateSeparator?: React.ElementType<DateSeparatorProps>;
594594
disableDateSeparator?: boolean;
595+
hideDeletedMessages?: boolean;
595596
/** Turn off grouping of messages by user */
596597
noGroupByUser?: boolean;
597598
/** Weather its a thread of no. Default - false */

0 commit comments

Comments
 (0)