Bump the RustSDK, adopt new marking/flagging rooms as (un)read API and fix sending read receipts when entering rooms or making the app active again

This commit is contained in:
Stefan Ceriu
2024-02-14 11:23:57 +02:00
committed by Stefan Ceriu
parent e11450e61e
commit 5cb5862e5e
15 changed files with 126 additions and 88 deletions
@@ -55,14 +55,9 @@ class MockRoomTimelineController: RoomTimelineControllerProtocol {
return .success(())
}
func sendReadReceipt(for itemID: TimelineItemIdentifier) async -> Result<Void, RoomTimelineControllerError> {
guard let roomProxy, let eventID = itemID.eventID else { return .failure(.generic) }
switch await roomProxy.timeline.sendReadReceipt(for: eventID, type: .read) {
case .success:
return .success(())
case .failure:
return .failure(.generic)
}
func sendReadReceipt(for itemID: TimelineItemIdentifier) async {
guard let roomProxy, let eventID = itemID.eventID else { return }
_ = await roomProxy.timeline.sendReadReceipt(for: eventID, type: .read)
}
func processItemAppearance(_ itemID: TimelineItemIdentifier) async { }
@@ -16,6 +16,7 @@
import Combine
import Foundation
import MatrixRustSDK
import UIKit
class RoomTimelineController: RoomTimelineControllerProtocol {
@@ -91,17 +92,18 @@ class RoomTimelineController: RoomTimelineControllerProtocol {
}
}
func sendReadReceipt(for itemID: TimelineItemIdentifier) async -> Result<Void, RoomTimelineControllerError> {
guard let eventID = itemID.eventID else {
return .failure(.generic)
}
func sendReadReceipt(for itemID: TimelineItemIdentifier) async {
let receiptType: MatrixRustSDK.ReceiptType = appSettings.sharePresence ? .read : .readPrivate
switch await roomProxy.timeline.sendReadReceipt(for: eventID,
type: appSettings.sharePresence ? .read : .readPrivate) {
case .success:
return .success(())
case .failure:
return .failure(.generic)
// Mark the whole room as read if it's the last timeline item
if timelineItems.last?.id == itemID {
_ = await roomProxy.markAsRead(receiptType: receiptType)
} else {
guard let eventID = itemID.eventID else {
return
}
_ = await roomProxy.timeline.sendReadReceipt(for: eventID, type: receiptType)
}
}
@@ -49,7 +49,7 @@ protocol RoomTimelineControllerProtocol {
func paginateBackwards(requestSize: UInt, untilNumberOfItems: UInt) async -> Result<Void, RoomTimelineControllerError>
func sendReadReceipt(for itemID: TimelineItemIdentifier) async -> Result<Void, RoomTimelineControllerError>
func sendReadReceipt(for itemID: TimelineItemIdentifier) async
func sendMessage(_ message: String,
html: String?,
@@ -454,7 +454,7 @@ final class TimelineProxy: TimelineProxyProtocol {
}
func sendReadReceipt(for eventID: String, type: ReceiptType) async -> Result<Void, TimelineProxyError> {
MXLog.info("Sending read receipt for eventID: \(eventID)")
MXLog.verbose("Sending read receipt for eventID: \(eventID)")
sendMessageBackgroundTask = await backgroundTaskService.startBackgroundTask(withName: backgroundTaskName, isReusable: true)
defer {