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 }