Browse Source

Limit message collapsing to 2 minutes between messages

pull/2043/head
Gabe Kangas 3 years ago
parent
commit
7dc2a1a4bc
No known key found for this signature in database
GPG Key ID: 9A56337728BC81EA
  1. 17
      web/components/chat/ChatContainer/ChatContainer.tsx

17
web/components/chat/ChatContainer/ChatContainer.tsx

@ -86,8 +86,8 @@ export default function ChatContainer(props: Props) { @@ -86,8 +86,8 @@ export default function ChatContainer(props: Props) {
showModeratorMenu={isModerator} // Moderators have access to an additional menu
highlightString={usernameToHighlight} // What to highlight in the message
sentBySelf={message.user?.id === chatUserId} // The local user sent this message
sameUserAsLast={isSameUserAsLast(messages, index)}
isAuthorModerator={(message as ChatMessage).user.scopes.includes('MODERATOR')}
sameUserAsLast={shouldCollapseMessages(messages, index)}
isAuthorModerator={(message as ChatMessage).user.scopes?.includes('MODERATOR')}
key={message.id}
/>
);
@ -159,7 +159,7 @@ export default function ChatContainer(props: Props) { @@ -159,7 +159,7 @@ export default function ChatContainer(props: Props) {
);
}
function isSameUserAsLast(messages: ChatMessage[], index: number): boolean {
function shouldCollapseMessages(messages: ChatMessage[], index: number): boolean {
if (messages.length < 2) {
return false;
}
@ -173,6 +173,17 @@ function isSameUserAsLast(messages: ChatMessage[], index: number): boolean { @@ -173,6 +173,17 @@ function isSameUserAsLast(messages: ChatMessage[], index: number): boolean {
return false;
}
if (!lastMessage.timestamp || !message.timestamp) {
return false;
}
const maxTimestampDelta = 1000 * 60 * 2; // 2 minutes
const lastTimestamp = new Date(lastMessage.timestamp).getTime();
const thisTimestamp = new Date(message.timestamp).getTime();
if (thisTimestamp - lastTimestamp > maxTimestampDelta) {
return false;
}
return id === lastMessage?.user.id;
}

Loading…
Cancel
Save