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

View File

@ -41,15 +41,12 @@ struct SecretListItemView: View {
deletedSecret(secret)
}
}
.sheet(isPresented: $isRenaming) {
if let modifiable = store as? AnySecretStoreModifiable {
EditSecretView(store: modifiable, secret: secret) { renamed in
isRenaming = false
if renamed {
.sheet(isPresented: $isRenaming, onDismiss: {
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) {
// Toggle so name updates in list.
// Pull new version from store, so we get all updated attributes
activeSecret = nil
activeSecret = secret
activeSecret = storeList.allSecrets.first(where: { $0.id == secret.id })
}
var body: some View {
@ -28,7 +28,7 @@ struct StoreListView: View {
store: store,
secret: secret,
deletedSecret: secretDeleted,
renamedSecret: secretRenamed
renamedSecret: secretRenamed,
)
}
}