Use the timeline when marking a room as read (#4319)

* Forward JoinedRoomProxy.markAsRead to the timeline

The room version was building a fresh timeline even though we already had one.

* Run swiftformat 0.57.0.
This commit is contained in:
Doug
2025-07-14 12:20:41 +01:00
committed by GitHub
parent 53774e26fb
commit e46165119f
8 changed files with 98 additions and 11 deletions
@@ -402,14 +402,16 @@ class JoinedRoomProxy: JoinedRoomProxyProtocol {
return .failure(.sdkError(error))
}
}
func markAsRead(receiptType: ReceiptType) async -> Result<Void, RoomProxyError> {
do {
try await room.markAsRead(receiptType: receiptType)
return .success(())
} catch {
MXLog.error("Failed marking room \(id) as read with error: \(error)")
return .failure(.sdkError(error))
// Defer to the timeline here as room.markAsRead will build a fresh timeline.
switch await timeline.markAsRead(receiptType: receiptType) {
case .success:
.success(())
case .failure(.sdkError(let error)):
.failure(.sdkError(error))
case .failure(let error):
.failure(.timelineError(error))
}
}
@@ -17,6 +17,7 @@ enum RoomProxyError: Error {
case eventNotFound
case missingTransactionID
case failedCreatingPinnedTimeline
case timelineError(TimelineProxyError)
}
/// An enum that describes the relationship between the current user and the room, and contains a reference to the specific implementation of the `RoomProxy`.