From 734df290650b3097775d80f787288909a5b87d51 Mon Sep 17 00:00:00 2001 From: Max Goedjen Date: Sat, 7 Mar 2020 15:20:59 -0800 Subject: [PATCH] Remove changes --- .../SecureEnclave/SecureEnclaveSecret.swift | 8 -------- SecretKit/SmartCard/SmartCardSecret.swift | 12 ++--------- SecretKit/SmartCard/SmartCardStore.swift | 14 +++++++++++-- Secretive/AppDelegate.swift | 2 +- Secretive/ContentView.swift | 20 +++++++++++++------ 5 files changed, 29 insertions(+), 27 deletions(-) diff --git a/SecretKit/SecureEnclave/SecureEnclaveSecret.swift b/SecretKit/SecureEnclave/SecureEnclaveSecret.swift index 33f65e4..3ab9f5f 100644 --- a/SecretKit/SecureEnclave/SecureEnclaveSecret.swift +++ b/SecretKit/SecureEnclave/SecureEnclaveSecret.swift @@ -4,19 +4,11 @@ import Combine extension SecureEnclave { public struct Secret: SecretKit.Secret { - public init(id: Data, name: String, publicKey: Data) { - self.id = id - self.name = name - self.publicKey = publicKey - } - public let id: Data public let name: String public let publicKey: Data - - } } diff --git a/SecretKit/SmartCard/SmartCardSecret.swift b/SecretKit/SmartCard/SmartCardSecret.swift index b5dd310..1054f5f 100644 --- a/SecretKit/SmartCard/SmartCardSecret.swift +++ b/SecretKit/SmartCard/SmartCardSecret.swift @@ -4,17 +4,9 @@ import Combine extension SmartCard { public struct Secret: SecretKit.Secret { - public init(id: Data, name: String, publicKey: Data) { - self.id = id -// self.name = name - self.publicKey = publicKey - } - - + public let id: Data - public var name: String { - UUID().uuidString - } + public var name: String public let publicKey: Data } diff --git a/SecretKit/SmartCard/SmartCardStore.swift b/SecretKit/SmartCard/SmartCardStore.swift index 2f7361a..9707614 100644 --- a/SecretKit/SmartCard/SmartCardStore.swift +++ b/SecretKit/SmartCard/SmartCardStore.swift @@ -20,8 +20,11 @@ extension SmartCard { guard self.id == nil else { return } guard !string.contains("setoken") else { return } self.id = string - self.secrets.removeAll() - self.loadSecrets() + self.reloadSecrets() + self.watcher.addRemovalHandler(self.reloadSecrets, forTokenID: string) + } + if let id = id { + self.watcher.addRemovalHandler(self.reloadSecrets, forTokenID: id) } loadSecrets() } @@ -67,6 +70,13 @@ extension SmartCard { extension SmartCard.Store { + fileprivate func reloadSecrets(for tokenID: String? = nil) { + DispatchQueue.main.async { + self.secrets.removeAll() + self.loadSecrets() + } + } + fileprivate func loadSecrets() { guard let id = id else { return } let attributes = [ diff --git a/Secretive/AppDelegate.swift b/Secretive/AppDelegate.swift index 3f10f41..84003e1 100644 --- a/Secretive/AppDelegate.swift +++ b/Secretive/AppDelegate.swift @@ -15,7 +15,7 @@ class AppDelegate: NSObject, NSApplicationDelegate { func applicationDidFinishLaunching(_ aNotification: Notification) { - let contentView = ContentView(store: secureEnclave) + let contentView = ContentView(secureEnclave: secureEnclave, smartCard: smartCard) // Create the window and set the content view. window = NSWindow( contentRect: NSRect(x: 0, y: 0, width: 480, height: 300), diff --git a/Secretive/ContentView.swift b/Secretive/ContentView.swift index f7bc4cc..8bc2e40 100644 --- a/Secretive/ContentView.swift +++ b/Secretive/ContentView.swift @@ -3,8 +3,9 @@ import SecretKit struct ContentView: View { - @ObservedObject var store: SecureEnclave.Store - @State var active: SecureEnclave.Secret.ID? + @ObservedObject var secureEnclave: SecureEnclave.Store + @ObservedObject var smartCard: SmartCard.Store + @State var active: Data? @State var showingDeletion = false @State var deletingSecret: SecureEnclave.Secret? @@ -12,8 +13,8 @@ struct ContentView: View { var body: some View { NavigationView { List(selection: $active) { - Section(header: Text(store.name)) { - ForEach(store.secrets) { secret in + Section(header: Text(secureEnclave.name)) { + ForEach(secureEnclave.secrets) { secret in NavigationLink(destination: SecretDetailView(secret: secret), tag: secret.id, selection: self.$active) { Text(secret.name) }.contextMenu { @@ -23,15 +24,22 @@ struct ContentView: View { } } } + Section(header: Text(smartCard.name)) { + ForEach(smartCard.secrets) { secret in + NavigationLink(destination: SecretDetailView(secret: secret), tag: secret.id, selection: self.$active) { + Text(secret.name) + } + } + } }.onAppear { - self.active = self.store.secrets.first?.id + self.active = self.secureEnclave.secrets.first?.id ?? self.smartCard.secrets.first?.id } .listStyle(SidebarListStyle()) .frame(minWidth: 100, idealWidth: 240) } .navigationViewStyle(DoubleColumnNavigationViewStyle()) .sheet(isPresented: $showingDeletion) { - DeleteSecretView(secret: self.deletingSecret!, store: self.store) { + DeleteSecretView(secret: self.deletingSecret!, store: self.secureEnclave) { self.showingDeletion = false } }