More space tweaks (#4584)

* Remove the room count everywhere.

* Remove the parent name from restricted spaces.
This commit is contained in:
Doug
2025-10-07 10:57:53 +01:00
committed by GitHub
parent 8cd5c9862e
commit c03ed528ba
71 changed files with 140 additions and 172 deletions
@@ -34,7 +34,7 @@ class LeaveSpaceHandleProxy: Identifiable {
room.spaceRoom.roomId != spaceID else {
return nil
}
return .init(spaceRoomProxy: SpaceRoomProxy(spaceRoom: room.spaceRoom, parent: nil),
return .init(spaceRoomProxy: SpaceRoomProxy(spaceRoom: room.spaceRoom),
isLastAdmin: room.isLastAdmin,
isSelected: !room.isLastAdmin)
}
@@ -21,12 +21,11 @@ class SpaceRoomListProxy: SpaceRoomListProxyProtocol {
private let paginationStateHandle: TaskHandle
let paginationStatePublisher: CurrentValuePublisher<SpaceRoomListPaginationState, Never>
// Parent is temporary until we get the restricted AllowRules from the server.
init(_ spaceRoomList: SpaceRoomListProtocol, parent: SpaceRoomProxyProtocol?) throws {
init(_ spaceRoomList: SpaceRoomListProtocol) throws {
guard let spaceRoom = spaceRoomList.space() else { throw SpaceRoomListProxyError.missingSpace }
self.spaceRoomList = spaceRoomList
spaceRoomProxy = SpaceRoomProxy(spaceRoom: spaceRoom, parent: parent)
spaceRoomProxy = SpaceRoomProxy(spaceRoom: spaceRoom)
let paginationStateSubject = CurrentValueSubject<SpaceRoomListPaginationState, Never>(spaceRoomList.paginationState())
paginationStatePublisher = paginationStateSubject.asCurrentValuePublisher()
@@ -56,27 +55,27 @@ class SpaceRoomListProxy: SpaceRoomListProxyProtocol {
for update in updates {
switch update {
case .append(let spaceRooms):
rooms.append(contentsOf: spaceRooms.map { SpaceRoomProxy(spaceRoom: $0, parent: spaceRoomProxy) })
rooms.append(contentsOf: spaceRooms.map(SpaceRoomProxy.init))
case .clear:
rooms.removeAll()
case .pushFront(let spaceRoom):
rooms.insert(SpaceRoomProxy(spaceRoom: spaceRoom, parent: spaceRoomProxy), at: 0)
rooms.insert(SpaceRoomProxy(spaceRoom: spaceRoom), at: 0)
case .pushBack(let spaceRoom):
rooms.append(SpaceRoomProxy(spaceRoom: spaceRoom, parent: spaceRoomProxy))
rooms.append(SpaceRoomProxy(spaceRoom: spaceRoom))
case .popFront:
rooms.removeFirst()
case .popBack:
rooms.removeLast()
case .insert(let index, let spaceRoom):
rooms.insert(SpaceRoomProxy(spaceRoom: spaceRoom, parent: spaceRoomProxy), at: Int(index))
rooms.insert(SpaceRoomProxy(spaceRoom: spaceRoom), at: Int(index))
case .set(let index, let spaceRoom):
rooms[Int(index)] = SpaceRoomProxy(spaceRoom: spaceRoom, parent: spaceRoomProxy)
rooms[Int(index)] = SpaceRoomProxy(spaceRoom: spaceRoom)
case .remove(let index):
rooms.remove(at: Int(index))
case .truncate(let length):
rooms.removeSubrange(Int(length)..<rooms.count)
case .reset(let spaceRooms):
rooms = spaceRooms.map { SpaceRoomProxy(spaceRoom: $0, parent: spaceRoomProxy) }
rooms = spaceRooms.map(SpaceRoomProxy.init)
}
}
@@ -10,15 +10,9 @@ import MatrixRustSDK
class SpaceRoomProxy: SpaceRoomProxyProtocol {
private let spaceRoom: SpaceRoom
let parent: SpaceRoomProxyProtocol?
/// Proxies a `SpaceRoom` from the Rust SDK.
/// - Parameters:
/// - spaceRoom: The `SpaceRoom` to proxy.
/// - parent: A temporary parameter until we get the `AllowRule`s from the server.
init(spaceRoom: SpaceRoom, parent: SpaceRoomProxyProtocol?) {
init(spaceRoom: SpaceRoom) {
self.spaceRoom = spaceRoom
self.parent = parent
}
lazy var id = spaceRoom.roomId
@@ -11,7 +11,7 @@ import MatrixRustSDK
enum SpaceRoomProxyVisibility: Equatable {
case `public`
case `private`
case restricted(parentName: String)
case restricted
// We can add the external case in here eventually.
}
@@ -23,8 +23,6 @@ protocol SpaceRoomProxyProtocol {
var isSpace: Bool { get }
var isDirect: Bool? { get }
/// A temporary property until we get the `AllowRule`s from the server.
var parent: SpaceRoomProxyProtocol? { get }
var childrenCount: Int { get }
var joinedMembersCount: Int { get }
@@ -63,12 +61,7 @@ extension SpaceRoomProxyProtocol {
case .public:
.public
case .restricted, .knockRestricted:
// Temporary solution until the server includes the `AllowRule` values (they're always empty right now).
if let parent {
.restricted(parentName: parent.computedName)
} else {
.private
}
.restricted
case .invite, .knock, .private, .custom:
.private
case .none:
@@ -30,10 +30,9 @@ class SpaceServiceProxy: SpaceServiceProxyProtocol {
})
}
// The parent here is temporary until we get the restricted AllowRules from the server.
func spaceRoomList(spaceID: String, parent: SpaceRoomProxyProtocol?) async -> Result<SpaceRoomListProxyProtocol, SpaceServiceProxyError> {
do {
return try await .success(SpaceRoomListProxy(spaceService.spaceRoomList(spaceId: spaceID), parent: parent))
return try await .success(SpaceRoomListProxy(spaceService.spaceRoomList(spaceId: spaceID)))
} catch {
MXLog.error("Failed creating space room list for \(spaceID): \(error)")
return .failure(.sdkError(error))
@@ -57,27 +56,27 @@ class SpaceServiceProxy: SpaceServiceProxyProtocol {
for update in updates {
switch update {
case .append(let spaceRooms):
spaces.append(contentsOf: spaceRooms.map { SpaceRoomProxy(spaceRoom: $0, parent: nil) })
spaces.append(contentsOf: spaceRooms.map(SpaceRoomProxy.init))
case .clear:
spaces.removeAll()
case .pushFront(let spaceRoom):
spaces.insert(SpaceRoomProxy(spaceRoom: spaceRoom, parent: nil), at: 0)
spaces.insert(SpaceRoomProxy(spaceRoom: spaceRoom), at: 0)
case .pushBack(let spaceRoom):
spaces.append(SpaceRoomProxy(spaceRoom: spaceRoom, parent: nil))
spaces.append(SpaceRoomProxy(spaceRoom: spaceRoom))
case .popFront:
spaces.removeFirst()
case .popBack:
spaces.removeLast()
case .insert(let index, let spaceRoom):
spaces.insert(SpaceRoomProxy(spaceRoom: spaceRoom, parent: nil), at: Int(index))
spaces.insert(SpaceRoomProxy(spaceRoom: spaceRoom), at: Int(index))
case .set(let index, let spaceRoom):
spaces[Int(index)] = SpaceRoomProxy(spaceRoom: spaceRoom, parent: nil)
spaces[Int(index)] = SpaceRoomProxy(spaceRoom: spaceRoom)
case .remove(let index):
spaces.remove(at: Int(index))
case .truncate(let length):
spaces.removeSubrange(Int(length)..<spaces.count)
case .reset(let spaceRooms):
spaces = spaceRooms.map { SpaceRoomProxy(spaceRoom: $0, parent: nil) }
spaces = spaceRooms.map(SpaceRoomProxy.init)
}
}