Fix detail update on dismiss of edit screen. (#687)

This commit is contained in:
Max Goedjen 2025-09-10 00:29:12 -07:00 committed by GitHub
parent 7c7db56c1e
commit cf7c6e9fbe
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 13 additions and 16 deletions

View File

@ -5,16 +5,16 @@ struct EditSecretView<StoreType: SecretStoreModifiable>: View {
let store: StoreType let store: StoreType
let secret: StoreType.SecretType let secret: StoreType.SecretType
let dismissalBlock: (_ renamed: Bool) -> ()
@State private var name: String @State private var name: String
@State private var publicKeyAttribution: String @State private var publicKeyAttribution: String
@State var errorText: String? @State var errorText: String?
init(store: StoreType, secret: StoreType.SecretType, dismissalBlock: @escaping (Bool) -> ()) { @Environment(\.dismiss) var dismiss
init(store: StoreType, secret: StoreType.SecretType) {
self.store = store self.store = store
self.secret = secret self.secret = secret
self.dismissalBlock = dismissalBlock
name = secret.name name = secret.name
publicKeyAttribution = secret.publicKeyAttribution ?? "" publicKeyAttribution = secret.publicKeyAttribution ?? ""
} }
@ -39,7 +39,7 @@ struct EditSecretView<StoreType: SecretStoreModifiable>: View {
} }
HStack { HStack {
Button(.editCancelButton) { Button(.editCancelButton) {
dismissalBlock(false) dismiss()
} }
.keyboardShortcut(.cancelAction) .keyboardShortcut(.cancelAction)
Button(.editSaveButton, action: rename) Button(.editSaveButton, action: rename)
@ -58,7 +58,7 @@ struct EditSecretView<StoreType: SecretStoreModifiable>: View {
Task { Task {
do { do {
try await store.update(secret: secret, name: name, attributes: attributes) try await store.update(secret: secret, name: name, attributes: attributes)
dismissalBlock(true) dismiss()
} catch { } catch {
errorText = error.localizedDescription errorText = error.localizedDescription
} }

View File

@ -41,15 +41,12 @@ struct SecretListItemView: View {
deletedSecret(secret) deletedSecret(secret)
} }
} }
.sheet(isPresented: $isRenaming) { .sheet(isPresented: $isRenaming, onDismiss: {
if let modifiable = store as? AnySecretStoreModifiable {
EditSecretView(store: modifiable, secret: secret) { renamed in
isRenaming = false
if renamed {
renamedSecret(secret) renamedSecret(secret)
} }, content: {
} if let modifiable = store as? AnySecretStoreModifiable {
} EditSecretView(store: modifiable, secret: secret)
} }
})
} }
} }

View File

@ -12,9 +12,9 @@ struct StoreListView: View {
} }
private func secretRenamed(secret: AnySecret) { private func secretRenamed(secret: AnySecret) {
// Toggle so name updates in list. // Pull new version from store, so we get all updated attributes
activeSecret = nil activeSecret = nil
activeSecret = secret activeSecret = storeList.allSecrets.first(where: { $0.id == secret.id })
} }
var body: some View { var body: some View {
@ -28,7 +28,7 @@ struct StoreListView: View {
store: store, store: store,
secret: secret, secret: secret,
deletedSecret: secretDeleted, deletedSecret: secretDeleted,
renamedSecret: secretRenamed renamedSecret: secretRenamed,
) )
} }
} }