fix(ios): update onPlaybackStateChanged implementation (#3687)
This commit is contained in:
@@ -44,6 +44,7 @@ class RCTVideo: UIView, RCTVideoPlayerViewControllerDelegate, RCTPlayerObserverH
|
||||
private var _muted = false
|
||||
private var _paused = false
|
||||
private var _repeat = false
|
||||
private var _isPlaying: Bool?
|
||||
private var _allowsExternalPlayback = true
|
||||
private var _textTracks: [TextTrack]?
|
||||
private var _selectedTextTrackCriteria: SelectedTrackCriteria?
|
||||
@@ -1378,6 +1379,20 @@ class RCTVideo: UIView, RCTVideoPlayerViewControllerDelegate, RCTPlayerObserverH
|
||||
onVideoBuffer?(["isBuffering": false, "target": reactTag as Any])
|
||||
}
|
||||
|
||||
func handleTimeControlStatusChange(player: AVPlayer, change: NSKeyValueObservedChange<AVPlayer.TimeControlStatus>) {
|
||||
if player.timeControlStatus == change.oldValue && change.oldValue != nil {
|
||||
return
|
||||
}
|
||||
guard [.paused, .playing].contains(player.timeControlStatus) else {
|
||||
return
|
||||
}
|
||||
let isPlaying = player.timeControlStatus == .playing
|
||||
|
||||
guard _isPlaying == nil || _isPlaying! != isPlaying else { return }
|
||||
_isPlaying = isPlaying
|
||||
onVideoPlaybackStateChanged?(["isPlaying": isPlaying, "target": reactTag as Any])
|
||||
}
|
||||
|
||||
func handlePlaybackRateChange(player: AVPlayer, change: NSKeyValueObservedChange<Float>) {
|
||||
guard let _player else { return }
|
||||
|
||||
@@ -1388,9 +1403,6 @@ class RCTVideo: UIView, RCTVideoPlayerViewControllerDelegate, RCTPlayerObserverH
|
||||
onPlaybackRateChange?(["playbackRate": NSNumber(value: _player.rate),
|
||||
"target": reactTag as Any])
|
||||
|
||||
onVideoPlaybackStateChanged?(["isPlaying": _player.rate != 0,
|
||||
"target": reactTag as Any])
|
||||
|
||||
if _playbackStalled && _player.rate > 0 {
|
||||
onPlaybackResume?(["playbackRate": NSNumber(value: _player.rate),
|
||||
"target": reactTag as Any])
|
||||
|
||||
Reference in New Issue
Block a user