From 4e4623532f9aef8944eb224771b24fd214808e4b Mon Sep 17 00:00:00 2001 From: Hariharan Mudaliar Date: Tue, 11 Nov 2025 00:17:40 +0530 Subject: [PATCH] Working multiple sneak peeks --- DynamicIsland/ContentView.swift | 18 ++++++++++++------ .../managers/ReminderLiveActivityManager.swift | 7 +++++-- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/DynamicIsland/ContentView.swift b/DynamicIsland/ContentView.swift index 4a4e289..40a2613 100644 --- a/DynamicIsland/ContentView.swift +++ b/DynamicIsland/ContentView.swift @@ -472,12 +472,18 @@ struct ContentView: View { else if coordinator.sneakPeek.type == .reminder { if !vm.hideOnClosed && Defaults[.sneakPeekStyles] == .standard, let reminder = reminderManager.activeReminder { GeometryReader { geo in - MarqueeText( - .constant(reminderSneakPeekText(for: reminder)), - textColor: reminderColor(for: reminder, now: reminderManager.currentDate), - minDuration: 1, - frameWidth: geo.size.width - ) + let chipColor = Color(nsColor: reminder.event.calendar.color).ensureMinimumBrightness(factor: 0.7) + HStack(spacing: 6) { + RoundedRectangle(cornerRadius: 2) + .fill(chipColor) + .frame(width: 8, height: 12) + MarqueeText( + .constant(reminderSneakPeekText(for: reminder)), + textColor: reminderColor(for: reminder, now: reminderManager.currentDate), + minDuration: 1, + frameWidth: max(0, geo.size.width - 18) + ) + } } .padding(.bottom, 10) } diff --git a/DynamicIsland/managers/ReminderLiveActivityManager.swift b/DynamicIsland/managers/ReminderLiveActivityManager.swift index 1ea0c66..3d631c0 100644 --- a/DynamicIsland/managers/ReminderLiveActivityManager.swift +++ b/DynamicIsland/managers/ReminderLiveActivityManager.swift @@ -327,7 +327,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 @@ -349,14 +349,17 @@ final class ReminderLiveActivityManager: ObservableObject { if criticalWindow > 0 && timeRemaining > 0 { if timeRemaining <= criticalWindow { if !hasShownCriticalSneakPeek { + let displayDuration = min(criticalWindow, max(timeRemaining - 2, 0)) + if displayDuration > 0 { DynamicIslandViewCoordinator.shared.toggleSneakPeek( status: true, type: .reminder, - duration: Defaults[.reminderSneakPeekDuration], + duration: displayDuration, value: 0, icon: ReminderLiveActivityManager.criticalIconName ) hasShownCriticalSneakPeek = true + } } } else { hasShownCriticalSneakPeek = false