Use textForEvent to determine if an event is worth rendering

This commit is contained in:
Travis Ralston 2020-03-04 11:44:12 -07:00
parent d95f843cd0
commit b06a82ee80

View file

@ -28,6 +28,7 @@ import {MatrixClientPeg} from '../../MatrixClientPeg';
import SettingsStore from '../../settings/SettingsStore'; import SettingsStore from '../../settings/SettingsStore';
import {_t} from "../../languageHandler"; import {_t} from "../../languageHandler";
import {haveTileForEvent} from "../views/rooms/EventTile"; import {haveTileForEvent} from "../views/rooms/EventTile";
import {textForEvent} from "../../TextForEvent";
const CONTINUATION_MAX_INTERVAL = 5 * 60 * 1000; // 5 minutes const CONTINUATION_MAX_INTERVAL = 5 * 60 * 1000; // 5 minutes
const continuedTypes = ['m.sticker', 'm.room.message']; const continuedTypes = ['m.sticker', 'm.room.message'];
@ -963,15 +964,11 @@ class MemberGrouper {
add(ev) { add(ev) {
if (ev.getType() === 'm.room.member') { if (ev.getType() === 'm.room.member') {
// We'll just double check that it's worth our time to do so... // We'll just double check that it's worth our time to do so, through an
if (ev.getPrevContent()) { // ugly hack. If textForEvent returns something, we should group it for
const membershipChange = ev.getPrevContent()['membership'] !== ev.getContent()['membership']; // rendering but if it doesn't then we'll exclude it.
const displayNameChange = ev.getPrevContent()['displayname'] !== ev.getContent()['displayname']; const renderText = textForEvent(ev);
const avatarChange = ev.getPrevContent()['avatar_url'] !== ev.getContent()['avatar_url']; if (!renderText || renderText.trim().length === 0) return; // quietly ignore
if (!membershipChange && !displayNameChange && !avatarChange) {
return; // Not a substantial change - quietly ignore
}
}
} }
this.readMarker = this.readMarker || this.panel._readMarkerForEvent(ev.getId()); this.readMarker = this.readMarker || this.panel._readMarkerForEvent(ev.getId());
this.events.push(ev); this.events.push(ev);