import SwiftUI
import SecretKit

struct CreateSecretView: View {
    
    @ObservedObject var store: AnySecretStoreModifiable
    
    @State var name = ""
    @State var requiresAuthentication = true
    
    var dismissalBlock: () -> ()
    
    var body: some View {
        VStack {
            HStack {
                Image(nsImage: NSApp.applicationIconImage)
                    .resizable()
                    .frame(width: 64, height: 64)
                    .padding()
                VStack {
                    HStack {
                        Text("Create a New Secret").bold()
                        Spacer()
                    }
                    HStack {
                        Text("Name:")
                        TextField("Shhhhh", text: $name)
                    }
                    HStack {
                        Toggle(isOn: $requiresAuthentication) {
                            Text("Requires Authentication (Biometrics or Password)")
                        }
                        Spacer()
                    }
                }
                .onExitCommand(perform: dismissalBlock)
            }
            HStack {
                Spacer()
                Button(action: dismissalBlock) {
                    Text("Cancel")
                }
                Button(action: save) {
                    Text("Create")
                }.disabled(name.isEmpty)
            }
        }.padding()
    }
    
    func save() {
        try! store.create(name: name, requiresAuthentication: requiresAuthentication)
        dismissalBlock()
    }
}