Timeout on room deletion

And custom deletion notice state event.

Issue #118.
This commit is contained in:
N-Pex 2021-07-06 09:33:19 +02:00
parent d39357401b
commit abd3892349
7 changed files with 164 additions and 17 deletions

View file

@ -303,7 +303,6 @@ export default {
client.on("Room", this.onRoom);
client.on("Session.logged_out", this.onSessionLoggedOut);
client.on("Room.myMembership", this.onRoomMyMembership);
client.on("RoomMember.membership", this.onRoomMemberMembership);
}
},
@ -313,7 +312,6 @@ export default {
client.off("Room", this.onRoom);
client.off("Session.logged_out", this.onSessionLoggedOut);
client.off("Room.myMembership", this.onRoomMyMembership);
client.off("RoomMember.membership", this.onRoomMemberMembership);
}
},
@ -334,6 +332,17 @@ export default {
}
}
break;
case "m.room.member": {
if (this.currentRoom && event.getRoomId() == this.currentRoom.roomId) { // Don't use this.currentRoomId, may be an alias. We need the real id!
if (event.getContent().membership == "leave" && (event.getPrevContent() || {}).membership == "join" && event.getStateKey() == this.currentUserId && event.getSender() != this.currentUserId) {
// We were kicked
const wasPurged = (event.getContent().reason == "Room Deleted");
this.$navigation.push({ name: "Goodbye", params: { roomWasPurged: wasPurged } }, -1);
}
}
}
break;
}
this.updateNotificationCount();
},
@ -353,17 +362,6 @@ export default {
}
},
onRoomMemberMembership(event, member, ignoredoldMembership) {
if (member.userId == this.currentUserId && member.isKicked()) {
if (this.currentRoomId == event.getRoomId()) {
// We were kicked! Look at "reason", maybe a purge?
const reason = event.getContent().reason || "";
const roomWasPurged = (reason == "Room Deleted");
this.$navigation.push({ name: "Goodbye", params: { roomWasPurged: roomWasPurged } }, -1);
}
}
},
onSessionLoggedOut() {
console.log("Logged out!");
if (this.matrixClient) {
@ -582,7 +580,7 @@ export default {
var kickPromises = [];
members.forEach(member => {
if (member.userId != self.currentUserId) {
kickPromises.push(this.matrixClient.kick(roomId, member.userId));
kickPromises.push(this.matrixClient.kick(roomId, member.userId, "Room Deleted"));
}
});
return Promise.all(kickPromises);