diff --git a/src/models/event.ts b/src/models/event.ts index fcbdba3fa..849809d0f 100644 --- a/src/models/event.ts +++ b/src/models/event.ts @@ -33,7 +33,7 @@ import { import { Crypto } from "../crypto"; import { deepSortedObjectEntries } from "../utils"; import { RoomMember } from "./room-member"; -import { Thread } from "./thread"; +import { Thread, THREAD_EVENTS } from "./thread"; import { IActionsObject } from '../pushprocessor'; import { ReEmitter } from '../ReEmitter'; @@ -1321,7 +1321,7 @@ export class MatrixEvent extends EventEmitter { */ public setThread(thread: Thread): void { this.thread = thread; - this.reEmitter.reEmit(thread, ["Thread.ready", "Thread.update"]); + this.reEmitter.reEmit(thread, [THREAD_EVENTS.ready, THREAD_EVENTS.update]); } /** diff --git a/src/models/room.ts b/src/models/room.ts index 41d417417..82b098e78 100644 --- a/src/models/room.ts +++ b/src/models/room.ts @@ -35,7 +35,7 @@ import { IRoomVersionsCapability, MatrixClient, PendingEventOrdering, RoomVersio import { JoinRule, ResizeMethod } from "../@types/partials"; import { Filter } from "../filter"; import { RoomState } from "./room-state"; -import { Thread } from "./thread"; +import { Thread, THREAD_EVENTS } from "./thread"; // These constants are used as sane defaults when the homeserver doesn't support // the m.room_versions capability. In practice, KNOWN_SAFE_ROOM_VERSION should be @@ -1074,9 +1074,9 @@ export class Room extends EventEmitter { public addThread(thread: Thread): Set { this.threads.add(thread); if (!thread.ready) { - thread.once("Thread.ready", this.dedupeThreads); - this.emit("Thread.update", thread); - this.reEmitter.reEmit(thread, ["Thread.update", "Thread.ready"]); + thread.once(THREAD_EVENTS.ready, this.dedupeThreads); + this.emit(THREAD_EVENTS.update, thread); + this.reEmitter.reEmit(thread, [THREAD_EVENTS.update, THREAD_EVENTS.ready]); } return this.threads; } diff --git a/src/models/thread.ts b/src/models/thread.ts index 0415c554a..b0a14a67f 100644 --- a/src/models/thread.ts +++ b/src/models/thread.ts @@ -20,6 +20,11 @@ import { MatrixEvent } from "./event"; import { EventTimelineSet } from './event-timeline-set'; import { Room } from './room'; +export enum THREAD_EVENTS { + ready = "Thread.ready", + update = "Thread.update" +} + /** * @experimental */ @@ -73,7 +78,7 @@ export class Thread extends EventEmitter { if (this.ready) { this.client.decryptEventIfNeeded(event, {}); } - this.emit("Thread.update", this); + this.emit(THREAD_EVENTS.ready, this); } /** @@ -96,7 +101,7 @@ export class Thread extends EventEmitter { await this.fetchReplyChain(); } else { await this.decryptEvents(); - this.emit("Thread.ready", this); + this.emit(THREAD_EVENTS.ready, this); } } } @@ -193,4 +198,25 @@ export class Thread extends EventEmitter { public has(eventId: string): boolean { return this.timelineSet.findEventById(eventId) instanceof MatrixEvent; } + + public on(event: THREAD_EVENTS, listener: (...args: any[]) => void): this { + super.on(event, listener); + return this; + } + public once(event: THREAD_EVENTS, listener: (...args: any[]) => void): this { + super.once(event, listener); + return this; + } + public off(event: THREAD_EVENTS, listener: (...args: any[]) => void): this { + super.off(event, listener); + return this; + } + public addListener(event: THREAD_EVENTS, listener: (...args: any[]) => void): this { + super.addListener(event, listener); + return this; + } + public removeListener(event: THREAD_EVENTS, listener: (...args: any[]) => void): this { + super.removeListener(event, listener); + return this; + } }