mirror of
https://github.com/FBukovina/Atoll.git
synced 2026-10-27 15:14:33 +00:00
Things work - but animation is still janky
This commit is contained in:
parent
29b9f7b460
commit
ba27aa3d0f
4 changed files with 114 additions and 74 deletions
|
|
@ -44,6 +44,7 @@ class DynamicIslandViewModel: NSObject, ObservableObject {
|
|||
|
||||
@Published var notchSize: CGSize = getClosedNotchSize()
|
||||
@Published var closedNotchSize: CGSize = getClosedNotchSize()
|
||||
private var minimalisticReminderRowCount: Int = 0
|
||||
|
||||
deinit {
|
||||
destroy()
|
||||
|
|
@ -71,6 +72,19 @@ class DynamicIslandViewModel: NSObject, ObservableObject {
|
|||
.store(in: &cancellables)
|
||||
|
||||
setupDetectorObserver()
|
||||
|
||||
ReminderLiveActivityManager.shared.$activeWindowReminders
|
||||
.removeDuplicates()
|
||||
.receive(on: RunLoop.main)
|
||||
.sink { [weak self] entries in
|
||||
guard let self else { return }
|
||||
self.minimalisticReminderRowCount = entries.count
|
||||
let updatedTarget = self.calculateDynamicNotchSize()
|
||||
guard self.notchState == .open else { return }
|
||||
guard self.notchSize != updatedTarget else { return }
|
||||
self.notchSize = updatedTarget
|
||||
}
|
||||
.store(in: &cancellables)
|
||||
}
|
||||
|
||||
private func setupDetectorObserver() {
|
||||
|
|
@ -124,8 +138,21 @@ class DynamicIslandViewModel: NSObject, ObservableObject {
|
|||
}
|
||||
|
||||
func open() {
|
||||
let targetSize = calculateDynamicNotchSize()
|
||||
|
||||
let applyWindowResize: () -> Void = {
|
||||
guard let delegate = AppDelegate.shared else { return }
|
||||
delegate.ensureWindowSize(targetSize, animated: false, force: true)
|
||||
}
|
||||
|
||||
if Thread.isMainThread {
|
||||
applyWindowResize()
|
||||
} else {
|
||||
DispatchQueue.main.async(execute: applyWindowResize)
|
||||
}
|
||||
|
||||
withAnimation(.bouncy) {
|
||||
self.notchSize = calculateDynamicNotchSize()
|
||||
self.notchSize = targetSize
|
||||
self.notchState = .open
|
||||
}
|
||||
|
||||
|
|
@ -138,8 +165,7 @@ class DynamicIslandViewModel: NSObject, ObservableObject {
|
|||
var baseSize = Defaults[.enableMinimalisticUI] ? minimalisticOpenNotchSize : openNotchSize
|
||||
|
||||
if Defaults[.enableMinimalisticUI] {
|
||||
let reminderCount = ReminderLiveActivityManager.shared.activeWindowReminders.count
|
||||
let extraHeight = ReminderLiveActivityManager.additionalHeight(forRowCount: reminderCount)
|
||||
let extraHeight = ReminderLiveActivityManager.additionalHeight(forRowCount: minimalisticReminderRowCount)
|
||||
baseSize.height += extraHeight
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue