mirror of
https://github.com/sudosylabs/vnidrop.git
synced 2026-08-05 10:29:58 +02:00
fix(apple): stop delete confirmation re-presenting on macOS
Confirming a transfer/history deletion flashed the same confirmation alert a second time before it went away. The destructive button runs confirmDelete synchronously (setting isDeleting = true), while the alert's isPresented dismiss binding fires asynchronously and then no-ops because its `if !isDeleting` guard is already false — leaving the open flag set, so macOS re-reads the binding as true and re-presents the alert until the async delete finally clears it. Close the confirmation flag synchronously in confirmDeleteTransfer / confirmHistoryDelete so there's no window for re-presentation. Tests assert the flag clears immediately, before the async delete completes.
This commit is contained in:
@@ -207,6 +207,9 @@ final class SendModel: ObservableObject {
|
||||
func confirmDeleteTransfer() {
|
||||
guard let transferId = state.selectedTransferId, !state.isDeleting else { return }
|
||||
state.isDeleting = true
|
||||
// Close synchronously: the alert's dismiss binding runs async and no-ops while
|
||||
// `isDeleting`, which would otherwise leave the flag true and macOS re-present it.
|
||||
state.isDeleteConfirmationOpen = false
|
||||
Task {
|
||||
let result = await repository.delete(transferId: transferId)
|
||||
switch result {
|
||||
|
||||
Reference in New Issue
Block a user