Move kick/ban detection to Chat.vue
This commit is contained in:
parent
a708a2359e
commit
d00d439001
4 changed files with 20 additions and 27 deletions
|
|
@ -213,7 +213,8 @@
|
||||||
"status_logging_in": "Logging in...",
|
"status_logging_in": "Logging in...",
|
||||||
"status_joining": "Joining room...",
|
"status_joining": "Joining room...",
|
||||||
"join_failed": "Failed to join room.",
|
"join_failed": "Failed to join room.",
|
||||||
"choose_name": "Choose a name to use"
|
"choose_name": "Choose a name to use",
|
||||||
|
"you_have_been_banned": "You have been banned from this room."
|
||||||
},
|
},
|
||||||
"invite": {
|
"invite": {
|
||||||
"title": "Add Friends",
|
"title": "Add Friends",
|
||||||
|
|
|
||||||
|
|
@ -932,7 +932,20 @@ export default {
|
||||||
scrollToSeeNew = true;
|
scrollToSeeNew = true;
|
||||||
}
|
}
|
||||||
this.handleScrolledToBottom(scrollToSeeNew);
|
this.handleScrolledToBottom(scrollToSeeNew);
|
||||||
}
|
|
||||||
|
// If kick or ban event, redirect to "goodbye"...
|
||||||
|
if (event.getType() === "m.room.member" &&
|
||||||
|
event.getStateKey() == this.$matrix.currentUserId &&
|
||||||
|
(event.getPrevContent() || {}).membership == "join" &&
|
||||||
|
(
|
||||||
|
(event.getContent().membership == "leave" && event.getSender() != this.currentUserId) ||
|
||||||
|
(event.getContent().membership == "ban" ))
|
||||||
|
) {
|
||||||
|
this.$store.commit("setCurrentRoomId", null);
|
||||||
|
const wasPurged = event.getContent().reason == "Room Deleted";
|
||||||
|
this.$navigation.push({ name: "Goodbye", params: { roomWasPurged: wasPurged } }, -1);
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
onUserTyping(event, member) {
|
onUserTyping(event, member) {
|
||||||
|
|
|
||||||
|
|
@ -82,14 +82,15 @@
|
||||||
|
|
||||||
<interactive-auth ref="interactiveAuth" />
|
<interactive-auth ref="interactiveAuth" />
|
||||||
|
|
||||||
<v-btn id="btn-join" class="btn-dark" large @click.stop="handleJoin" :loading="loading" v-if="!currentUser">{{
|
<v-btn id="btn-join" class="btn-dark" :disabled="room && room.selfMembership == 'ban'" large @click.stop="handleJoin" :loading="loading" v-if="!currentUser">{{
|
||||||
roomId && roomId.startsWith("@") ? $t("join.enter_room_user") : $t("join.enter_room")
|
roomId && roomId.startsWith("@") ? $t("join.enter_room_user") : $t("join.enter_room")
|
||||||
}}</v-btn>
|
}}</v-btn>
|
||||||
<v-btn id="btn-join" class="btn-dark" large block @click.stop="handleJoin" :loading="loading" v-else>{{
|
<v-btn id="btn-join" class="btn-dark" :disabled="room && room.selfMembership == 'ban'" large block @click.stop="handleJoin" :loading="loading" v-else>{{
|
||||||
roomId && roomId.startsWith("@") ? $t("join.join_user") : $t("join.join")
|
roomId && roomId.startsWith("@") ? $t("join.join_user") : $t("join.join")
|
||||||
}}</v-btn>
|
}}</v-btn>
|
||||||
|
|
||||||
<div v-if="loadingMessage" class="text-center">{{ loadingMessage }}</div>
|
<div v-if="loadingMessage" class="text-center">{{ loadingMessage }}</div>
|
||||||
|
<div v-if="room && room.selfMembership == 'ban'" class="text-center">{{ $t("join.you_have_been_banned") }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -369,29 +369,7 @@ export default {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "m.room.member":
|
case "m.room.power_levels":
|
||||||
{
|
|
||||||
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) ||
|
|
||||||
(event.getContent().membership == "ban" && event.getStateKey() == this.currentUserId)
|
|
||||||
) {
|
|
||||||
// We were kicked or banned
|
|
||||||
// If this is a live event (not just backpaging) then redirect to goodbye!
|
|
||||||
if (this.matrixClientReady) {
|
|
||||||
const wasPurged = event.getContent().reason == "Room Deleted";
|
|
||||||
this.$navigation.push({ name: "Goodbye", params: { roomWasPurged: wasPurged } }, -1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "m.room.power_levels":
|
|
||||||
{
|
{
|
||||||
if (this.currentRoom && event.getRoomId() == this.currentRoom.roomId) {
|
if (this.currentRoom && event.getRoomId() == this.currentRoom.roomId) {
|
||||||
this.currentRoomIsReadOnlyForUser = this.isReadOnlyRoomForUser(event.getRoomId(), this.currentUserId);
|
this.currentRoomIsReadOnlyForUser = this.isReadOnlyRoomForUser(event.getRoomId(), this.currentUserId);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue