@@ -494,57 +494,71 @@ public final class MediaManagerImpl: NSObject, MediaManager {
494494 switch type {
495495 case . voice:
496496 strongSelf. musicMediaPlayer? . control ( . playback( . pause) )
497- strongSelf. voiceMediaPlayer? . stop ( )
498497 if let ( account, playlist, settings, storedState) = inputData {
499- var continueInstantVideoLoopAfterFinish : Bool = true
500- var controlPlaybackWithProximity : Bool = true
501- if let playlist = playlist as? PeerMessagesMediaPlaylist {
502- continueInstantVideoLoopAfterFinish = playlist. context. sharedContext. energyUsageSettings. autoplayVideo
503- controlPlaybackWithProximity = playlist. context. sharedContext. currentMediaInputSettings. with ( { $0. enableRaiseToSpeak } )
504- }
505-
506- let voiceMediaPlayer = SharedMediaPlayer ( mediaManager: strongSelf, inForeground: strongSelf. inForeground, account: account, audioSession: strongSelf. audioSession, overlayMediaManager: strongSelf. overlayMediaManager, playlist: playlist, initialOrder: . reversed, initialLooping: . none, initialPlaybackRate: settings. voicePlaybackRate, playerIndex: nextPlayerIndex, controlPlaybackWithProximity: controlPlaybackWithProximity, type: type, continueInstantVideoLoopAfterFinish: continueInstantVideoLoopAfterFinish)
507- strongSelf. voiceMediaPlayer = voiceMediaPlayer
508- voiceMediaPlayer. playedToEnd = { [ weak voiceMediaPlayer] in
509- if let strongSelf = self , let voiceMediaPlayer = voiceMediaPlayer, voiceMediaPlayer === strongSelf. voiceMediaPlayer {
510- voiceMediaPlayer. stop ( )
511- strongSelf. voiceMediaPlayer = nil
498+ if areSharedMediaPlaylistsEqual ( playlist, strongSelf. voiceMediaPlayer? . playlist) , case . seek = control {
499+ strongSelf. voiceMediaPlayer? . control ( control)
500+ } else {
501+ strongSelf. voiceMediaPlayer? . stop ( )
502+ var continueInstantVideoLoopAfterFinish : Bool = true
503+ var controlPlaybackWithProximity : Bool = true
504+ if let playlist = playlist as? PeerMessagesMediaPlaylist {
505+ continueInstantVideoLoopAfterFinish = playlist. context. sharedContext. energyUsageSettings. autoplayVideo
506+ controlPlaybackWithProximity = playlist. context. sharedContext. currentMediaInputSettings. with ( { $0. enableRaiseToSpeak } )
512507 }
513- }
514- voiceMediaPlayer. cancelled = { [ weak voiceMediaPlayer] in
515- if let strongSelf = self , let voiceMediaPlayer = voiceMediaPlayer, voiceMediaPlayer === strongSelf. voiceMediaPlayer {
516- voiceMediaPlayer. stop ( )
517- strongSelf. voiceMediaPlayer = nil
508+
509+ let voiceMediaPlayer = SharedMediaPlayer ( mediaManager: strongSelf, inForeground: strongSelf. inForeground, account: account, audioSession: strongSelf. audioSession, overlayMediaManager: strongSelf. overlayMediaManager, playlist: playlist, initialOrder: . reversed, initialLooping: . none, initialPlaybackRate: settings. voicePlaybackRate, playerIndex: nextPlayerIndex, controlPlaybackWithProximity: controlPlaybackWithProximity, type: type, continueInstantVideoLoopAfterFinish: continueInstantVideoLoopAfterFinish)
510+ strongSelf. voiceMediaPlayer = voiceMediaPlayer
511+ voiceMediaPlayer. playedToEnd = { [ weak voiceMediaPlayer] in
512+ if let strongSelf = self , let voiceMediaPlayer = voiceMediaPlayer, voiceMediaPlayer === strongSelf. voiceMediaPlayer {
513+ voiceMediaPlayer. stop ( )
514+ strongSelf. voiceMediaPlayer = nil
515+ }
518516 }
517+ voiceMediaPlayer. cancelled = { [ weak voiceMediaPlayer] in
518+ if let strongSelf = self , let voiceMediaPlayer = voiceMediaPlayer, voiceMediaPlayer === strongSelf. voiceMediaPlayer {
519+ voiceMediaPlayer. stop ( )
520+ strongSelf. voiceMediaPlayer = nil
521+ }
522+ }
523+
524+ var control = control
525+ if case . seek = control {
526+ } else if let timestamp = storedState? . timestamp {
527+ control = . seek( timestamp)
528+ }
529+ voiceMediaPlayer. control ( control)
530+ voiceMediaPlayer. control ( . playback( . play) )
519531 }
520-
521- var control = control
522- if let timestamp = storedState? . timestamp {
523- control = . seek( timestamp)
524- }
525- voiceMediaPlayer. control ( control)
526532 } else {
533+ strongSelf. voiceMediaPlayer? . stop ( )
527534 strongSelf. voiceMediaPlayer = nil
528535 }
529536 case . music, . file:
530- strongSelf. musicMediaPlayer? . stop ( )
531537 strongSelf. voiceMediaPlayer? . control ( . playback( . pause) )
532538 if let ( account, playlist, settings, storedState) = inputData {
533- let musicMediaPlayer = SharedMediaPlayer ( mediaManager: strongSelf, inForeground: strongSelf. inForeground, account: account, audioSession: strongSelf. audioSession, overlayMediaManager: strongSelf. overlayMediaManager, playlist: playlist, initialOrder: settings. order, initialLooping: settings. looping, initialPlaybackRate: storedState? . playbackRate ?? . x1, playerIndex: nextPlayerIndex, controlPlaybackWithProximity: false , type: type, continueInstantVideoLoopAfterFinish: true )
534- strongSelf. musicMediaPlayer = musicMediaPlayer
535- musicMediaPlayer. cancelled = { [ weak musicMediaPlayer] in
536- if let strongSelf = self , let musicMediaPlayer = musicMediaPlayer, musicMediaPlayer === strongSelf. musicMediaPlayer {
537- musicMediaPlayer. stop ( )
538- strongSelf. musicMediaPlayer = nil
539+ if areSharedMediaPlaylistsEqual ( playlist, strongSelf. musicMediaPlayer? . playlist) , case . seek = control {
540+ strongSelf. musicMediaPlayer? . control ( control)
541+ } else {
542+ strongSelf. musicMediaPlayer? . stop ( )
543+ let musicMediaPlayer = SharedMediaPlayer ( mediaManager: strongSelf, inForeground: strongSelf. inForeground, account: account, audioSession: strongSelf. audioSession, overlayMediaManager: strongSelf. overlayMediaManager, playlist: playlist, initialOrder: settings. order, initialLooping: settings. looping, initialPlaybackRate: storedState? . playbackRate ?? . x1, playerIndex: nextPlayerIndex, controlPlaybackWithProximity: false , type: type, continueInstantVideoLoopAfterFinish: true )
544+ strongSelf. musicMediaPlayer = musicMediaPlayer
545+ musicMediaPlayer. cancelled = { [ weak musicMediaPlayer] in
546+ if let strongSelf = self , let musicMediaPlayer = musicMediaPlayer, musicMediaPlayer === strongSelf. musicMediaPlayer {
547+ musicMediaPlayer. stop ( )
548+ strongSelf. musicMediaPlayer = nil
549+ }
539550 }
551+
552+ var control = control
553+ if case . seek = control {
554+ } else if let timestamp = storedState? . timestamp {
555+ control = . seek( timestamp)
556+ }
557+ strongSelf. musicMediaPlayer? . control ( control)
558+ strongSelf. musicMediaPlayer? . control ( . playback( . play) )
540559 }
541-
542- var control = control
543- if let timestamp = storedState? . timestamp {
544- control = . seek( timestamp)
545- }
546- strongSelf. musicMediaPlayer? . control ( control)
547560 } else {
561+ strongSelf. musicMediaPlayer? . stop ( )
548562 strongSelf. musicMediaPlayer = nil
549563 }
550564 }
0 commit comments