fix: prevent unwanted media resume when already paused

This commit is contained in:
Beingpax 2025-07-27 16:51:56 +05:45
parent 50c7b9a354
commit 31b6f2da48

View File

@ -8,7 +8,8 @@ import MediaRemoteAdapter
class PlaybackController: ObservableObject {
static let shared = PlaybackController()
private var mediaController: MediaRemoteAdapter.MediaController
private var didPauseMedia = false
private var wasPlayingWhenRecordingStarted = false
private var isMediaPlaying = false
@Published var isPauseMediaEnabled: Bool = UserDefaults.standard.bool(forKey: "isPauseMediaEnabled") {
didSet {
@ -25,6 +26,11 @@ 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
}
mediaController.onListenerTerminated = {
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
self.mediaController.startListening()
@ -32,19 +38,21 @@ class PlaybackController: ObservableObject {
}
}
func pauseMedia() async -> Bool {
guard isPauseMediaEnabled else { return false }
mediaController.pause()
didPauseMedia = true
return true
func pauseMedia() async {
guard isPauseMediaEnabled else { return }
if isMediaPlaying {
wasPlayingWhenRecordingStarted = true
mediaController.pause()
} else {
wasPlayingWhenRecordingStarted = false
}
}
func resumeMedia() async {
guard isPauseMediaEnabled && didPauseMedia else { return }
guard isPauseMediaEnabled, wasPlayingWhenRecordingStarted else { return }
mediaController.play()
didPauseMedia = false
}
}