1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-08-06 12:02:40 +03:00

Merge pull request #719 from matrix-org/bwindels/fixavatars-parttrois

Fixes for room.guessDMUserId
This commit is contained in:
Bruno Windels
2018-09-04 18:17:39 +02:00
committed by GitHub
2 changed files with 30 additions and 17 deletions

View File

@@ -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);
});
});
});

View File

@@ -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