Просмотр исходного кода

Close paywall automatically after premium unlock.

Dismiss any presented paywall overlay or window when entitlement changes to premium so users immediately return to the app.

Made-with: Cursor
huzaifahayat12 1 месяц назад
Родитель
Сommit
4b69794d8e
1 измененных файлов с 12 добавлено и 1 удалено
  1. 12 1
      meetings_app/ViewController.swift

+ 12 - 1
meetings_app/ViewController.swift

@@ -1132,6 +1132,16 @@ private extension ViewController {
1132 1132
         }
1133 1133
     }
1134 1134
 
1135
+    private func dismissPaywallIfPresented() {
1136
+        if !Thread.isMainThread {
1137
+            DispatchQueue.main.async { [weak self] in
1138
+                self?.dismissPaywallIfPresented()
1139
+            }
1140
+            return
1141
+        }
1142
+        closePaywallClicked(nil)
1143
+    }
1144
+
1135 1145
     @objc private func paywallFooterLinkClicked(_ sender: NSClickGestureRecognizer) {
1136 1146
         guard let view = sender.view else { return }
1137 1147
         let action = paywallFooterActionByView[ObjectIdentifier(view)]
@@ -1331,6 +1341,7 @@ private extension ViewController {
1331 1341
         }
1332 1342
 
1333 1343
         if !hadPremiumAccess && hasPremiumAccess {
1344
+            dismissPaywallIfPresented()
1334 1345
             if selectedSidebarPage != .joinMeetings {
1335 1346
                 Task { [weak self] in
1336 1347
                     await self?.loadSchedule()
@@ -1532,7 +1543,7 @@ private extension ViewController {
1532 1543
                     await self?.loadSchedule()
1533 1544
                 }
1534 1545
                 self.showSimpleAlert(title: "Purchase Complete", message: "Premium has been unlocked successfully.")
1535
-                self.paywallWindow?.performClose(nil)
1546
+                self.dismissPaywallIfPresented()
1536 1547
                 self.scheduleRatingPromptAfterPremiumUpgrade()
1537 1548
             case .cancelled:
1538 1549
                 break