Skip to content

Commit

Permalink
Merge pull request #719 from matrix-org/bwindels/fixavatars-parttrois
Browse files Browse the repository at this point in the history
Fixes for room.guessDMUserId
  • Loading branch information
bwindels committed Sep 4, 2018
2 parents 3561fd1 + 768c663 commit 3d98e32
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 17 deletions.
23 changes: 23 additions & 0 deletions spec/unit/room.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -1411,4 +1411,27 @@ describe("Room", function() {
expect(room.getMyMembership()).toEqual("join");
});
});

describe("guessDMUserId", function() {
it("should return first hero id",
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",
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",
function() {
const room = new Room(roomId, null, userA);
expect(room.guessDMUserId()).toEqual(userA);
});
});
});
24 changes: 7 additions & 17 deletions src/models/room.js
Original file line number Diff line number Diff line change
Expand Up @@ -299,27 +299,17 @@ Room.prototype.guessDMUserId = function() {
return inviterId;
}
}
const fallbackMember = this.getAvatarFallbackMember();
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();
const anyMember = members.filter((m) => m.userId !== this.myUserId);
const anyMember = members.find((m) => m.userId !== this.myUserId);
if (anyMember) {
return 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
// so I probably created a room with just me in it
Expand Down

0 comments on commit 3d98e32

Please sign in to comment.