From 0dead738374056d0c8a43ca06331e9e5ff71fdf8 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 3 Dec 2019 12:29:50 -0700 Subject: [PATCH 1/2] Update alias handling Fixes https://github.com/vector-im/riot-web/issues/11551 --- src/models/room.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/models/room.js b/src/models/room.js index e6d24c5d5..77f12e845 100644 --- a/src/models/room.js +++ b/src/models/room.js @@ -839,9 +839,15 @@ Room.prototype.getAliases = function() { for (let i = 0; i < aliasEvents.length; ++i) { const aliasEvent = aliasEvents[i]; if (utils.isArray(aliasEvent.getContent().aliases)) { - Array.prototype.push.apply( - aliasStrings, aliasEvent.getContent().aliases, - ); + const filteredAliases = aliasEvent.getContent().aliases.filter(a => { + if (typeof(a) !== "string") return false; + if (a[0] !== '#') return false; + if (!a.endsWith(`:${aliasEvent.getStateKey()}`)) return false; + + // It's probably valid by here. + return true; + }); + Array.prototype.push.apply(aliasStrings, filteredAliases); } } } From 5da936d96a41253e22455a35cec5ef1fa92a30ad Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 3 Dec 2019 13:38:40 -0700 Subject: [PATCH 2/2] Fix tests --- spec/unit/room.spec.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/spec/unit/room.spec.js b/spec/unit/room.spec.js index c2f7a5521..58cf2fd01 100644 --- a/spec/unit/room.spec.js +++ b/spec/unit/room.spec.js @@ -623,7 +623,9 @@ describe("Room", function() { }; const setAliases = function(aliases, stateKey) { if (!stateKey) { - stateKey = "flibble"; + stateKey = aliases.length + ? aliases[0].split(':').splice(1).join(':') // domain+port + : 'fibble'; } room.addLiveEvents([utils.mkEvent({ type: "m.room.aliases", room: roomId, skey: stateKey, content: { @@ -864,7 +866,7 @@ describe("Room", function() { "(invite join_rules) rooms if a room name doesn't exist.", function() { const alias = "#room_alias:here"; setJoinRule("invite"); - setAliases([alias, "#another:one"]); + setAliases([alias, "#another:here"]); room.recalculate(); const name = room.name; expect(name).toEqual(alias); @@ -874,7 +876,7 @@ describe("Room", function() { "(public join_rules) rooms if a room name doesn't exist.", function() { const alias = "#room_alias:here"; setJoinRule("public"); - setAliases([alias, "#another:one"]); + setAliases([alias, "#another:here"]); room.recalculate(); const name = room.name; expect(name).toEqual(alias);