import SwiftUI struct AuthView: View { @ObservedObject var viewModel = AuthVM() @State private var login: String = "" @State private var password: String = "" @State private var showProgress: Bool = false @State private var alert: AlertMessage? = nil var body: some View { ZStack { VStack(alignment: .center, spacing: 16) { Spacer() TextField("Login", text: $login) SecureField("Password", text: $password) Button("Login") { async { do { self.showProgress = true try await self.viewModel.login(user: self.login, password: self.password) self.showProgress = false } catch { self.showProgress = false self.alert = .error(error: error) } } } .alert(item: $alert, content: Alert.init) Spacer() } .buttonStyle(.bordered) .textFieldStyle(.roundedBorder) .padding(20) if self.showProgress { ACProgressView() } } } } struct AuthView_Previews: PreviewProvider { static var previews: some View { Group { AuthView() .previewDevice("iPhone 8") AuthView() .preferredColorScheme(.dark) .previewDevice("iPhone 8") } } }