Ver código fonte

Gate reminder notifications behind premium.

Hide the reminders settings section for non-premium users and cancel any pending reminders when premium is not active.

Co-authored-by: Cursor <cursoragent@cursor.com>
huzaifahayat12 2 meses atrás
pai
commit
9eeb0df862
2 arquivos alterados com 13 adições e 25 exclusões
  1. 0 19
      zoom_app/AppDelegate.swift
  2. 13 6
      zoom_app/ViewController.swift

+ 0 - 19
zoom_app/AppDelegate.swift

@@ -11,8 +11,6 @@ import UserNotifications
 @main
 class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
     private let darkModeDefaultsKey = "settings.darkModeEnabled"
-    private let legacyNotificationsEnabledDefaultsKey = "settings.notificationsEnabled"
-    private let remindersEnabledDefaultsKey = "reminders.enabled"
     private let loginStateKey = "zoom_app.isLoggedIn"
     private var statusItem: NSStatusItem?
     private var statusMenu: NSMenu?
@@ -50,23 +48,6 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
         UserDefaults.standard.set(darkEnabled, forKey: darkModeDefaultsKey)
         NSApp.appearance = NSAppearance(named: darkEnabled ? .darkAqua : .aqua)
         UNUserNotificationCenter.current().delegate = self
-        let defaults = UserDefaults.standard
-        let remindersEnabled: Bool = {
-            if defaults.object(forKey: remindersEnabledDefaultsKey) != nil {
-                return defaults.bool(forKey: remindersEnabledDefaultsKey)
-            }
-            if defaults.object(forKey: legacyNotificationsEnabledDefaultsKey) != nil {
-                return defaults.bool(forKey: legacyNotificationsEnabledDefaultsKey)
-            }
-            return true
-        }()
-        if remindersEnabled {
-            UNUserNotificationCenter.current().getNotificationSettings { settings in
-                if settings.authorizationStatus == .notDetermined {
-                    UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound]) { _, _ in }
-                }
-            }
-        }
         configureStatusItem()
 
         showSplashThenMainWindow()

+ 13 - 6
zoom_app/ViewController.swift

@@ -3393,12 +3393,14 @@ class ViewController: NSViewController {
 
         stack.setCustomSpacing(24, after: upgradeButton)
 
-        let notificationsTitle = textLabel("Notifications", font: .systemFont(ofSize: 16, weight: .semibold), color: primaryText)
-        stack.addArrangedSubview(notificationsTitle)
-        let remindersSection = makeSettingsRemindersSection()
-        stack.addArrangedSubview(remindersSection)
-        remindersSection.widthAnchor.constraint(equalTo: stack.widthAnchor).isActive = true
-        stack.setCustomSpacing(24, after: remindersSection)
+        if storeKitCoordinator.hasPremiumAccess {
+            let notificationsTitle = textLabel("Notifications", font: .systemFont(ofSize: 16, weight: .semibold), color: primaryText)
+            stack.addArrangedSubview(notificationsTitle)
+            let remindersSection = makeSettingsRemindersSection()
+            stack.addArrangedSubview(remindersSection)
+            remindersSection.widthAnchor.constraint(equalTo: stack.widthAnchor).isActive = true
+            stack.setCustomSpacing(24, after: remindersSection)
+        }
 
         let legalTitle = textLabel("Help & Legal", font: .systemFont(ofSize: 16, weight: .semibold), color: primaryText)
         stack.addArrangedSubview(legalTitle)
@@ -3755,6 +3757,7 @@ class ViewController: NSViewController {
                     self.schedulePremiumRatingPromptIfNeeded()
                 }
                 if wasPremium && !newIsPremium {
+                    self.cancelAllMeetingReminders()
                     self.premiumRatingPromptWorkItem?.cancel()
                     self.premiumRatingPromptWorkItem = nil
                     self.showPaywall()
@@ -3932,6 +3935,10 @@ class ViewController: NSViewController {
     }
 
     private func rescheduleMeetingRemindersIfNeeded() {
+        guard storeKitCoordinator.hasPremiumAccess else {
+            cancelAllMeetingReminders()
+            return
+        }
         guard remindersEnabled else {
             cancelAllMeetingReminders()
             return