Files
letro-ios/ElementX/Sources/Screens/Spaces/SpaceScreen/SpaceScreenModels.swift
Mauro 0b3633ea57 Space Settings UI tweaks (#4678)
* design tweaks for the space settings flow

* pr suggestions

* update proj
2025-10-31 12:52:56 +01:00

56 lines
1.6 KiB
Swift

//
// Copyright 2025 Element Creations Ltd.
// Copyright 2025 New Vector Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
// Please see LICENSE files in the repository root for full details.
//
import Foundation
enum SpaceScreenViewModelAction {
case selectSpace(SpaceRoomListProxyProtocol)
case selectUnjoinedSpace(SpaceRoomProxyProtocol)
case selectRoom(roomID: String)
case leftSpace
case displayMembers(roomProxy: JoinedRoomProxyProtocol)
case displaySpaceSettings(roomProxy: JoinedRoomProxyProtocol)
}
struct SpaceScreenViewState: BindableState {
var space: SpaceRoomProxyProtocol
var permalink: URL?
var roomProxy: JoinedRoomProxyProtocol?
var isPaginating = false
var rooms: [SpaceRoomProxyProtocol]
var selectedSpaceRoomID: String?
var joiningRoomIDs: Set<String> = []
var canEditBaseInfo = false
var canEditRolesAndPermissions = false
var isSpaceManagementEnabled: Bool {
canEditBaseInfo || canEditRolesAndPermissions
}
var bindings = SpaceScreenViewStateBindings()
}
struct SpaceScreenViewStateBindings {
var leaveHandle: LeaveSpaceHandleProxy?
}
enum SpaceScreenViewAction {
case spaceAction(SpaceRoomCell.Action)
case leaveSpace
case deselectAllLeaveRoomDetails
case selectAllLeaveRoomDetails
case toggleLeaveSpaceRoomDetails(id: String)
case confirmLeaveSpace
case spaceSettings(roomProxy: JoinedRoomProxyProtocol)
case rolesAndPermissions
case displayMembers(roomProxy: JoinedRoomProxyProtocol)
}