From f8828014f1201418cbf3ee1bf186a0c3f1cb917b Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 15 Jun 2020 20:19:16 -0600 Subject: [PATCH] Match new room list's text search to old room list Fixes https://github.com/vector-im/riot-web/issues/14042 --- .../room-list/filters/NameFilterCondition.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/stores/room-list/filters/NameFilterCondition.ts b/src/stores/room-list/filters/NameFilterCondition.ts index f238cdeb09..7b6ed76e79 100644 --- a/src/stores/room-list/filters/NameFilterCondition.ts +++ b/src/stores/room-list/filters/NameFilterCondition.ts @@ -17,6 +17,7 @@ limitations under the License. import { Room } from "matrix-js-sdk/src/models/room"; import { FILTER_CHANGED, FilterPriority, IFilterCondition } from "./IFilterCondition"; import { EventEmitter } from "events"; +import { removeHiddenChars } from "matrix-js-sdk/src/utils"; /** * A filter condition for the room list which reveals rooms of a particular @@ -45,7 +46,16 @@ export class NameFilterCondition extends EventEmitter implements IFilterConditio } public isVisible(room: Room): boolean { - // TODO: Improve this filter to include aliases and such - return room.name.toLowerCase().indexOf(this.search.toLowerCase()) >= 0; + const lcFilter = this.search.toLowerCase(); + if (this.search[0] === '#') { + // Try and find rooms by alias + if (room.getCanonicalAlias() && room.getCanonicalAlias().toLowerCase().startsWith(lcFilter)) { + return true; + } + if (room.getAltAliases().some(a => a.toLowerCase().startsWith(lcFilter))) { + return true; + } + } + return room.name && removeHiddenChars(room.name).toLowerCase().includes(lcFilter); } }