import SwiftUI import KordophoneKit struct LoginView : View { @AppStorage("serverAddress") var serverAddress: String = "" @AppStorage("username") var username: String = "" @AppStorage("password") var password: String = "" @State private var loggingIn = false var onLogin: (ConnectionInfo) -> Void = { _ in } private func login() { loggingIn = true onLogin(ConnectionInfo(serverAddress: serverAddress, credentials: Credentials(username: username, password: password))) } var body: some View { VStack { TextField("server", text: $serverAddress) .onSubmit { login() } TextField("username", text: $username) .onSubmit { login() } SecureField("password", text: $password) .onSubmit { login() } Button("Login") { login() } .keyboardShortcut(.return) } .disabled(loggingIn) .animation(.spring(), value: loggingIn) .padding() } } struct LoginView_Previews : PreviewProvider { static var previews: some View { Group { LoginView() } } }