diff --git a/DynamicIsland/managers/ReminderLiveActivityManager.swift b/DynamicIsland/managers/ReminderLiveActivityManager.swift index 6fed1da..2ec534f 100644 --- a/DynamicIsland/managers/ReminderLiveActivityManager.swift +++ b/DynamicIsland/managers/ReminderLiveActivityManager.swift @@ -43,7 +43,7 @@ final class ReminderLiveActivityManager: ObservableObject { private var pendingRefreshForce = false private var pendingRefreshToken = UUID() private var lastRefreshDate: Date? - private let minimumRefreshInterval: TimeInterval = 10 + private let minimumRefreshInterval: TimeInterval = 60 private let refreshDebounceInterval: TimeInterval = 0.3 private var refreshTaskToken = UUID() private var hasShownCriticalSneakPeek = false @@ -291,6 +291,10 @@ final class ReminderLiveActivityManager: ObservableObject { handleEntrySelection(first, referenceDate: referenceDate) } + func requestRefresh(force: Bool = false) { + scheduleRefresh(force: force) + } + func refreshUpcomingReminder(force: Bool = false) async { guard Defaults[.enableReminderLiveActivity] else { deactivateReminder() @@ -341,7 +345,7 @@ final class ReminderLiveActivityManager: ObservableObject { return } - if entry.triggerDate <= date { + if entry.triggerDate <= date { if entry.triggerDate > entry.event.start { entry = ReminderEntry(event: entry.event, triggerDate: entry.event.start, leadTime: entry.leadTime) nextReminder = entry @@ -365,14 +369,14 @@ final class ReminderLiveActivityManager: ObservableObject { if !hasShownCriticalSneakPeek { let displayDuration = min(criticalWindow, max(timeRemaining - 2, 0)) if displayDuration > 0 { - DynamicIslandViewCoordinator.shared.toggleSneakPeek( - status: true, - type: .reminder, - duration: displayDuration, - value: 0, - icon: ReminderLiveActivityManager.criticalIconName - ) - hasShownCriticalSneakPeek = true + DynamicIslandViewCoordinator.shared.toggleSneakPeek( + status: true, + type: .reminder, + duration: displayDuration, + value: 0, + icon: ReminderLiveActivityManager.criticalIconName + ) + hasShownCriticalSneakPeek = true } } } else { diff --git a/DynamicIsland/models/DynamicIslandViewModel.swift b/DynamicIsland/models/DynamicIslandViewModel.swift index 193b451..c536240 100644 --- a/DynamicIsland/models/DynamicIslandViewModel.swift +++ b/DynamicIsland/models/DynamicIslandViewModel.swift @@ -157,8 +157,11 @@ class DynamicIslandViewModel: NSObject, ObservableObject { self.notchState = .open } - // Force music information update when notch is opened - MusicManager.shared.forceUpdate() + // Force music information update when notch is opened + MusicManager.shared.forceUpdate() + + // Refresh reminders immediately to surface the latest state when the notch opens + ReminderLiveActivityManager.shared.requestRefresh(force: true) } private func calculateDynamicNotchSize() -> CGSize {