From d540a58594cbb326438dee2a26cdf05acebbeb1a Mon Sep 17 00:00:00 2001 From: Rocky Date: Tue, 20 Oct 2026 20:06:03 +0200 Subject: [PATCH] fix(account): defer operation-error dismissal until the alert update ends --- OSGKeyboard/Views/MainAppRoot.swift | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/OSGKeyboard/Views/MainAppRoot.swift b/OSGKeyboard/Views/MainAppRoot.swift index 7ebdf5c..f2b3348 100644 --- a/OSGKeyboard/Views/MainAppRoot.swift +++ b/OSGKeyboard/Views/MainAppRoot.swift @@ -97,9 +97,7 @@ struct MainAppRoot: View { AppL10n.string("account.error.title"), isPresented: accountOperationErrorBinding ) { - Button(AppL10n.string("common.done")) { - accountSession.dismissOperationError() - } + Button(AppL10n.string("common.done")) {} } message: { if let key = accountSession.operationErrorKey { Text(AppL10n.string(key)) @@ -326,7 +324,11 @@ struct MainAppRoot: View { get: { accountSession.operationErrorKey != nil }, set: { isPresented in if !isPresented { - accountSession.dismissOperationError() + // SwiftUI writes this binding while updating the alert. + // Defer ObservableObject mutations until that update ends. + Task { @MainActor in + accountSession.dismissOperationError() + } } } )