don't aggregate relations on redacted events
This commit is contained in:
parent
ce5409dc26
commit
150f58a6b3
3 changed files with 9 additions and 5 deletions
|
@ -21,3 +21,7 @@ export function getPrevContentFromStateEvent(event) {
|
|||
}
|
||||
|
||||
export const REDACTION_TYPE = "m.room.redaction";
|
||||
|
||||
export function isRedacted(event) {
|
||||
return !!event?.unsigned?.redacted_because;
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ limitations under the License.
|
|||
*/
|
||||
|
||||
import {BaseEventEntry} from "./BaseEventEntry.js";
|
||||
import {getPrevContentFromStateEvent} from "../../common.js";
|
||||
import {getPrevContentFromStateEvent, isRedacted} from "../../common.js";
|
||||
import {getRelatedEventId} from "../relations.js";
|
||||
|
||||
export class EventEntry extends BaseEventEntry {
|
||||
|
@ -115,7 +115,7 @@ export class EventEntry extends BaseEventEntry {
|
|||
}
|
||||
|
||||
get isRedacted() {
|
||||
return super.isRedacted || !!this._eventEntry.event.unsigned?.redacted_because;
|
||||
return super.isRedacted || isRedacted(this._eventEntry.event);
|
||||
}
|
||||
|
||||
get redactionReason() {
|
||||
|
|
|
@ -15,7 +15,7 @@ limitations under the License.
|
|||
*/
|
||||
|
||||
import {EventEntry} from "../entries/EventEntry.js";
|
||||
import {REDACTION_TYPE} from "../../common.js";
|
||||
import {REDACTION_TYPE, isRedacted} from "../../common.js";
|
||||
import {ANNOTATION_RELATION_TYPE, getRelation} from "../relations.js";
|
||||
|
||||
export class RelationWriter {
|
||||
|
@ -58,7 +58,7 @@ export class RelationWriter {
|
|||
const result = await this.writeRelation(sourceEntry, txn, log);
|
||||
// when back-paginating, it can also happen that we've received relations
|
||||
// for this event before, which now upon receiving the target need to be aggregated.
|
||||
if (direction.isBackward) {
|
||||
if (direction.isBackward && !isRedacted(storageEntry.event)) {
|
||||
const relations = await txn.timelineRelations.getAllForTarget(this._roomId, sourceEntry.id);
|
||||
if (relations.length) {
|
||||
for (const r of relations) {
|
||||
|
@ -99,7 +99,7 @@ export class RelationWriter {
|
|||
});
|
||||
} else {
|
||||
const relation = getRelation(sourceEntry.event);
|
||||
if (relation) {
|
||||
if (relation && !isRedacted(targetStorageEntry.event)) {
|
||||
const relType = relation.rel_type;
|
||||
if (relType === ANNOTATION_RELATION_TYPE) {
|
||||
const aggregated = log.wrap("react", log => {
|
||||
|
|
Reference in a new issue