fix: dismiss paywall and sync premium state after successful purchase

- Add purchaseSucceeded flag to PurchaseViewModel, set on purchase success
- PaywallView observes the flag and dismisses itself automatically
- ProfileTab.syncSubscription() writes PurchaseService.currentPlan back
  to UserProfile.subscriptionRaw via SwiftData on sheet dismiss
This commit is contained in:
Millian Lamiaux
2026-04-21 23:00:45 +02:00
parent 877f836f19
commit 9f15ae2d79
3 changed files with 15 additions and 1 deletions

View File

@@ -7,6 +7,7 @@ final class PurchaseViewModel: ObservableObject {
@Published var offerings: Offerings? = nil
@Published var selectedPackage: Package? = nil
@Published var isPurchasing = false
@Published var purchaseSucceeded = false
@Published var showError = false
@Published var errorMessage: String? = nil
@@ -27,6 +28,7 @@ final class PurchaseViewModel: ObservableObject {
do {
try await service.purchase(package: package)
AnalyticsService.shared.subscriptionStarted(plan: package.identifier)
purchaseSucceeded = true
} catch {
errorMessage = error.localizedDescription
showError = true