Skip to content

Commit

Permalink
refactor: move check if is thread main message to other hook
Browse files Browse the repository at this point in the history
  • Loading branch information
filipemarins committed Sep 22, 2022
1 parent 7c5a1c4 commit 08230fe
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 19 deletions.
4 changes: 3 additions & 1 deletion apps/meteor/client/views/room/MessageList/MessageList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import { isMessageFirstUnread } from './lib/isMessageFirstUnread';
import { isMessageNewDay } from './lib/isMessageNewDay';
import { isMessageSequential } from './lib/isMessageSequential';
import { isOwnUserMessage } from './lib/isOwnUserMessage';
import { isPreviousThreadMainMessage } from './lib/isPreviousThreadMainMessage';
import MessageHighlightProvider from './providers/MessageHighlightProvider';
import { MessageListProvider } from './providers/MessageListProvider';

Expand Down Expand Up @@ -45,9 +46,10 @@ export const MessageList = ({ rid }: MessageListProps): ReactElement => {
const isNewDay = isMessageNewDay(message, previous);
const isFirstUnread = isMessageFirstUnread(subscription, message, previous);
const isUserOwnMessage = isOwnUserMessage(message, subscription);
const isPreviousThreadShow = isPreviousThreadMainMessage(previous);
const shouldShowDivider = isNewDay || isFirstUnread;

const shouldShowAsSequential = isSequential && !isNewDay;
const shouldShowAsSequential = isSequential && !isNewDay && !isPreviousThreadShow;

const isSystemMessage = MessageTypes.isSystemMessage(message);
const shouldShowMessage = !isThreadMessage(message) && !isSystemMessage;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { IMessage, isThreadMessage } from '@rocket.chat/core-typings';
import { IMessage } from '@rocket.chat/core-typings';
import { differenceInSeconds } from 'date-fns';

import { MessageTypes } from '../../../../../app/ui-utils/lib/MessageTypes';
Expand Down Expand Up @@ -28,9 +28,5 @@ export const isMessageSequential = (current: IMessage, previous: IMessage | unde
return false;
}

if (isThreadMessage(previous) && previous.tshow) {
return false;
}

return differenceInSeconds(current.ts, previous.ts) < groupingRange;
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { IMessage, isThreadMessage } from '@rocket.chat/core-typings';

export const isPreviousThreadMainMessage = (previous: IMessage | undefined): boolean =>
!!previous && !!previous.tshow && isThreadMessage(previous);
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* eslint-env mocha */
import type { IMessage, IThreadMessage } from '@rocket.chat/core-typings';
import type { IMessage } from '@rocket.chat/core-typings';
import { expect } from 'chai';

import { MessageTypes } from '../../../../../../../app/ui-utils/lib/MessageTypes';
Expand Down Expand Up @@ -141,16 +141,4 @@ describe('isMessageSequential', () => {
};
expect(isMessageSequential(current, previous, TIME_RANGE_IN_SECONDS)).to.be.false;
});

it('should return false if previous message is thread preview', () => {
const previous: IThreadMessage = {
...baseMessage,
tmid: 'threadId',
tshow: true,
};
const current: IMessage = {
...baseMessage,
};
expect(isMessageSequential(current, previous, TIME_RANGE_IN_SECONDS)).to.be.false;
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/* eslint-env mocha */
import type { IThreadMessage } from '@rocket.chat/core-typings';
import { expect } from 'chai';

import { isPreviousThreadMainMessage } from '../../../../../../../client/views/room/MessageList/lib/isPreviousThreadMainMessage';

const date = new Date('2021-10-27T00:00:00.000Z');
const baseMessage = {
ts: date,
u: {
_id: 'userId',
name: 'userName',
username: 'userName',
},
msg: 'message',
rid: 'roomId',
_id: 'messageId',
_updatedAt: date,
urls: [],
};

describe('isPreviousThreadMainMessage', () => {
it('should return false if no previous message', () => {
expect(isPreviousThreadMainMessage(undefined)).to.be.false;
});

it('should return false if previous message is not thread preview', () => {
expect(isPreviousThreadMainMessage(baseMessage)).to.be.false;
});

it('should return true if previous message is thread preview', () => {
const previous: IThreadMessage = {
...baseMessage,
tmid: 'threadId',
tshow: true,
};
expect(isPreviousThreadMainMessage(previous)).to.be.true;
});
});

0 comments on commit 08230fe

Please sign in to comment.