feat(ManaAccountView): onDeleted-Callback nach Konto-Löschung

Optionaler async-Callback, der nach erfolgreicher Account-Löschung läuft —
für App-lokalen Cleanup (z.B. wordeck wischt SwiftData-Cache, DSGVO:
anderer User am selben Gerät).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-05-28 12:34:40 +02:00
parent 1a491c3358
commit 0b276fe903

View file

@ -61,6 +61,7 @@ public struct ManaAccountView<Extra: View>: View {
private let config: Config
private let onSignIn: () -> Void
private let onSignOut: () async -> Void
private let onDeleted: (() async -> Void)?
private let extra: () -> Extra
@State private var showChangeEmail = false
@ -78,12 +79,14 @@ public struct ManaAccountView<Extra: View>: View {
config: Config = .init(),
onSignIn: @escaping () -> Void,
onSignOut: (() async -> Void)? = nil,
onDeleted: (() async -> Void)? = nil,
@ViewBuilder extra: @escaping () -> Extra = { EmptyView() }
) {
self.auth = auth
self.config = config
self.onSignIn = onSignIn
self.onSignOut = onSignOut ?? { await auth.signOut() }
self.onDeleted = onDeleted
self.extra = extra
}
@ -119,7 +122,10 @@ public struct ManaAccountView<Extra: View>: View {
ManaChangePasswordView(auth: auth, onDone: { showChangePassword = false })
}
.sheet(isPresented: $showDeleteAccount) {
ManaDeleteAccountView(auth: auth, onDone: { showDeleteAccount = false })
ManaDeleteAccountView(auth: auth, onDone: {
showDeleteAccount = false
if let onDeleted { Task { await onDeleted() } }
})
}
}