Add kick,ban,make admin and make moderator operations

This commit is contained in:
N-Pex 2023-01-22 14:41:35 +01:00
parent e5bf7f4f0c
commit 11e544b1c5
23 changed files with 281 additions and 27 deletions

View file

@ -0,0 +1,25 @@
<template>
<!-- Contact left the chat -->
<div class="messageJoin">
{{ (event.getStateKey() == this.$matrix.currentUserId) ?
$t('message.user_was_banned_you')
:
event.getSender() == this.$matrix.currentUserId ?
$t('message.user_was_banned_by_you',{user: eventStateKeyDisplayName(event)})
:
$t('message.user_was_banned',{user: eventStateKeyDisplayName(event)})
}}
</div>
</template>
<script>
import messageMixin from "./messageMixin";
export default {
mixins: [messageMixin],
};
</script>
<style lang="scss">
@import "@/assets/css/chat.scss";
</style>

View file

@ -33,7 +33,7 @@ export default {
if (this.displayNameChange) {
return this.event.getPrevContent().displayname;
}
return this.stateEventDisplayName(this.event);
return this.eventStateKeyDisplayName(this.event);
},
}
};

View file

@ -1,7 +1,7 @@
<template>
<!-- Contact invited to the chat -->
<div class="messageJoin">
{{ $t('message.user_was_invited', {user: event.getContent().displayname || stateEventDisplayName(event)}) }}
{{ $t('message.user_was_invited', {user: event.getContent().displayname || eventStateKeyDisplayName(event)}) }}
</div>
</template>

View file

@ -1,7 +1,7 @@
<template>
<!-- Contact joined the chat -->
<div class="messageJoin">
{{ $t('message.user_joined',{user: stateEventDisplayName(event)}) }}
{{ $t('message.user_joined',{user: eventSenderDisplayName(event)}) }}
</div>
</template>

View file

@ -0,0 +1,25 @@
<template>
<!-- Contact left the chat -->
<div class="messageJoin">
{{ (event.getStateKey() == this.$matrix.currentUserId) ?
$t('message.user_was_kicked_you')
:
event.getSender() == this.$matrix.currentUserId ?
$t('message.user_was_kicked_by_you',{user: eventStateKeyDisplayName(event)})
:
$t('message.user_was_kicked',{user: eventStateKeyDisplayName(event)})
}}
</div>
</template>
<script>
import messageMixin from "./messageMixin";
export default {
mixins: [messageMixin],
};
</script>
<style lang="scss">
@import "@/assets/css/chat.scss";
</style>

View file

@ -1,7 +1,7 @@
<template>
<!-- Contact left the chat -->
<div class="messageJoin">
{{ $t('message.user_left',{user: stateEventDisplayName(event)}) }}
{{ $t('message.user_left',{user: eventStateKeyDisplayName(event)}) }}
</div>
</template>

View file

@ -2,7 +2,7 @@
<!-- BASE CLASS FOR INCOMING MESSAGE -->
<div :class="messageClasses">
<div v-if="showSenderAndTime" class="senderAndTime">
<div class="sender">{{ messageEventDisplayName(event) }}</div>
<div class="sender">{{ eventSenderDisplayName(event) }}</div>
<div class="time">
{{ formatTime(event.event.origin_server_ts) }}
</div>
@ -10,7 +10,7 @@
<v-avatar class="avatar" ref="avatar" size="32" color="#ededed" @click.stop="otherAvatarClicked($refs.avatar.$el)">
<img v-if="messageEventAvatar(event)" :src="messageEventAvatar(event)" />
<span v-else class="white--text headline">{{
messageEventDisplayName(event).substring(0, 1).toUpperCase()
eventSenderDisplayName(event).substring(0, 1).toUpperCase()
}}</span>
</v-avatar>
<!-- SLOT FOR CONTENT -->

View file

@ -1,6 +1,6 @@
<template>
<div class="statusEvent">
{{ $t('message.user_aliased_room', {user: stateEventDisplayName(event), alias: event.getContent().alias}) }}
{{ $t('message.user_aliased_room', {user: eventSenderDisplayName(event), alias: event.getContent().alias}) }}
</div>
</template>

View file

@ -1,7 +1,7 @@
<template>
<!-- ROOM AVATAR CHANGED -->
<div class="statusEvent">
{{ $t('message.user_changed_room_avatar',{user: stateEventDisplayName(event)}) }}
{{ $t('message.user_changed_room_avatar',{user: eventSenderDisplayName(event)}) }}
</div>
</template>

View file

@ -1,6 +1,6 @@
<template>
<div class="statusEvent">
{{ $t('message.user_created_room', {user: stateEventDisplayName(event)}) }}
{{ $t('message.user_created_room', {user: eventSenderDisplayName(event)}) }}
</div>
</template>

View file

@ -4,7 +4,7 @@
👋&nbsp;
{{
$t("purge_room.room_deletion_notice", {
user: stateEventDisplayName(event),
user: eventSenderDisplayName(event),
})
}}
</div>

View file

@ -1,6 +1,6 @@
<template>
<div class="statusEvent">
{{ $t('message.user_encrypted_room', {user: stateEventDisplayName(event)}) }}
{{ $t('message.user_encrypted_room', {user: eventSenderDisplayName(event)}) }}
</div>
</template>

View file

@ -3,10 +3,10 @@
{{
openToGuests
? $t("message.user_changed_guest_access_open", {
user: stateEventDisplayName(event),
user: eventSenderDisplayName(event),
})
: $t("message.user_changed_guest_access_closed", {
user: stateEventDisplayName(event),
user: eventSenderDisplayName(event),
})
}}
</div>

View file

@ -1,7 +1,7 @@
<template>
<!-- ROOM AVATAR CHANGED -->
<div class="statusEvent">
{{ $t('message.user_changed_room_history',{user: stateEventDisplayName(event), type: history(event)}) }}
{{ $t('message.user_changed_room_history',{user: eventSenderDisplayName(event), type: history(event)}) }}
</div>
</template>

View file

@ -1,7 +1,7 @@
<template>
<!-- ROOM JOIN RULES CHANGED -->
<div class="statusEvent">
{{ $t('message.user_changed_join_rules', { user: stateEventDisplayName(event), type: joinRule(event)}) }}
{{ $t('message.user_changed_join_rules', { user: eventSenderDisplayName(event), type: joinRule(event)}) }}
</div>
</template>

View file

@ -1,7 +1,7 @@
<template>
<!-- ROOM NAME CHANGED -->
<div class="statusEvent">
{{ $t('message.user_changed_room_name', {user: stateEventDisplayName(event), name: event.getContent().name}) }}
{{ $t('message.user_changed_room_name', {user: eventSenderDisplayName(event), name: event.getContent().name}) }}
</div>
</template>

View file

@ -1,7 +1,7 @@
<template>
<!-- ROOM TOPIC CHANGED -->
<div class="statusEvent">
{{ $t('message.user_changed_room_topic', {user: stateEventDisplayName(event), topic: event.getContent().topic}) }}
{{ $t('message.user_changed_room_topic', {user: eventSenderDisplayName(event), topic: event.getContent().topic}) }}
</div>
</template>

View file

@ -50,7 +50,7 @@ export default {
const originalEvent = this.timelineSet.findEventById(originalEventId);
if (originalEvent) {
this.inReplyToEvent = originalEvent;
this.inReplyToSender = this.messageEventDisplayName(originalEvent);
this.inReplyToSender = this.eventSenderDisplayName(originalEvent);
}
}
}
@ -157,7 +157,7 @@ export default {
/**
* Get a display name given an event.
*/
stateEventDisplayName(event) {
eventSenderDisplayName(event) {
if (event.getSender() == this.$matrix.currentUserId) {
return this.$t('message.you');
}
@ -167,11 +167,26 @@ export default {
return member.name;
}
}
return event.getContent().displayname || event.event.state_key;
return event.getContent().displayname || event.getSender();
},
messageEventDisplayName(event) {
return this.stateEventDisplayName(event);
/**
* In the case where the state_key points out a userId for an operation (e.g. membership events)
* return the display name of the affected user.
* @param event
* @returns
*/
eventStateKeyDisplayName(event) {
if (event.getStateKey() == this.$matrix.currentUserId) {
return this.$t('message.you');
}
if (this.room) {
const member = this.room.getMember(event.getStateKey());
if (member) {
return member.name;
}
}
return event.getStateKey();
},
messageEventAvatar(event) {