Fix music app auto-launch

This commit is contained in:
Beingpax 2025-08-03 17:30:38 +05:45
parent e17a5a967a
commit 4ce7c7d942

View File

@ -10,6 +10,8 @@ class PlaybackController: ObservableObject {
private var mediaController: MediaRemoteAdapter.MediaController
private var wasPlayingWhenRecordingStarted = false
private var isMediaPlaying = false
private var lastKnownTrackInfo: TrackInfo?
private var originalMediaAppBundleId: String?
@Published var isPauseMediaEnabled: Bool = UserDefaults.standard.bool(forKey: "isPauseMediaEnabled") {
didSet {
@ -25,10 +27,9 @@ class PlaybackController: ObservableObject {
}
mediaController.startListening()
// Listen for track changes to know if media is playing
mediaController.onTrackInfoReceived = { [weak self] trackInfo in
self?.isMediaPlaying = trackInfo.payload.isPlaying ?? false
self?.lastKnownTrackInfo = trackInfo
}
mediaController.onListenerTerminated = {
@ -43,16 +44,28 @@ class PlaybackController: ObservableObject {
if isMediaPlaying {
wasPlayingWhenRecordingStarted = true
originalMediaAppBundleId = lastKnownTrackInfo?.payload.bundleIdentifier
mediaController.pause()
} else {
wasPlayingWhenRecordingStarted = false
originalMediaAppBundleId = nil
}
}
func resumeMedia() async {
guard isPauseMediaEnabled, wasPlayingWhenRecordingStarted else { return }
mediaController.play()
if let bundleId = originalMediaAppBundleId, isAppStillRunning(bundleId: bundleId) {
mediaController.play()
}
originalMediaAppBundleId = nil
}
/// Checks if an app with the given bundle identifier is currently running
private func isAppStillRunning(bundleId: String) -> Bool {
let runningApps = NSWorkspace.shared.runningApplications
return runningApps.contains { $0.bundleIdentifier == bundleId }
}
}