Update phases

This commit is contained in:
Hariharan Mudaliar 2026-03-29 15:58:38 +05:30
commit 79f41cb69e
No known key found for this signature in database
GPG key ID: 025583EB0BE5640E
6 changed files with 289 additions and 13 deletions

View file

@ -52,6 +52,7 @@ struct ContentView: View {
@ObservedObject var capsLockManager = CapsLockManager.shared
@ObservedObject var extensionLiveActivityManager = ExtensionLiveActivityManager.shared
@ObservedObject var extensionNotchExperienceManager = ExtensionNotchExperienceManager.shared
@ObservedObject var localSendService = LocalSendService.shared
@State private var downloadManager = DownloadManager.shared
@Default(.enableStatsFeature) var enableStatsFeature
@ -293,6 +294,19 @@ struct ContentView: View {
private var shouldUseHiddenEdgeHoverPolling: Bool {
shouldHideUntilHover && !lockScreenManager.isLocked
}
/// Whether the LocalSend live activity should be shown
private var localSendLiveActivityActive: Bool {
localSendService.isSending ||
localSendService.transferState == .completed ||
isLocalSendFailedOrRejected
}
private var isLocalSendFailedOrRejected: Bool {
if case .failed = localSendService.transferState { return true }
if case .rejected = localSendService.transferState { return true }
return false
}
/// Pill shape for Dynamic Island mode with animated corner radius transitions.
private var currentPillShape: DynamicIslandPillShape {
@ -738,6 +752,9 @@ struct ContentView: View {
} else if (!coordinator.expandingView.show || coordinator.expandingView.type == .download) && vm.notchState == .closed && downloadManager.isDownloading && Defaults[.enableDownloadListener] && !vm.hideOnClosed {
DownloadLiveActivity()
.transition(.blurReplace.animation(.interactiveSpring(dampingFraction: 1.2)))
} else if !coordinator.expandingView.show && vm.notchState == .closed && localSendLiveActivityActive && !vm.hideOnClosed {
LocalSendLiveActivity()
.transition(.blurReplace.animation(.interactiveSpring(dampingFraction: 1.2)))
} else if (!coordinator.expandingView.show || coordinator.expandingView.type == .doNotDisturb) && vm.notchState == .closed && Defaults[.enableDoNotDisturbDetection] && Defaults[.showDoNotDisturbIndicator] && (doNotDisturbManager.isDoNotDisturbActive || doNotDisturbManager.isFocusToastDismissing) && !vm.hideOnClosed && !lockScreenManager.isLocked {
DoNotDisturbLiveActivity()
} else if (!coordinator.expandingView.show || coordinator.expandingView.type == .lockScreen) && vm.notchState == .closed && (lockScreenManager.isLocked || !lockScreenManager.isLockIdle) && Defaults[.enableLockScreenLiveActivity] && !vm.hideOnClosed {