From 123b33a2a46dd4a7852ea3992786059b45611332 Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Wed, 15 Jul 2026 15:29:31 +0200 Subject: [PATCH] Fix room list throwing an error when adding an existing room (#34281) --- apps/web/src/stores/room-list-v3/skip-list/RoomSkipList.ts | 6 ++++-- .../stores/room-list-v3/skip-list/RoomSkipList-test.ts | 7 +++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/apps/web/src/stores/room-list-v3/skip-list/RoomSkipList.ts b/apps/web/src/stores/room-list-v3/skip-list/RoomSkipList.ts index dfa5b678e0..5ee86aefc9 100644 --- a/apps/web/src/stores/room-list-v3/skip-list/RoomSkipList.ts +++ b/apps/web/src/stores/room-list-v3/skip-list/RoomSkipList.ts @@ -6,6 +6,7 @@ Please see LICENSE files in the repository root for full details. */ import type { Room } from "matrix-js-sdk/src/matrix"; +import { logger } from "matrix-js-sdk/src/logger"; import type { Sorter, SortingAlgorithm } from "./sorters"; import type { Filter, FilterKey } from "./filters"; import { RoomNode } from "./RoomNode"; @@ -115,12 +116,13 @@ export class RoomSkipList implements Iterable { /** * Adds a new room to the skiplist. - * This method will throw an error if the room is already in the skiplist. + * This method does nothing if the room is already in the skiplist. * @param room the room to add */ public addNewRoom(room: Room): void { if (this.roomNodeMap.has(room.roomId)) { - throw new Error(`Can't add room to skiplist: ${room.roomId} is already in the skiplist!`); + logger.error(`Can't add room to skiplist: ${room.roomId} is already in the skiplist!`); + return; } this.insertRoom(room); } diff --git a/apps/web/test/unit-tests/stores/room-list-v3/skip-list/RoomSkipList-test.ts b/apps/web/test/unit-tests/stores/room-list-v3/skip-list/RoomSkipList-test.ts index 55daf541ca..a187266fdc 100644 --- a/apps/web/test/unit-tests/stores/room-list-v3/skip-list/RoomSkipList-test.ts +++ b/apps/web/test/unit-tests/stores/room-list-v3/skip-list/RoomSkipList-test.ts @@ -100,10 +100,13 @@ describe("RoomSkipList", () => { } }); - it("Throws error when same room is added via addNewRoom", () => { + it("Room is not duplicated when same room is added via addNewRoom", () => { const { skipList, rooms } = generateSkipList(); const room = rooms[5]; - expect(() => skipList.addNewRoom(room)).toThrow("Can't add room to skiplist"); + const sizeBefore = skipList.size; + skipList.addNewRoom(room); + + expect(skipList.size).toEqual(sizeBefore); }); it("Filters are applied to existing nodes when useNewFilters is called", () => {