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

Commit c5633a2

Browse files
author
Kerry
authored
Live location sharing: don't group beacon info with room creation summary (#8468)
* dont group beacon info with room creation summary Signed-off-by: Kerry Archibald <[email protected]> * remove debugs Signed-off-by: Kerry Archibald <[email protected]> * add comment Signed-off-by: Kerry Archibald <[email protected]> * update comment Signed-off-by: Kerry Archibald <[email protected]>
1 parent 3b1e715 commit c5633a2

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

src/components/structures/MessagePanel.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { MatrixEvent } from 'matrix-js-sdk/src/models/event';
2323
import { Relations } from "matrix-js-sdk/src/models/relations";
2424
import { logger } from 'matrix-js-sdk/src/logger';
2525
import { RoomStateEvent } from "matrix-js-sdk/src/models/room-state";
26+
import { M_BEACON_INFO } from 'matrix-js-sdk/src/@types/beacon';
2627

2728
import shouldHideEvent from '../../shouldHideEvent';
2829
import { wantsDateSeparator } from '../../DateUtils';
@@ -1079,7 +1080,7 @@ abstract class BaseGrouper {
10791080

10801081
// Wrap initial room creation events into a GenericEventListSummary
10811082
// Grouping only events sent by the same user that sent the `m.room.create` and only until
1082-
// the first non-state event or membership event which is not regarding the sender of the `m.room.create` event
1083+
// the first non-state event, beacon_info event or membership event which is not regarding the sender of the `m.room.create` event
10831084
class CreationGrouper extends BaseGrouper {
10841085
static canStartGroup = function(panel: MessagePanel, ev: MatrixEvent): boolean {
10851086
return ev.getType() === EventType.RoomCreate;
@@ -1098,9 +1099,15 @@ class CreationGrouper extends BaseGrouper {
10981099
&& (ev.getStateKey() !== createEvent.getSender() || ev.getContent()["membership"] !== "join")) {
10991100
return false;
11001101
}
1102+
// beacons are not part of room creation configuration
1103+
// should be shown in timeline
1104+
if (M_BEACON_INFO.matches(ev.getType())) {
1105+
return false;
1106+
}
11011107
if (ev.isState() && ev.getSender() === createEvent.getSender()) {
11021108
return true;
11031109
}
1110+
11041111
return false;
11051112
}
11061113

test/components/structures/MessagePanel-test.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ import * as TestUtilsMatrix from "../../test-utils";
3434
import EventListSummary from "../../../src/components/views/elements/EventListSummary";
3535
import GenericEventListSummary from "../../../src/components/views/elements/GenericEventListSummary";
3636
import DateSeparator from "../../../src/components/views/messages/DateSeparator";
37+
import { makeBeaconInfoEvent } from '../../test-utils';
38+
39+
jest.mock('../../../src/utils/beacon', () => ({
40+
useBeacon: jest.fn(),
41+
}));
3742

3843
let client;
3944
const room = new Matrix.Room("!roomId:server_name");
@@ -481,6 +486,27 @@ describe('MessagePanel', function() {
481486
expect(summaryEventTiles.length).toEqual(tiles.length - 3);
482487
});
483488

489+
it('should not collapse beacons as part of creation events', function() {
490+
const [creationEvent] = mkCreationEvents();
491+
const beaconInfoEvent = makeBeaconInfoEvent(
492+
creationEvent.getSender(),
493+
creationEvent.getRoomId(),
494+
{ isLive: true },
495+
);
496+
const combinedEvents = [creationEvent, beaconInfoEvent];
497+
TestUtilsMatrix.upsertRoomStateEvents(room, combinedEvents);
498+
const res = mount(
499+
<WrappedMessagePanel className="cls" events={combinedEvents} />,
500+
);
501+
502+
const summaryTiles = res.find(GenericEventListSummary);
503+
const summaryTile = summaryTiles.at(0);
504+
505+
const summaryEventTiles = summaryTile.find(UnwrappedEventTile);
506+
// nothing in the summary
507+
expect(summaryEventTiles.length).toEqual(0);
508+
});
509+
484510
it('should hide read-marker at the end of creation event summary', function() {
485511
const events = mkCreationEvents();
486512
TestUtilsMatrix.upsertRoomStateEvents(room, events);

0 commit comments

Comments
 (0)