You've already forked matrix-js-sdk
mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-11-26 17:03:12 +03:00
Merge pull request #1765 from SimonBrandner/fix/add-event-meta-for-filtered/5692
Call `setEventMetadata()` for filtered `timelineSet`s
This commit is contained in:
@@ -22,6 +22,7 @@ import { RoomState } from "./room-state";
|
|||||||
import { EventTimelineSet } from "./event-timeline-set";
|
import { EventTimelineSet } from "./event-timeline-set";
|
||||||
import { MatrixEvent } from "./event";
|
import { MatrixEvent } from "./event";
|
||||||
import { Filter } from "../filter";
|
import { Filter } from "../filter";
|
||||||
|
import { EventType } from "../@types/event";
|
||||||
|
|
||||||
export enum Direction {
|
export enum Direction {
|
||||||
Backward = "b",
|
Backward = "b",
|
||||||
@@ -49,15 +50,16 @@ export class EventTimeline {
|
|||||||
* @param {boolean} toStartOfTimeline if true the event's forwardLooking flag is set false
|
* @param {boolean} toStartOfTimeline if true the event's forwardLooking flag is set false
|
||||||
*/
|
*/
|
||||||
static setEventMetadata(event: MatrixEvent, stateContext: RoomState, toStartOfTimeline: boolean): void {
|
static setEventMetadata(event: MatrixEvent, stateContext: RoomState, toStartOfTimeline: boolean): void {
|
||||||
// set sender and target properties
|
// We always check if the event doesn't already have the property. We do
|
||||||
event.sender = stateContext.getSentinelMember(
|
// this to avoid overriding non-sentinel members by sentinel ones when
|
||||||
event.getSender(),
|
// adding the event to a filtered timeline
|
||||||
);
|
if (!event.sender) {
|
||||||
if (event.getType() === "m.room.member") {
|
event.sender = stateContext.getSentinelMember(event.getSender());
|
||||||
event.target = stateContext.getSentinelMember(
|
|
||||||
event.getStateKey(),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
if (!event.target && event.getType() === EventType.RoomMember) {
|
||||||
|
event.target = stateContext.getSentinelMember(event.getStateKey());
|
||||||
|
}
|
||||||
|
|
||||||
if (event.isState()) {
|
if (event.isState()) {
|
||||||
// room state has no concept of 'old' or 'current', but we want the
|
// room state has no concept of 'old' or 'current', but we want the
|
||||||
// room state to regress back to previous values if toStartOfTimeline
|
// room state to regress back to previous values if toStartOfTimeline
|
||||||
@@ -345,15 +347,16 @@ export class EventTimeline {
|
|||||||
*/
|
*/
|
||||||
public addEvent(event: MatrixEvent, atStart: boolean): void {
|
public addEvent(event: MatrixEvent, atStart: boolean): void {
|
||||||
const stateContext = atStart ? this.startState : this.endState;
|
const stateContext = atStart ? this.startState : this.endState;
|
||||||
|
|
||||||
// only call setEventMetadata on the unfiltered timelineSets
|
|
||||||
const timelineSet = this.getTimelineSet();
|
const timelineSet = this.getTimelineSet();
|
||||||
if (timelineSet.room &&
|
|
||||||
timelineSet.room.getUnfilteredTimelineSet() === timelineSet) {
|
if (timelineSet.room) {
|
||||||
EventTimeline.setEventMetadata(event, stateContext, atStart);
|
EventTimeline.setEventMetadata(event, stateContext, atStart);
|
||||||
|
|
||||||
// modify state
|
// modify state but only on unfiltered timelineSets
|
||||||
if (event.isState()) {
|
if (
|
||||||
|
event.isState() &&
|
||||||
|
timelineSet.room.getUnfilteredTimelineSet() === timelineSet
|
||||||
|
) {
|
||||||
stateContext.setStateEvents([event]);
|
stateContext.setStateEvents([event]);
|
||||||
// it is possible that the act of setting the state event means we
|
// it is possible that the act of setting the state event means we
|
||||||
// can set more metadata (specifically sender/target props), so try
|
// can set more metadata (specifically sender/target props), so try
|
||||||
|
|||||||
Reference in New Issue
Block a user