Skip to content

Commit 9581fbb

Browse files
committed
Only add local receipt if it's after existing receipt
1 parent 063d69e commit 9581fbb

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

src/models/thread.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,16 @@ export class Thread extends ReadReceipt<EmittedEvents, EventHandlerMap> {
203203
): void => {
204204
// Add a synthesized receipt when paginating forward in the timeline
205205
if (!toStartOfTimeline) {
206-
room!.addLocalEchoReceipt(event.getSender()!, event, ReceiptType.Read);
206+
const sender = event.getSender();
207+
if (sender) {
208+
const existingReceipt = this.getReadReceiptForUserId(sender);
209+
const existingTimespace = existingReceipt?.data?.ts ?? 0;
210+
const recursionSupport =
211+
this.client.canSupport.get(Feature.RelationsRecursion) ?? ServerSupport.Unsupported;
212+
if (recursionSupport === ServerSupport.Unsupported && existingTimespace < event.getTs()) {
213+
room!.addLocalEchoReceipt(event.getSender()!, event, ReceiptType.Read);
214+
}
215+
}
207216
}
208217
this.onEcho(event, toStartOfTimeline ?? false);
209218
};

0 commit comments

Comments
 (0)