Files
element-x-ios/ElementX/Sources/Screens/HealthChatMemberDirectoryScreen/HealthChatMemberDirectoryScreenModels.swift
T
Sedat Qaja 181c518dc7 feat(healthchat): show default contacts while approval is pending
An unapproved account only gets the server's default contacts, which are
its way to reach support — list them instead of discarding them, and hide
the search field that cannot return anything.
2026-10-19 09:17:35 +02:00

54 lines
1.5 KiB
Swift

//
// Copyright 2026 Novaloop AG
//
// 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 HealthChatMemberDirectoryScreenViewModelAction {
case selectMember(userID: String)
case presentRoom(roomID: String)
case editProfile
case invite
}
nonisolated enum HealthChatMemberDirectoryScreenContent: Equatable {
case loading
case members([HealthChatMember])
/// Not approved yet: the server's explanation alongside the default contacts it still allows.
case pendingApproval(message: String, members: [HealthChatMember])
case failure
}
struct HealthChatMemberDirectoryScreenViewState: BindableState {
var content: HealthChatMemberDirectoryScreenContent = .loading
/// Searching and inviting others are only available to approved accounts.
var isApproved = false
/// The hint shown while the own profile is missing required fields.
var completenessMessage: String?
var bindings = HealthChatMemberDirectoryScreenViewStateBindings()
}
struct HealthChatMemberDirectoryScreenViewStateBindings {
var searchQuery = ""
var alertInfo: AlertInfo<HealthChatMemberDirectoryScreenAlertType>?
}
enum HealthChatMemberDirectoryScreenAlertType: Hashable {
case failedStartingChat
}
enum HealthChatMemberDirectoryScreenViewAction {
case retry
case refresh
case selectMember(HealthChatMember)
case startChat(HealthChatMember)
case editProfile
case invite
}