parent
786a5ccf9d
commit
0e41f1dec4
3 changed files with 100 additions and 0 deletions
|
|
@ -43,6 +43,8 @@ export default {
|
||||||
scale_image: "Scale image",
|
scale_image: "Scale image",
|
||||||
user_is_typing: "{user} is typing",
|
user_is_typing: "{user} is typing",
|
||||||
users_are_typing: "{count} members are typing",
|
users_are_typing: "{count} members are typing",
|
||||||
|
room_powerlevel_change: "{user} changed powerlevel of {changes}",
|
||||||
|
user_powerlevel_change_from_to: "{user} from {powerOld} to {powerNew}"
|
||||||
},
|
},
|
||||||
room: {
|
room: {
|
||||||
members: "no members | 1 member | {count} members",
|
members: "no members | 1 member | {count} members",
|
||||||
|
|
@ -164,6 +166,13 @@ export default {
|
||||||
release_to_cancel: "Release to cancel",
|
release_to_cancel: "Release to cancel",
|
||||||
failed_to_record: "Failed to record audio"
|
failed_to_record: "Failed to record audio"
|
||||||
},
|
},
|
||||||
|
power_level: {
|
||||||
|
admin: "administrator",
|
||||||
|
moderator: "moderator",
|
||||||
|
default: "default",
|
||||||
|
custom: "custom ({level})",
|
||||||
|
restricted: "restricted"
|
||||||
|
},
|
||||||
fallbacks: {
|
fallbacks: {
|
||||||
audio_file: "Audio file",
|
audio_file: "Audio file",
|
||||||
video_file: "Video file",
|
video_file: "Video file",
|
||||||
|
|
|
||||||
|
|
@ -406,6 +406,7 @@ import RoomTopicChanged from "./messages/RoomTopicChanged.vue";
|
||||||
import RoomAvatarChanged from "./messages/RoomAvatarChanged.vue";
|
import RoomAvatarChanged from "./messages/RoomAvatarChanged.vue";
|
||||||
import RoomHistoryVisibility from "./messages/RoomHistoryVisibility.vue";
|
import RoomHistoryVisibility from "./messages/RoomHistoryVisibility.vue";
|
||||||
import RoomJoinRules from "./messages/RoomJoinRules.vue";
|
import RoomJoinRules from "./messages/RoomJoinRules.vue";
|
||||||
|
import RoomPowerLevelsChanged from "./messages/RoomPowerLevelsChanged.vue";
|
||||||
import DebugEvent from "./messages/DebugEvent.vue";
|
import DebugEvent from "./messages/DebugEvent.vue";
|
||||||
import util from "../plugins/utils";
|
import util from "../plugins/utils";
|
||||||
import MessageOperations from "./messages/MessageOperations.vue";
|
import MessageOperations from "./messages/MessageOperations.vue";
|
||||||
|
|
@ -481,6 +482,7 @@ export default {
|
||||||
RoomAvatarChanged,
|
RoomAvatarChanged,
|
||||||
RoomHistoryVisibility,
|
RoomHistoryVisibility,
|
||||||
RoomJoinRules,
|
RoomJoinRules,
|
||||||
|
RoomPowerLevelsChanged,
|
||||||
DebugEvent,
|
DebugEvent,
|
||||||
MessageOperations,
|
MessageOperations,
|
||||||
MessageOperationsPicker,
|
MessageOperationsPicker,
|
||||||
|
|
@ -986,6 +988,9 @@ export default {
|
||||||
|
|
||||||
case "m.room.join_rules":
|
case "m.room.join_rules":
|
||||||
return RoomJoinRules;
|
return RoomJoinRules;
|
||||||
|
|
||||||
|
case "m.room.power_levels":
|
||||||
|
return RoomPowerLevelsChanged;
|
||||||
}
|
}
|
||||||
return this.debugging ? DebugEvent : null;
|
return this.debugging ? DebugEvent : null;
|
||||||
},
|
},
|
||||||
|
|
|
||||||
86
src/components/messages/RoomPowerLevelsChanged.vue
Normal file
86
src/components/messages/RoomPowerLevelsChanged.vue
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
<template>
|
||||||
|
<div class="messageJoin">
|
||||||
|
<div>
|
||||||
|
{{ allChanges }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import messageMixin from "./messageMixin";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [messageMixin],
|
||||||
|
computed: {
|
||||||
|
allChanges() {
|
||||||
|
const content = this.event.getContent();
|
||||||
|
const prevContent = this.event.getPrevContent();
|
||||||
|
if (!prevContent || !prevContent.users || !content || !content.users) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
const userDefault = this.event.getContent().users_default || 0;
|
||||||
|
|
||||||
|
// Construct set of userIds
|
||||||
|
const users = [];
|
||||||
|
Object.keys(content.users).forEach((userId) => {
|
||||||
|
if (users.indexOf(userId) === -1) users.push(userId);
|
||||||
|
});
|
||||||
|
Object.keys(prevContent.users).forEach((userId) => {
|
||||||
|
if (users.indexOf(userId) === -1) users.push(userId);
|
||||||
|
});
|
||||||
|
|
||||||
|
const diff = [];
|
||||||
|
users.forEach((userId) => {
|
||||||
|
// Previous power level
|
||||||
|
const from = prevContent.users[userId];
|
||||||
|
// Current power level
|
||||||
|
const to = content.users[userId];
|
||||||
|
if (to !== from) {
|
||||||
|
diff.push(
|
||||||
|
this.$t("message.user_powerlevel_change_from_to", {
|
||||||
|
user: userId,
|
||||||
|
powerOld: this.powerLevelString(from, userDefault),
|
||||||
|
powerNew: this.powerLevelString(to, userDefault),
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (!diff.length) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return this.$t("message.room_powerlevel_change", {
|
||||||
|
user: this.changer,
|
||||||
|
changes: diff.join(", "),
|
||||||
|
});
|
||||||
|
},
|
||||||
|
changer() {
|
||||||
|
if (this.event.getSender() == this.$matrix.currentUserId) {
|
||||||
|
return this.$t("message.you");
|
||||||
|
}
|
||||||
|
return this.event.sender
|
||||||
|
? this.event.sender.name
|
||||||
|
: this.event.getSender();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
powerLevelString(level, defaultUserLevel) {
|
||||||
|
const map = {
|
||||||
|
undefined: this.$t("power_level.default"),
|
||||||
|
0: this.$t("power_level.restricted"),
|
||||||
|
[defaultUserLevel]: this.$t("power_level.default"),
|
||||||
|
50: this.$t("power_level.moderator"),
|
||||||
|
100: this.$t("power_level.admin"),
|
||||||
|
};
|
||||||
|
if (map[level]) {
|
||||||
|
return map[level];
|
||||||
|
} else {
|
||||||
|
return this.$t("power_level.custom", { level: level });
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
@import "@/assets/css/chat.scss";
|
||||||
|
</style>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue