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
+17 -12
View File
@@ -368,28 +368,33 @@ class RoomProxy: RoomProxyProtocol {
}
}
func markAsUnread() async -> Result<Void, RoomProxyError> {
MXLog.info("Marking room \(id) as unread")
func flagAsUnread() async -> Result<Void, RoomProxyError> {
MXLog.info("Flagging room \(id) as unread")
do {
try await room.markAsUnread()
try await room.setUnreadFlag(newValue: true)
return .success(())
} catch {
MXLog.error("Failed marking room \(id) as unread with error: \(error)")
return .failure(.failedMarkingAsUnread)
return .failure(.failedFlaggingAsUnread)
}
}
func markAsRead(sendReadReceipts: Bool, receiptType: ReceiptType) async -> Result<Void, RoomProxyError> {
MXLog.info("Marking room \(id) as read, sending read receipts: \(sendReadReceipts)")
func flagAsRead() async -> Result<Void, RoomProxyError> {
MXLog.info("Flagging room \(id) as read")
do {
if sendReadReceipts {
try await room.markAsReadAndSendReadReceipt(receiptType: receiptType)
} else {
try await room.markAsRead()
}
try await room.setUnreadFlag(newValue: false)
return .success(())
} catch {
MXLog.error("Failed marking room \(id) as read with error: \(error)")
return .failure(.failedFlaggingAsRead)
}
}
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)")
@@ -31,8 +31,9 @@ enum RoomProxyError: Error, Equatable {
case failedRemovingAvatar
case failedUploadingAvatar
case failedCheckingPermission
case failedFlaggingAsUnread
case failedFlaggingAsRead
case failedMarkingAsRead
case failedMarkingAsUnread
case failedSendingTypingNotice
}
@@ -108,9 +109,11 @@ protocol RoomProxyProtocol {
func canUserTriggerRoomNotification(userID: String) async -> Result<Bool, RoomProxyError>
func markAsUnread() async -> Result<Void, RoomProxyError>
func flagAsUnread() async -> Result<Void, RoomProxyError>
func markAsRead(sendReadReceipts: Bool, receiptType: ReceiptType) async -> Result<Void, RoomProxyError>
func flagAsRead() async -> Result<Void, RoomProxyError>
func markAsRead(receiptType: ReceiptType) async -> Result<Void, RoomProxyError>
/// https://spec.matrix.org/v1.9/client-server-api/#typing-notifications
@discardableResult func sendTypingNotification(isTyping: Bool) async -> Result<Void, RoomProxyError>