Merge branch '306-multiple-private-chat-rooms-with-the-same-guest-are-created-whenever-we-start-the-private-chat' into 'dev'

Fix private chat handling code

See merge request keanuapp/keanuapp-weblite!82
This commit is contained in:
N Pex 2022-04-27 14:24:39 +00:00
commit 2a064f4a06

View file

@ -697,10 +697,14 @@ export default {
for (const room of this.rooms) {
// Is the other member the one we are looking for?
if (this.isDirectRoomWith(room, userId)) {
var member = room.getMember(userId);
if (member && member.membership != "join") {
// Resend invite
this.matrixClient.invite(room.roomId, userId);
if (room.getMyMembership() == "invite") {
this.matrixClient.joinRoom(room.roomId);
} else {
var member = room.getMember(userId);
if (member && member.membership != "join") {
// Resend invite
this.matrixClient.invite(room.roomId, userId);
}
}
resolve(room);
return;
@ -757,22 +761,17 @@ export default {
isDirectRoomWith(room, userId) {
if (
room.getJoinRule() == "invite" &&
room.selfMembership == "join" &&
room.getInvitedAndJoinedMemberCount() == 2
room.getMembers().length == 2
) {
// Is the other member the one we are looking for?
if (
room
.getMembersWithMembership("join")
.some((item) => item.userId == userId)
) {
return true;
} else if (
room
.getMembersWithMembership("invite")
.some((item) => item.userId == userId)
) {
return true;
let other = room.getMember(userId);
if (other) {
if (room.getMyMembership() == "invite" && other.membership == "join") {
return true;
} else if (room.getMyMembership() == "join" && room.canInvite(this.currentUserId)) {
return true;
} else if (room.getMyMembership() == "join" && other.membership == "join") {
return true;
}
}
}
return false;