A container for relation events that supports easy access to common ways of aggregating such events. Each instance holds events that of a single relation type and event type. All of the events also relate to the same original event.

The typical way to get one of these containers is via EventTimelineSet#getRelationsForEvent.

Hierarchy

Constructors

Properties

annotationsByKey: Record<string, Set<MatrixEvent>> = {}
annotationsBySender: Record<string, Set<MatrixEvent>> = {}
client: MatrixClient
creationEmitted: boolean = false
eventType: string

The relation event's type, such as "m.reaction", etc.

relationEventIds: Set<string> = ...
relationType: string

The type of relation involved, such as "m.annotation", "m.reference", "m.replace", etc.

relations: Set<MatrixEvent> = ...
sortedAnnotationsByKey: [string, Set<MatrixEvent>][] = []
targetEvent: null | MatrixEvent = null

Methods

  • Get all events in this collection grouped by sender.

    This is currently only supported for the annotation relation type.

    Returns

    An object with each relation sender as a key and the matching Set of events for that sender as a value.

    Returns null | Record<string, Set<MatrixEvent>>

  • Returns the most recent (and allowed) m.replace relation, if any.

    This is currently only supported for the m.replace relation type, once the target event is known, see addEvent.

    Returns

    Returns Promise<null | MatrixEvent>

  • Get all relation events in this collection.

    These are currently in the order of insertion to this collection, which won't match timeline order in the case of scrollback. TODO: Tweak addEvent to insert correctly for scrollback.

    Returns

    Relation events in insertion order.

    Returns MatrixEvent[]

  • Get all events in this collection grouped by key and sorted by descending event count in each group.

    This is currently only supported for the annotation relation type.

    Returns

    An array of [key, events] pairs sorted by descending event count. The events are stored in a Set (which preserves insertion order).

    Returns null | [string, Set<MatrixEvent>][]

  • For relations that have been redacted, we want to remove them from aggregation data sets and emit an update event.

    To do so, we listen for Event.beforeRedaction, which happens:

    • after the server accepted the redaction and remote echoed back to us
    • before the original event has been marked redacted in the client

    Parameters

    • redactedEvent: MatrixEvent

      The original relation event that is about to be redacted.

    Returns Promise<void>

Generated using TypeDoc