From 2707a0d98255e5c9ff4a0f826fb3e8ec355954eb Mon Sep 17 00:00:00 2001 From: Markus Thielker Date: Thu, 16 Jan 2025 16:10:28 +0100 Subject: [PATCH] Add detail view to check password --- password/view/detail/DetailView.swift | 52 +++++++++++++++++++++++++++ password/view/list/ListView.swift | 2 +- 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 password/view/detail/DetailView.swift diff --git a/password/view/detail/DetailView.swift b/password/view/detail/DetailView.swift new file mode 100644 index 0000000..5082cee --- /dev/null +++ b/password/view/detail/DetailView.swift @@ -0,0 +1,52 @@ +// +// DetailView.swift +// password +// +// Created by Markus Thielker on 16.01.25. +// + +import SwiftUI + +struct DetailView: View { + + let password: Password + @State var value: String = "" + + func validateInput(input: String, password: Password) -> Bool { + return input == password.value + } + + var body: some View { + VStack { + Text("Enter the password for \(password.name)") + Form { + SecureField("", text: $value) + Button("Submit") { + let correct = validateInput(input: value, password: password) + + if (correct) { + let alert = NSAlert() + alert.messageText = "Correct" + alert.informativeText = "That one was correct!" + alert.addButton(withTitle: "Let's go!") + alert.runModal() + } else { + let alert = NSAlert() + alert.messageText = "Not quite" + alert.informativeText = " That one was not quite right! Try again!" + alert.addButton(withTitle: "Okay") + alert.runModal() + } + + value = "" + } + } + } + .padding() + } +} + +#Preview { + let password = Password(name: "macbook", value: "password") + DetailView(password: password) +} diff --git a/password/view/list/ListView.swift b/password/view/list/ListView.swift index 3001a2c..64ee8cc 100644 --- a/password/view/list/ListView.swift +++ b/password/view/list/ListView.swift @@ -16,7 +16,7 @@ struct ListView: View { NavigationView { List { ForEach(viewModel.passwords) { password in - NavigationLink(destination: Text(password.name)) { + NavigationLink(destination: DetailView(password: password)) { Text(password.name) } }