Working multiple sneak peeks

This commit is contained in:
Hariharan Mudaliar 2025-11-11 00:17:40 +05:30
commit 4e4623532f
2 changed files with 17 additions and 8 deletions

View file

@ -472,12 +472,18 @@ struct ContentView: View {
else if coordinator.sneakPeek.type == .reminder { else if coordinator.sneakPeek.type == .reminder {
if !vm.hideOnClosed && Defaults[.sneakPeekStyles] == .standard, let reminder = reminderManager.activeReminder { if !vm.hideOnClosed && Defaults[.sneakPeekStyles] == .standard, let reminder = reminderManager.activeReminder {
GeometryReader { geo in GeometryReader { geo in
MarqueeText( let chipColor = Color(nsColor: reminder.event.calendar.color).ensureMinimumBrightness(factor: 0.7)
.constant(reminderSneakPeekText(for: reminder)), HStack(spacing: 6) {
textColor: reminderColor(for: reminder, now: reminderManager.currentDate), RoundedRectangle(cornerRadius: 2)
minDuration: 1, .fill(chipColor)
frameWidth: geo.size.width .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) .padding(.bottom, 10)
} }

View file

@ -327,7 +327,7 @@ final class ReminderLiveActivityManager: ObservableObject {
return return
} }
if entry.triggerDate <= date { if entry.triggerDate <= date {
if entry.triggerDate > entry.event.start { if entry.triggerDate > entry.event.start {
entry = ReminderEntry(event: entry.event, triggerDate: entry.event.start, leadTime: entry.leadTime) entry = ReminderEntry(event: entry.event, triggerDate: entry.event.start, leadTime: entry.leadTime)
nextReminder = entry nextReminder = entry
@ -349,14 +349,17 @@ final class ReminderLiveActivityManager: ObservableObject {
if criticalWindow > 0 && timeRemaining > 0 { if criticalWindow > 0 && timeRemaining > 0 {
if timeRemaining <= criticalWindow { if timeRemaining <= criticalWindow {
if !hasShownCriticalSneakPeek { if !hasShownCriticalSneakPeek {
let displayDuration = min(criticalWindow, max(timeRemaining - 2, 0))
if displayDuration > 0 {
DynamicIslandViewCoordinator.shared.toggleSneakPeek( DynamicIslandViewCoordinator.shared.toggleSneakPeek(
status: true, status: true,
type: .reminder, type: .reminder,
duration: Defaults[.reminderSneakPeekDuration], duration: displayDuration,
value: 0, value: 0,
icon: ReminderLiveActivityManager.criticalIconName icon: ReminderLiveActivityManager.criticalIconName
) )
hasShownCriticalSneakPeek = true hasShownCriticalSneakPeek = true
}
} }
} else { } else {
hasShownCriticalSneakPeek = false hasShownCriticalSneakPeek = false