diff --git a/Secretive/ContentView.swift b/Secretive/ContentView.swift index c6e7489..62ec061 100644 --- a/Secretive/ContentView.swift +++ b/Secretive/ContentView.swift @@ -47,13 +47,7 @@ struct ContentView: View { } } }.onAppear { - let fallback: AnyHashable - if self.storeList.modifiableStore?.isAvailable ?? false { - fallback = Constants.emptyStoreModifiableTag - } else { - fallback = Constants.emptyStoreTag - } - self.active = self.storeList.stores.compactMap { $0.secrets.first }.first?.id ?? fallback + self.active = self.nextDefaultSecret } .listStyle(SidebarListStyle()) .frame(minWidth: 100, idealWidth: 240) @@ -61,8 +55,11 @@ struct ContentView: View { .navigationViewStyle(DoubleColumnNavigationViewStyle()) .sheet(isPresented: $showingDeletion) { if self.storeList.modifiableStore != nil { - DeleteSecretView(secret: self.deletingSecret!, store: self.storeList.modifiableStore!) { + DeleteSecretView(secret: self.deletingSecret!, store: self.storeList.modifiableStore!) { deleted in self.showingDeletion = false + if deleted { + self.active = self.nextDefaultSecret + } } } } @@ -89,6 +86,16 @@ struct ContentView: View { deletingSecret = AnySecret(secret) self.showingDeletion = true } + + var nextDefaultSecret: AnyHashable? { + let fallback: AnyHashable + if self.storeList.modifiableStore?.isAvailable ?? false { + fallback = Constants.emptyStoreModifiableTag + } else { + fallback = Constants.emptyStoreTag + } + return self.storeList.stores.compactMap { $0.secrets.first }.first?.id ?? fallback + } } diff --git a/Secretive/DeleteSecretView.swift b/Secretive/DeleteSecretView.swift index 0efe7a1..bca9355 100644 --- a/Secretive/DeleteSecretView.swift +++ b/Secretive/DeleteSecretView.swift @@ -8,9 +8,9 @@ struct DeleteSecretView: View { @State var confirm = "" - fileprivate var dismissalBlock: () -> () + fileprivate var dismissalBlock: (Bool) -> () - init(secret: StoreType.SecretType, store: StoreType, dismissalBlock: @escaping () -> ()) { + init(secret: StoreType.SecretType, store: StoreType, dismissalBlock: @escaping (Bool) -> ()) { self.secret = secret self.store = store self.dismissalBlock = dismissalBlock @@ -37,14 +37,16 @@ struct DeleteSecretView: View { TextField(secret.name, text: $confirm) } } - .onExitCommand(perform: dismissalBlock) + .onExitCommand { + self.dismissalBlock(false) + } } HStack { Spacer() Button(action: delete) { Text("Delete") }.disabled(confirm != secret.name) - Button(action: dismissalBlock) { + Button(action: { self.dismissalBlock(false) }) { Text("Don't Delete") } } @@ -53,6 +55,6 @@ struct DeleteSecretView: View { func delete() { try! store.delete(secret: secret) - dismissalBlock() + self.dismissalBlock(true) } }