Add the initial implementation for managing spaces. (#4963)

This isn't hooked up into the flows yet.
This commit is contained in:
Doug
2026-01-16 15:29:27 +00:00
committed by GitHub
parent a861c15d96
commit 6a75d80081
33 changed files with 529 additions and 65 deletions
@@ -6,7 +6,7 @@
// Please see LICENSE files in the repository root for full details.
//
import Foundation
import SwiftUI
enum SpaceScreenViewModelAction {
case selectSpace(SpaceRoomListProxyProtocol)
@@ -33,14 +33,30 @@ struct SpaceScreenViewState: BindableState {
var canEditRolesAndPermissions = false
var canEditSecurityAndPrivacy = false
var editMode: EditMode = .inactive
var editModeSelectedIDs: Set<String> = []
var bindings = SpaceScreenViewStateBindings()
var visibleRooms: [SpaceServiceRoomProtocol] {
if editMode == .inactive {
rooms
} else {
rooms.filter { !$0.isSpace }
}
}
var isSpaceManagementEnabled: Bool {
canEditBaseInfo || canEditRolesAndPermissions || canEditSecurityAndPrivacy
}
var bindings = SpaceScreenViewStateBindings()
func isSpaceIDSelected(_ spaceID: String) -> Bool {
selectedSpaceRoomID == spaceID || editModeSelectedIDs.contains(spaceID)
}
}
struct SpaceScreenViewStateBindings {
var isPresentingRemoveChildrenConfirmation = false
var leaveSpaceViewModel: LeaveSpaceViewModel?
}
@@ -49,4 +65,8 @@ enum SpaceScreenViewAction {
case leaveSpace
case spaceSettings(roomProxy: JoinedRoomProxyProtocol)
case displayMembers(roomProxy: JoinedRoomProxyProtocol)
case manageChildren
case removeSelectedChildren
case confirmRemoveSelectedChildren
case finishManagingChildren
}