Lazy load thread list timeline set (#2254)

This commit is contained in:
Germain
2022-03-22 21:34:20 +00:00
committed by GitHub
parent a6fe8797f0
commit e32b8a75ee
+20 -9
View File
@@ -346,15 +346,6 @@ export class Room extends TypedEventEmitter<EmittedEvents, RoomEventHandlerMap>
RoomEvent.TimelineReset,
]);
if (this.client?.supportsExperimentalThreads) {
Promise.all([
this.createThreadTimelineSet(),
this.createThreadTimelineSet(ThreadFilterType.My),
]).then((timelineSets) => {
this.threadsTimelineSets.push(...timelineSets);
});
}
this.fixUpLegacyTimelineFields();
if (this.opts.pendingEventOrdering === PendingEventOrdering.Detached) {
@@ -381,6 +372,26 @@ export class Room extends TypedEventEmitter<EmittedEvents, RoomEventHandlerMap>
}
}
private threadTimelineSetsPromise: Promise<[EventTimelineSet, EventTimelineSet]> | null = null;
public async createThreadsTimelineSets(): Promise<[EventTimelineSet, EventTimelineSet]> {
if (this.threadTimelineSetsPromise) {
return this.threadTimelineSetsPromise;
}
if (this.client?.supportsExperimentalThreads) {
try {
this.threadTimelineSetsPromise = Promise.all([
this.createThreadTimelineSet(),
this.createThreadTimelineSet(ThreadFilterType.My),
]);
const timelineSets = await this.threadTimelineSetsPromise;
this.threadsTimelineSets.push(...timelineSets);
} catch (e) {
this.threadTimelineSetsPromise = null;
}
}
}
/**
* Bulk decrypt critical events in a room
*