Skip to content

Commit f6e85a3

Browse files
authored
Fix room list handling of membership changes (#31197)
* Fix room list handling of membership changes Including knock->invite for ask to join Signed-off-by: Michael Telatynski <[email protected]> * Iterate Signed-off-by: Michael Telatynski <[email protected]> * lint Signed-off-by: Michael Telatynski <[email protected]> --------- Signed-off-by: Michael Telatynski <[email protected]>
1 parent 39a5cca commit f6e85a3

File tree

2 files changed

+31
-3
lines changed

2 files changed

+31
-3
lines changed

src/stores/room-list-v3/RoomListStoreV3.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ export class RoomListStoreV3Class extends AsyncStoreWithClient<EmptyObject> {
260260
}
261261
}
262262

263-
this.addRoomAndEmit(payload.room, true);
263+
this.addRoomAndEmit(payload.room, oldMembership === EffectiveMembership.Leave);
264264
break;
265265
}
266266

test/unit-tests/stores/room-list-v3/RoomListStoreV3-test.ts

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import SettingsStore from "../../../../src/settings/SettingsStore";
2929
import * as utils from "../../../../src/utils/notifications";
3030
import * as roomMute from "../../../../src/stores/room-list/utils/roomMute";
3131
import { Action } from "../../../../src/dispatcher/actions";
32+
import { SettingLevel } from "../../../../src/settings/SettingLevel.ts";
3233

3334
describe("RoomListStoreV3", () => {
3435
async function getRoomListStore() {
@@ -218,7 +219,6 @@ describe("RoomListStoreV3", () => {
218219
dispatcher.dispatch(
219220
{
220221
action: "MatrixActions.Room.myMembership",
221-
oldMembership: KnownMembership.Invite,
222222
membership: KnownMembership.Join,
223223
room: newRoom,
224224
},
@@ -253,7 +253,6 @@ describe("RoomListStoreV3", () => {
253253
dispatcher.dispatch(
254254
{
255255
action: "MatrixActions.Room.myMembership",
256-
oldMembership: KnownMembership.Invite,
257256
membership: KnownMembership.Join,
258257
room: newRoom,
259258
},
@@ -759,6 +758,35 @@ describe("RoomListStoreV3", () => {
759758
expect(result).toHaveLength(1);
760759
expect(result).toContain(rooms[8]);
761760
});
761+
762+
it("should update filters on membership change", async () => {
763+
await SettingsStore.setValue("feature_ask_to_join", null, SettingLevel.DEVICE, true);
764+
const { store, client, dispatcher } = await getRoomListStore();
765+
const room = new Room("!fooknock:matrix.org", client, client.getSafeUserId(), {});
766+
767+
room.getMyMembership = jest.fn().mockReturnValue(KnownMembership.Knock);
768+
dispatcher.dispatch(
769+
{
770+
action: "MatrixActions.Room.myMembership",
771+
membership: KnownMembership.Knock,
772+
room,
773+
},
774+
true,
775+
);
776+
expect(store.getSortedRoomsInActiveSpace([FilterKey.InvitesFilter]).rooms).not.toContain(room);
777+
778+
room.getMyMembership = jest.fn().mockReturnValue(KnownMembership.Invite);
779+
dispatcher.dispatch(
780+
{
781+
action: "MatrixActions.Room.myMembership",
782+
oldMembership: KnownMembership.Knock,
783+
membership: KnownMembership.Invite,
784+
room,
785+
},
786+
true,
787+
);
788+
expect(store.getSortedRoomsInActiveSpace([FilterKey.InvitesFilter]).rooms).toContain(room);
789+
});
762790
});
763791
});
764792

0 commit comments

Comments
 (0)