Skip to content

Commit fb12a5a

Browse files
dbkrt3chguy
andauthored
Recalculate room name on loading members (#5158)
* Recalculate room name on loading members Because if it's a DM room, loading members might change the room name * Swap other userA / userB constants * Typo Co-authored-by: Michael Telatynski <7t3chguy@gmail.com> --------- Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
1 parent 61ea5a7 commit fb12a5a

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

spec/unit/room.spec.ts

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2103,7 +2103,7 @@ describe("Room", function () {
21032103
}
21042104

21052105
const memberEvent = utils.mkMembership({
2106-
user: "@user_a:bar",
2106+
user: userA,
21072107
mship: KnownMembership.Join,
21082108
room: roomId,
21092109
event: true,
@@ -2114,7 +2114,7 @@ describe("Room", function () {
21142114
const client = createClientMock([memberEvent]);
21152115
const room = new Room(roomId, client as any, null!, { lazyLoadMembers: true });
21162116
await room.loadMembersIfNeeded();
2117-
const memberA = room.getMember("@user_a:bar")!;
2117+
const memberA = room.getMember(userA)!;
21182118
expect(memberA.name).toEqual("User A");
21192119
const storedMembers = client.store.storedMembers!;
21202120
expect(storedMembers.length).toEqual(1);
@@ -2123,7 +2123,7 @@ describe("Room", function () {
21232123

21242124
it("should take members from storage if available", async function () {
21252125
const memberEvent2 = utils.mkMembership({
2126-
user: "@user_a:bar",
2126+
user: userA,
21272127
mship: KnownMembership.Join,
21282128
room: roomId,
21292129
event: true,
@@ -2134,7 +2134,7 @@ describe("Room", function () {
21342134

21352135
await room.loadMembersIfNeeded();
21362136

2137-
const memberA = room.getMember("@user_a:bar")!;
2137+
const memberA = room.getMember(userA)!;
21382138
expect(memberA.name).toEqual("User A");
21392139
});
21402140

@@ -2145,9 +2145,26 @@ describe("Room", function () {
21452145

21462146
client.members.mockReturnValue({ chunk: [memberEvent] });
21472147
await room.loadMembersIfNeeded();
2148-
const memberA = room.getMember("@user_a:bar")!;
2148+
const memberA = room.getMember(userA)!;
21492149
expect(memberA.name).toEqual("User A");
21502150
});
2151+
2152+
it("should emit room name change event if loading members causes the room name to change", async function () {
2153+
const otherMemberEvent = utils.mkMembership({
2154+
user: userB,
2155+
mship: KnownMembership.Join,
2156+
room: roomId,
2157+
event: true,
2158+
name: "User B",
2159+
});
2160+
2161+
const client = createClientMock([memberEvent, otherMemberEvent]);
2162+
const room = new Room(roomId, client as any, userA, { lazyLoadMembers: true });
2163+
2164+
expect(room.name).toEqual("!foo:bar");
2165+
await room.loadMembersIfNeeded();
2166+
expect(room.name).toEqual("User B");
2167+
});
21512168
});
21522169

21532170
describe("getMyMembership", function () {

src/models/room.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1103,6 +1103,8 @@ export class Room extends ReadReceipt<RoomEmittedEvents, RoomEventHandlerMap> {
11031103
const inMemoryUpdate = this.loadMembers()
11041104
.then((result) => {
11051105
this.currentState.setOutOfBandMembers(result.memberEvents);
1106+
// recalculate the room name: it may have been based on members, so may have changed
1107+
this.recalculate();
11061108
return result.fromServer;
11071109
})
11081110
.catch((err) => {

0 commit comments

Comments
 (0)