Hide own joins for direct rooms

Move display options to a new "roomDisplayOptionsMixin". Rename (and invert) "showOnlyUserStatusMessages" to "showAllStatusMessages".
This commit is contained in:
N-Pex 2023-09-28 09:13:12 +02:00
parent 979e650f0d
commit 3630690b20
2 changed files with 34 additions and 20 deletions

View file

@ -50,8 +50,10 @@ import RoomGuestAccessChanged from "./messages/RoomGuestAccessChanged.vue";
import RoomEncrypted from "./messages/RoomEncrypted.vue"; import RoomEncrypted from "./messages/RoomEncrypted.vue";
import RoomDeletionNotice from "./messages/RoomDeletionNotice.vue"; import RoomDeletionNotice from "./messages/RoomDeletionNotice.vue";
import DebugEvent from "./messages/DebugEvent.vue"; import DebugEvent from "./messages/DebugEvent.vue";
import roomDisplayOptionsMixin from "./roomDisplayOptionsMixin";
export default { export default {
mixins: [ roomDisplayOptionsMixin ],
components: { components: {
ChatHeader, ChatHeader,
MessageIncomingText, MessageIncomingText,
@ -98,15 +100,6 @@ export default {
CreatePollDialog, CreatePollDialog,
}, },
methods: { methods: {
showOnlyUserStatusMessages() {
// We say that if you can redact events, you are allowed to create polls.
// NOTE!!! This assumes that there is a property named "room" on THIS.
const me = this.room && this.room.getMember(this.$matrix.currentUserId);
let isModerator =
me && this.room.currentState && this.room.currentState.hasSufficientPowerLevelFor("redact", me.powerLevel);
const show = this.$config.show_status_messages;
return show === "never" || (show === "moderators" && !isModerator)
},
showDayMarkerBeforeEvent(event) { showDayMarkerBeforeEvent(event) {
const idx = this.events.indexOf(event); const idx = this.events.indexOf(event);
if (idx <= 0) { if (idx <= 0) {
@ -144,6 +137,9 @@ export default {
// We we already joined, so this must be a display name and/or avatar update! // We we already joined, so this must be a display name and/or avatar update!
return ContactChanged; return ContactChanged;
} else { } else {
if (event.getSender() == this.$matrix.currentUserId && !this.showOwnJoins) {
return null;
}
return ContactJoin; return ContactJoin;
} }
} else if (event.getContent().membership == "leave") { } else if (event.getContent().membership == "leave") {
@ -152,7 +148,7 @@ export default {
return ContactKicked; return ContactKicked;
} }
return ContactLeave; return ContactLeave;
} else if (!this.showOnlyUserStatusMessages()) { } else if (this.showAllStatusMessages) {
if (event.getContent().membership == "invite") { if (event.getContent().membership == "invite") {
return ContactInvited; return ContactInvited;
} else if (event.getContent().membership == "ban") { } else if (event.getContent().membership == "ban") {
@ -233,61 +229,61 @@ export default {
} }
case "m.room.create": case "m.room.create":
if (!this.showOnlyUserStatusMessages()) { if (this.showAllStatusMessages) {
return RoomCreated; return RoomCreated;
} }
break; break;
case "m.room.canonical_alias": case "m.room.canonical_alias":
if (!this.showOnlyUserStatusMessages()) { if (this.showAllStatusMessages) {
return RoomAliased; return RoomAliased;
} }
break; break;
case "m.room.name": case "m.room.name":
if (!this.showOnlyUserStatusMessages()) { if (this.showAllStatusMessages) {
return RoomNameChanged; return RoomNameChanged;
} }
break; break;
case "m.room.topic": case "m.room.topic":
if (!this.showOnlyUserStatusMessages()) { if (this.showAllStatusMessages) {
return RoomTopicChanged; return RoomTopicChanged;
} }
break; break;
case "m.room.avatar": case "m.room.avatar":
if (!this.showOnlyUserStatusMessages()) { if (this.showAllStatusMessages) {
return RoomAvatarChanged; return RoomAvatarChanged;
} }
break; break;
case "m.room.history_visibility": case "m.room.history_visibility":
if (!this.showOnlyUserStatusMessages()) { if (this.showAllStatusMessages) {
return RoomHistoryVisibility; return RoomHistoryVisibility;
} }
break; break;
case "m.room.join_rules": case "m.room.join_rules":
if (!this.showOnlyUserStatusMessages()) { if (this.showAllStatusMessages) {
return RoomJoinRules; return RoomJoinRules;
} }
break; break;
case "m.room.power_levels": case "m.room.power_levels":
if (!this.showOnlyUserStatusMessages()) { if (this.showAllStatusMessages) {
return RoomPowerLevelsChanged; return RoomPowerLevelsChanged;
} }
break; break;
case "m.room.guest_access": case "m.room.guest_access":
if (!this.showOnlyUserStatusMessages()) { if (this.showAllStatusMessages) {
return RoomGuestAccessChanged; return RoomGuestAccessChanged;
} }
break; break;
case "m.room.encryption": case "m.room.encryption":
if (!this.showOnlyUserStatusMessages()) { if (this.showAllStatusMessages) {
return RoomEncrypted; return RoomEncrypted;
} }
break; break;

View file

@ -0,0 +1,18 @@
export default {
computed: {
showOwnJoins() {
return !this.$matrix.isDirectRoom(this.room);
},
showAllStatusMessages() {
// We say that if you can redact events, you are ad admin.
// NOTE!!! This assumes that there is a property named "room" on THIS.
const me = this.room && this.room.getMember(this.$matrix.currentUserId);
let isModerator =
me && this.room.currentState && this.room.currentState.hasSufficientPowerLevelFor("redact", me.powerLevel);
const show = this.$config.show_status_messages;
return show !== "never" && (show !== "moderators" || isModerator)
},
},
}