Pin/Unpin Logic (#3084)

This commit is contained in:
Mauro
2024-07-26 20:41:00 +02:00
committed by GitHub
parent 5a4d21ab7a
commit 0da2d4917b
24 changed files with 659 additions and 69 deletions
+16 -2
View File
@@ -16,9 +16,8 @@
import Combine
import Foundation
import UIKit
import MatrixRustSDK
import UIKit
class RoomProxy: RoomProxyProtocol {
private let roomListItem: RoomListItemProtocol
@@ -87,6 +86,12 @@ class RoomProxy: RoomProxyProtocol {
}
}
var pinnedEventIDs: [String] {
get async {
await (try? room.roomInfo().pinnedEventIds) ?? []
}
}
var hasOngoingCall: Bool {
room.hasActiveRoomCall()
}
@@ -493,6 +498,15 @@ class RoomProxy: RoomProxyProtocol {
}
}
func canUserPinOrUnpin(userID: String) async -> Result<Bool, RoomProxyError> {
do {
return try await .success(room.canUserPinUnpin(userId: userID))
} catch {
MXLog.error("Failed checking if the user can pin or unnpin: \(error)")
return .failure(.sdkError(error))
}
}
// MARK: - Moderation
func kickUser(_ userID: String) async -> Result<Void, RoomProxyError> {
@@ -38,6 +38,7 @@ protocol RoomProxyProtocol {
var isSpace: Bool { get }
var isEncrypted: Bool { get }
var isFavourite: Bool { get async }
var pinnedEventIDs: [String] { get async }
var membership: Membership { get }
var hasOngoingCall: Bool { get }
var canonicalAlias: String? { get }
@@ -121,6 +122,7 @@ protocol RoomProxyProtocol {
func canUserKick(userID: String) async -> Result<Bool, RoomProxyError>
func canUserBan(userID: String) async -> Result<Bool, RoomProxyError>
func canUserTriggerRoomNotification(userID: String) async -> Result<Bool, RoomProxyError>
func canUserPinOrUnpin(userID: String) async -> Result<Bool, RoomProxyError>
// MARK: - Moderation