UNPKG

@vector-im/matrix-bot-sdk

Version:

TypeScript/JavaScript SDK for Matrix bots and appservices

84 lines (72 loc) 1.86 kB
import { MatrixEvent } from "./Event"; /** * The typical unsigned data found on an event. * @category Matrix event info * @see RoomEvent */ export interface TypicalUnsigned { /** * The age of this event in seconds. */ age?: number; /** * Other properties which may be included. */ [prop: string]: any; } /** * Empty room event content. * @category Matrix event contents */ export interface RoomEventContent { // This is empty so people can avoid using RoomEvent<any> } /** * A Matrix room event. * @category Matrix events */ export class RoomEvent<T extends (Object | unknown) = unknown> extends MatrixEvent<T> { constructor(protected event: any) { super(event); } /** * The event ID of this event. */ public get eventId(): string { return this.event['event_id']; } /** * The timestamp in milliseconds this event was sent. */ public get timestamp(): number { return this.event['origin_server_ts']; } /** * The unsigned content for this event. May have no properties. */ public get unsigned(): TypicalUnsigned { return this.event['unsigned'] || {}; } } /** * A room state event. * @category Matrix events */ export class StateEvent<T extends (Object | unknown) = unknown> extends RoomEvent<T> { constructor(event: any) { super(event); } /** * The state key for this event. May be an empty string. */ public get stateKey(): string { return this.event['state_key']; } /** * The previous content for this state event. Will be an empty * object if there is no previous content. */ public get previousContent(): T { return this.unsigned['prev_content'] || this.event['prev_content'] || {}; // v2, v1, fallback } }