another.im-ios/ConversationsClassic/View/Contacts/AddContactOrChannelScreen.swift
2024-08-11 16:02:18 +02:00

154 lines
5.9 KiB
Swift

import SwiftUI
struct AddContactOrChannelScreen: View {
@EnvironmentObject var navigation: NavigationStore
// @EnvironmentObject var store: AppStore
// enum Field {
// case account
// case contact
// }
//
// @FocusState private var focus: Field?
//
// @Binding var isPresented: Bool
// @State private var contactJID: String = ""
// // @State private var ownerAccount: Account?
//
// @State private var isShowingLoader = false
// @State private var isShowingAlert = false
// @State private var errorMsg = ""
var body: some View {
ZStack {
// Background color
Color.Material.Background.light
.ignoresSafeArea()
// Content
VStack(spacing: 0) {
// Header
SharedNavigationBar(
leftButton: .init(
image: Image(systemName: "xmark"),
action: {
withAnimation {
navigation.flow = .main(.contacts(.list))
}
// isPresented = false
}
),
centerText: .init(text: L10n.Contacts.Add.title),
rightButton: .init(
image: Image(systemName: "plus.viewfinder"),
action: {
print("Scan QR-code")
}
)
)
// VStack(spacing: 16) {
// // Explanation text
//
// Text(L10n.Contacts.Add.explanation)
// .font(.body3)
// .foregroundColor(.Material.Shape.separator)
// .multilineTextAlignment(.center)
// .padding(.top, 16)
//
// // Account selector
// HStack(spacing: 0) {
// Text("Use account:")
// .font(.body2)
// .foregroundColor(.Material.Text.main)
// .frame(alignment: .leading)
// Spacer()
// }
// // UniversalInputCollection.DropDownMenu(
// // prompt: "Use account",
// // elements: store.state.accountsState.accounts,
// // selected: $ownerAccount,
// // focus: $focus,
// // fieldType: .account
// // )
//
// // Contact text input
// HStack(spacing: 0) {
// Text("Contact JID:")
// .font(.body2)
// .foregroundColor(.Material.Text.main)
// .frame(alignment: .leading)
// Spacer()
// }
// UniversalInputCollection.TextField(
// prompt: "Contact or channel JID",
// text: $contactJID,
// focus: $focus,
// fieldType: .contact,
// contentType: .emailAddress,
// keyboardType: .emailAddress,
// submitLabel: .done,
// action: {
// focus = .account
// }
// )
//
// // Save button
// Button {
// navigation.flow = .main(.contacts(.list))
// } label: {
// Text(L10n.Global.save)
// }
// .buttonStyle(PrimaryButtonStyle())
// .disabled(!inputValid)
// .padding(.top)
// Spacer()
// }
.padding(.horizontal, 32)
}
}
// .onAppear {
// if let exists = store.state.accountsState.accounts.first, exists.isActive {
// ownerAccount = exists
// }
// }
// .loadingIndicator(isShowingLoader)
// .alert(isPresented: $isShowingAlert) {
// Alert(
// title: Text(L10n.Global.Error.title),
// message: Text(errorMsg),
// dismissButton: .default(Text(L10n.Global.ok))
// )
// }
// .onChange(of: store.state.rostersState.newAddedRosterJid) { jid in
// if jid != nil, isShowingLoader {
// isShowingLoader = false
// isPresented = false
// }
// }
// .onChange(of: store.state.rostersState.newAddedRosterError) { error in
// if let error = error, isShowingLoader {
// isShowingLoader = false
// errorMsg = error
// isShowingAlert = true
// }
// }
}
private var inputValid: Bool {
true
// ownerAccount != nil && !contactJID.isEmpty && UniversalInputCollection.Validators.isEmail(contactJID)
}
// private func save() {
// guard let ownerAccount else { return }
// if let exists = store.state.rostersState.rosters.first(where: { $0.bareJid == ownerAccount.bareJid && $0.contactBareJid == contactJID }), exists.locallyDeleted {
// store.dispatch(.rostersAction(.unmarkRosterAsLocallyDeleted(ownerJID: ownerAccount.bareJid, contactJID: contactJID)))
// isPresented = false
// } else {
// isShowingLoader = true
// store.dispatch(.rostersAction(.addRoster(ownerJID: ownerAccount.bareJid, contactJID: contactJID, name: nil, groups: [])))
// }
// }
}