Files
letro-ios/ElementX/Sources/Screens/StartChatScreen/StartChatScreenModels.swift
Mauro aa9aec7d07 Bottom Sheet to confirm DM creation (#3739)
* created the view to hold the bottom sheet

* added the sheet to the start chat screen

* switched the alert with the bottom sheet

in the room member details

* add a small delay to not always show the loader

* suggested PR changes

* pr suggestions and updated tests
2025-02-05 12:28:00 +00:00

50 lines
1.2 KiB
Swift

//
// Copyright 2022-2024 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 StartChatScreenErrorType: Error {
case failedCreatingRoom
case unknown
}
enum StartChatScreenViewModelAction {
case close
case createRoom
case openRoom(withIdentifier: String)
}
struct StartChatScreenViewState: BindableState {
let userID: String
var bindings = StartChatScreenViewStateBindings()
var usersSection: UserDiscoverySection = .init(type: .suggestions, users: [])
var isSearching: Bool {
!bindings.searchQuery.isEmpty
}
var hasEmptySearchResults: Bool {
isSearching && usersSection.type == .searchResult && usersSection.users.isEmpty
}
}
struct StartChatScreenViewStateBindings {
var searchQuery = ""
/// Information describing the currently displayed alert.
var alertInfo: AlertInfo<StartChatScreenErrorType>?
var selectedUserToInvite: UserProfileProxy?
}
enum StartChatScreenViewAction {
case close
case createRoom
case createDM(user: UserProfileProxy)
case selectUser(UserProfileProxy)
}