mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 21:33:26 +00:00
53 lines
1.6 KiB
Swift
53 lines
1.6 KiB
Swift
//
|
|
// Copyright 2025 Element Creations Ltd.
|
|
//
|
|
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
|
|
// Please see LICENSE files in the repository root for full details.
|
|
//
|
|
|
|
enum LeaveSpaceViewAction {
|
|
case confirmLeaveSpace
|
|
case deselectAll
|
|
case selectAll
|
|
case toggleRoom(roomID: String)
|
|
case rolesAndPermissions
|
|
case transferOwnership
|
|
case cancel
|
|
}
|
|
|
|
struct LeaveSpaceViewState: BindableState {
|
|
let spaceName: String
|
|
let canEditRolesAndPermissions: Bool
|
|
let leaveHandle: LeaveSpaceHandleProxy
|
|
|
|
var title: String {
|
|
switch leaveHandle.mode {
|
|
case .spaceNeedsNewOwner(let useTransferOwnershipFlow):
|
|
useTransferOwnershipFlow ? L10n.leaveRoomAlertSelectNewOwnerTitle : L10n.screenLeaveSpaceTitleLastAdmin(spaceName)
|
|
default: L10n.screenLeaveSpaceTitle(spaceName)
|
|
}
|
|
}
|
|
|
|
var subtitle: String? {
|
|
switch leaveHandle.mode {
|
|
case .manyRooms: L10n.screenLeaveSpaceSubtitle
|
|
case .roomsNeedNewOwner: L10n.screenLeaveSpaceSubtitleOnlyLastAdmin
|
|
case .noRooms: nil
|
|
case .spaceNeedsNewOwner(let useTransferOwnershipFlow):
|
|
useTransferOwnershipFlow ? L10n.screenLeaveSpaceSubtitleLastOwner(spaceName) : L10n.screenLeaveSpaceSubtitleLastAdmin
|
|
}
|
|
}
|
|
|
|
var confirmationTitle: String {
|
|
let selectedCount = leaveHandle.selectedCount
|
|
return selectedCount > 0 ? L10n.screenLeaveSpaceSubmit(selectedCount) : L10n.actionLeaveSpace
|
|
}
|
|
}
|
|
|
|
enum LeaveSpaceViewModelAction {
|
|
case didLeaveSpace
|
|
case presentRolesAndPermissions
|
|
case presentTransferOwnership
|
|
case didCancel
|
|
}
|