Skip to content

Commit 36906e2

Browse files
authored
Load room history if necessary when searching for MSC3089 getFileEvent() (#2066)
1 parent 3eaed30 commit 36906e2

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

src/models/MSC3089Branch.ts

+9-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import { MatrixClient } from "../client";
1818
import { IEncryptedFile, RelationType, UNSTABLE_MSC3089_BRANCH } from "../@types/event";
1919
import { IContent, MatrixEvent } from "./event";
2020
import { MSC3089TreeSpace } from "./MSC3089TreeSpace";
21+
import { EventTimeline } from "./event-timeline";
2122
import { FileType } from "../http-api";
2223

2324
/**
@@ -140,7 +141,14 @@ export class MSC3089Branch {
140141
const room = this.client.getRoom(this.roomId);
141142
if (!room) throw new Error("Unknown room");
142143

143-
const event = room.getUnfilteredTimelineSet().findEventById(this.id);
144+
let event: MatrixEvent | undefined = room.getUnfilteredTimelineSet().findEventById(this.id);
145+
146+
// keep scrolling back if needed until we find the event or reach the start of the room:
147+
while (!event && room.getLiveTimeline().getState(EventTimeline.FORWARDS).paginationToken) {
148+
await this.client.scrollback(room, 100);
149+
event = room.getUnfilteredTimelineSet().findEventById(this.id);
150+
}
151+
144152
if (!event) throw new Error("Failed to find event");
145153

146154
// Sometimes the event isn't decrypted for us, so do that. We specifically set `emit: true`

0 commit comments

Comments
 (0)