@@ -494,57 +494,71 @@ public final class MediaManagerImpl: NSObject, MediaManager {
494
494
switch type {
495
495
case . voice:
496
496
strongSelf. musicMediaPlayer? . control ( . playback( . pause) )
497
- strongSelf. voiceMediaPlayer? . stop ( )
498
497
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 } )
512
507
}
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
+ }
518
516
}
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) )
519
531
}
520
-
521
- var control = control
522
- if let timestamp = storedState? . timestamp {
523
- control = . seek( timestamp)
524
- }
525
- voiceMediaPlayer. control ( control)
526
532
} else {
533
+ strongSelf. voiceMediaPlayer? . stop ( )
527
534
strongSelf. voiceMediaPlayer = nil
528
535
}
529
536
case . music, . file:
530
- strongSelf. musicMediaPlayer? . stop ( )
531
537
strongSelf. voiceMediaPlayer? . control ( . playback( . pause) )
532
538
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
+ }
539
550
}
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) )
540
559
}
541
-
542
- var control = control
543
- if let timestamp = storedState? . timestamp {
544
- control = . seek( timestamp)
545
- }
546
- strongSelf. musicMediaPlayer? . control ( control)
547
560
} else {
561
+ strongSelf. musicMediaPlayer? . stop ( )
548
562
strongSelf. musicMediaPlayer = nil
549
563
}
550
564
}
0 commit comments