Skip to content
This repository has been archived by the owner on Sep 11, 2024. It is now read-only.

Commit

Permalink
Don't form continuations on either side of a thread root (#8408)
Browse files Browse the repository at this point in the history
  • Loading branch information
t3chguy authored Apr 26, 2022
1 parent f85e178 commit a70f117
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 7 deletions.
10 changes: 7 additions & 3 deletions src/components/structures/MessagePanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,13 @@ export function shouldFormContinuation(
mxEvent.sender.name !== prevEvent.sender.name ||
mxEvent.sender.getMxcAvatarUrl() !== prevEvent.sender.getMxcAvatarUrl()) return false;

// Thread summaries in the main timeline should break up a continuation
if (threadsEnabled && prevEvent.isThreadRoot &&
timelineRenderingType !== TimelineRenderingType.Thread) return false;
// Thread summaries in the main timeline should break up a continuation on both sides
if (threadsEnabled &&
(mxEvent.isThreadRoot || prevEvent.isThreadRoot) &&
timelineRenderingType !== TimelineRenderingType.Thread
) {
return false;
}

// if we don't have tile for previous event then it was shown by showHiddenEvents and has no SenderProfile
if (!haveRendererForEvent(prevEvent, showHiddenEvents)) return false;
Expand Down
23 changes: 19 additions & 4 deletions test/components/structures/MessagePanel-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -674,6 +674,20 @@ describe('MessagePanel', function() {

describe("shouldFormContinuation", () => {
it("does not form continuations from thread roots", () => {
const message1 = TestUtilsMatrix.mkMessage({
event: true,
room: "!room:id",
user: "@user:id",
msg: "Here is a message in the main timeline",
});

const message2 = TestUtilsMatrix.mkMessage({
event: true,
room: "!room:id",
user: "@user:id",
msg: "And here's another message in the main timeline",
});

const threadRoot = TestUtilsMatrix.mkMessage({
event: true,
room: "!room:id",
Expand All @@ -682,14 +696,15 @@ describe("shouldFormContinuation", () => {
});
jest.spyOn(threadRoot, "isThreadRoot", "get").mockReturnValue(true);

const message = TestUtilsMatrix.mkMessage({
const message3 = TestUtilsMatrix.mkMessage({
event: true,
room: "!room:id",
user: "@user:id",
msg: "And here's another message in the main timeline",
msg: "And here's another message in the main timeline after the thread root",
});

expect(shouldFormContinuation(threadRoot, message, false, true)).toEqual(false);
expect(shouldFormContinuation(message, threadRoot, false, true)).toEqual(true);
expect(shouldFormContinuation(message1, message2, false, true)).toEqual(true);
expect(shouldFormContinuation(message2, threadRoot, false, true)).toEqual(false);
expect(shouldFormContinuation(threadRoot, message3, false, true)).toEqual(false);
});
});

0 comments on commit a70f117

Please sign in to comment.