From 2d6f5d3df893b971f30464b90ccc715636b5b636 Mon Sep 17 00:00:00 2001 From: N-Pex Date: Tue, 9 Apr 2024 14:34:07 +0200 Subject: [PATCH 1/2] When retention timer hits, make event "invisible" This means we support invisible messages now (but currently have no means for admin to manually mark messages as such) --- src/components/Chat.vue | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/components/Chat.vue b/src/components/Chat.vue index ee5e208..ff26d40 100644 --- a/src/components/Chat.vue +++ b/src/components/Chat.vue @@ -873,7 +873,11 @@ export default { * Set events to display. At the same time, filter out messages that are past rentention period etc. */ setEvents(events) { - this.events = this.removeTimedOutEvents(events); + this.events = this.filterOutOldAndInvisible(events); + }, + + filterOutOldAndInvisible(events) { + return this.removeTimedOutEvents(events.filter((e) => e.messageVisibility().visible)); }, updateRetentionTimer(maybeEvent) { @@ -901,14 +905,18 @@ export default { } return events.filter((e) => { if (maxLifetime > 0 && !e.isState()) { // Keep all state events - return e.getLocalAge() < maxLifetime; + if (e.getLocalAge() < maxLifetime) { + return true; + } + e.applyVisibilityEvent({ visible: false, eventId: e.getId(), reason: null}); + return true; } return true; }); }, onRetentionTimer() { - const events = this.removeTimedOutEvents(this.events); + const events = this.filterOutOldAndInvisible(this.events); if (events.length != this.events.length) { this.events = events; // Changed } From 12467f8a18b893e888fddd485b18714983fb95cb Mon Sep 17 00:00:00 2001 From: N-Pex Date: Thu, 11 Apr 2024 11:27:07 +0200 Subject: [PATCH 2/2] Move PurgeDialog to Chat. Improve robustness of purge. Also, set message retention to 60 seconds and make sure online user "forget"s room. --- src/components/Chat.vue | 12 ++++++++++-- src/components/ChatHeader.vue | 8 +------- src/components/ChatHeaderPrivate.vue | 7 +------ src/services/matrix.service.js | 29 +++++++++++++++++++--------- 4 files changed, 32 insertions(+), 24 deletions(-) diff --git a/src/components/Chat.vue b/src/components/Chat.vue index ff26d40..1e20735 100644 --- a/src/components/Chat.vue +++ b/src/components/Chat.vue @@ -3,10 +3,12 @@ + + + @@ -349,6 +354,7 @@ import AudioLayout from "./AudioLayout.vue"; import FileDropLayout from "./file_mode/FileDropLayout"; import roomTypeMixin from "./roomTypeMixin"; import roomMembersMixin from "./roomMembersMixin"; +import PurgeRoomDialog from "../components/PurgeRoomDialog"; const sizeOf = require("image-size"); const dataUriToBuffer = require("data-uri-to-buffer"); @@ -400,7 +406,8 @@ export default { CreatePollDialog, AudioLayout, FileDropLayout, - UserProfileDialog + UserProfileDialog, + PurgeRoomDialog, }, data() { @@ -483,7 +490,8 @@ export default { * A timer to handle message retention/auto deletion */ retentionTimer: null, - showProfileDialog: false + showProfileDialog: false, + showPurgeConfirmation: false, }; }, diff --git a/src/components/ChatHeader.vue b/src/components/ChatHeader.vue index e075d06..d619e93 100644 --- a/src/components/ChatHeader.vue +++ b/src/components/ChatHeader.vue @@ -39,7 +39,7 @@ + @click.stop="$emit('purge')"> $vuetify.icons.ic_moderator-delete @@ -65,9 +65,6 @@ - - - @@ -78,7 +75,6 @@ import LeaveRoomDialog from "../components/LeaveRoomDialog"; import ProfileInfoPopup from "../components/ProfileInfoPopup"; import MoreMenuPopup from "../components/MoreMenuPopup"; import profileInfoMixin from "../components/profileInfoMixin"; -import PurgeRoomDialog from "../components/PurgeRoomDialog"; import RoomExport from "../components/RoomExport"; import roomInfoMixin from "./roomInfoMixin"; @@ -90,7 +86,6 @@ export default { LeaveRoomDialog, ProfileInfoPopup, MoreMenuPopup, - PurgeRoomDialog, RoomExport }, data() { @@ -98,7 +93,6 @@ export default { memberCount: null, showLeaveConfirmation: false, showProfileInfo: false, - showPurgeConfirmation: false, showMoreMenu: false, downloadingChat: false, showMissedItemsInfo: false, diff --git a/src/components/ChatHeaderPrivate.vue b/src/components/ChatHeaderPrivate.vue index 133de7a..dd196cb 100644 --- a/src/components/ChatHeaderPrivate.vue +++ b/src/components/ChatHeaderPrivate.vue @@ -44,7 +44,7 @@ + @click.stop="$emit('purge')"> $vuetify.icons.ic_moderator-delete