From 2391ce198d45a1ac9de99935b1daf49d8d0d3ff7 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Tue, 4 Sep 2018 12:59:37 +0200 Subject: [PATCH 1/6] this method returns userId, not member --- src/models/room.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/models/room.js b/src/models/room.js index ce7054493..e29b924e9 100644 --- a/src/models/room.js +++ b/src/models/room.js @@ -312,7 +312,6 @@ Room.prototype.guessDMUserId = function() { const members = this.currentState.getMembers(); const anyMember = members.filter((m) => m.userId !== this.myUserId); if (anyMember) { - return anyMember; } const createEvent = this.currentState.getStateEvents("m.room.create", ""); if (createEvent) { @@ -320,6 +319,7 @@ Room.prototype.guessDMUserId = function() { if (sender !== this.myUserId) { return sender; } + return anyMember.userId; } // it really seems like I'm the only user in the room // so I probably created a room with just me in it From 632e4aa120d2f1433bec3ac6f30e4019dc25611b Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Tue, 4 Sep 2018 13:00:00 +0200 Subject: [PATCH 2/6] pick the first member, dont need an array --- src/models/room.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/models/room.js b/src/models/room.js index e29b924e9..2876b043a 100644 --- a/src/models/room.js +++ b/src/models/room.js @@ -310,7 +310,7 @@ Room.prototype.guessDMUserId = function() { return this._summaryHeroes[0]; } const members = this.currentState.getMembers(); - const anyMember = members.filter((m) => m.userId !== this.myUserId); + const anyMember = members.find((m) => m.userId !== this.myUserId); if (anyMember) { } const createEvent = this.currentState.getStateEvents("m.room.create", ""); From 3e32bc0d5d8b6af54d6e0ead67a661db5e6577a9 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Tue, 4 Sep 2018 13:00:34 +0200 Subject: [PATCH 3/6] check heroes is not falsy first, this would fail without LL --- src/models/room.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/models/room.js b/src/models/room.js index 2876b043a..2d47828e2 100644 --- a/src/models/room.js +++ b/src/models/room.js @@ -303,10 +303,11 @@ Room.prototype.guessDMUserId = function() { if (fallbackMember) { return fallbackMember.userId; } - // now we're getting into sketchy territory, - // but we're assuming this room is marked as a DM - // so we're going to make a wild-ish guess with whom - if (this._summaryHeroes.length) { + // remember, we're assuming this room is a DM, + // so returning the first member we find should be fine + const hasHeroes = Array.isArray(this._summaryHeroes) && + this._summaryHeroes.length; + if (hasHeroes) { return this._summaryHeroes[0]; } const members = this.currentState.getMembers(); From f0d3d0d74ec019af855715bc72cdc61ef72d1de5 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Tue, 4 Sep 2018 13:01:15 +0200 Subject: [PATCH 4/6] remove unneeded checks, we should always have enough heroes or members --- src/models/room.js | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/models/room.js b/src/models/room.js index 2d47828e2..c3bdba00c 100644 --- a/src/models/room.js +++ b/src/models/room.js @@ -299,10 +299,6 @@ Room.prototype.guessDMUserId = function() { return inviterId; } } - const fallbackMember = this.getAvatarFallbackMember(); - if (fallbackMember) { - return fallbackMember.userId; - } // remember, we're assuming this room is a DM, // so returning the first member we find should be fine const hasHeroes = Array.isArray(this._summaryHeroes) && @@ -313,13 +309,6 @@ Room.prototype.guessDMUserId = function() { const members = this.currentState.getMembers(); const anyMember = members.find((m) => m.userId !== this.myUserId); if (anyMember) { - } - const createEvent = this.currentState.getStateEvents("m.room.create", ""); - if (createEvent) { - const sender = createEvent.getSender(); - if (sender !== this.myUserId) { - return sender; - } return anyMember.userId; } // it really seems like I'm the only user in the room From a3567f091816cbe8918ef884c1d8c4e15dcb8e5c Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Tue, 4 Sep 2018 13:01:45 +0200 Subject: [PATCH 5/6] some tests for room.guessDMUserId() --- spec/unit/room.spec.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/spec/unit/room.spec.js b/spec/unit/room.spec.js index b98559ecf..a355f95fa 100644 --- a/spec/unit/room.spec.js +++ b/spec/unit/room.spec.js @@ -1411,4 +1411,27 @@ describe("Room", function() { expect(room.getMyMembership()).toEqual("join"); }); }); + + describe("guessDMUserId", function() { + it("should return first hero id", + async function() { + const room = new Room(roomId, null, userA); + room.setSummary({'m.heroes': [userB]}); + expect(room.guessDMUserId()).toEqual(userB); + }); + it("should return first member that isn't self", + async function() { + const room = new Room(roomId, null, userA); + room.addLiveEvents([utils.mkMembership({ + user: userB, mship: "join", + room: roomId, event: true, + })]); + expect(room.guessDMUserId()).toEqual(userB); + }); + it("should return self if only member present", + async function() { + const room = new Room(roomId, null, userA); + expect(room.guessDMUserId()).toEqual(userA); + }); + }); }); From 768c66313f0aae2ffb2156bbeabb99972abf4123 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Tue, 4 Sep 2018 18:09:47 +0200 Subject: [PATCH 6/6] remove unneeded async keywords --- spec/unit/room.spec.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/unit/room.spec.js b/spec/unit/room.spec.js index a355f95fa..726fcda89 100644 --- a/spec/unit/room.spec.js +++ b/spec/unit/room.spec.js @@ -1414,13 +1414,13 @@ describe("Room", function() { describe("guessDMUserId", function() { it("should return first hero id", - async function() { + function() { const room = new Room(roomId, null, userA); room.setSummary({'m.heroes': [userB]}); expect(room.guessDMUserId()).toEqual(userB); }); it("should return first member that isn't self", - async function() { + function() { const room = new Room(roomId, null, userA); room.addLiveEvents([utils.mkMembership({ user: userB, mship: "join", @@ -1429,7 +1429,7 @@ describe("Room", function() { expect(room.guessDMUserId()).toEqual(userB); }); it("should return self if only member present", - async function() { + function() { const room = new Room(roomId, null, userA); expect(room.guessDMUserId()).toEqual(userA); });