From 5f26b5e94d1a7cabd63701985f2769d399d02576 Mon Sep 17 00:00:00 2001 From: N Pex Date: Wed, 27 Apr 2022 14:24:39 +0000 Subject: [PATCH] Fix private chat handling code --- src/services/matrix.service.js | 37 +++++++++++++++++----------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/src/services/matrix.service.js b/src/services/matrix.service.js index 1575a8e..dd205ee 100644 --- a/src/services/matrix.service.js +++ b/src/services/matrix.service.js @@ -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;