From acbdcee0141b7489685db7fb3f7dca1003256e42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Pflu=CC=88ger?= Date: Sat, 1 Apr 2023 02:35:31 +0200 Subject: [PATCH] fix: add own fullscreendiddismiss observer --- ios/Video/RCTPlayerDelegate.swift | 9 +++++++-- ios/Video/RCTVideo.swift | 6 +++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/ios/Video/RCTPlayerDelegate.swift b/ios/Video/RCTPlayerDelegate.swift index e6d67814dc..20de50f2be 100644 --- a/ios/Video/RCTPlayerDelegate.swift +++ b/ios/Video/RCTPlayerDelegate.swift @@ -11,11 +11,13 @@ class RCTPlayerDelegate: NSObject, AVPlayerViewControllerDelegate { private var _onPictureInPictureStatusChanged: RCTDirectEventBlock? private var _onVideoFullscreenPlayerWillPresent: RCTDirectEventBlock? private var _onVideoFullscreenPlayerWillDismiss: RCTDirectEventBlock? + private var _onVideoFullscreenPlayerDidDismiss: RCTDirectEventBlock? - init(_ onPictureInPictureStatusChanged: RCTDirectEventBlock?, _ onVideoFullscreenPlayerWillPresent: RCTDirectEventBlock?, _ onVideoFullscreenPlayerWillDismiss: RCTDirectEventBlock?) { + init(_ onPictureInPictureStatusChanged: RCTDirectEventBlock?, _ onVideoFullscreenPlayerWillPresent: RCTDirectEventBlock?, _ onVideoFullscreenPlayerWillDismiss: RCTDirectEventBlock?, _ onVideoFullscreenPlayerDidDismiss: RCTDirectEventBlock?) { _onPictureInPictureStatusChanged = onPictureInPictureStatusChanged _onVideoFullscreenPlayerWillPresent = onVideoFullscreenPlayerWillPresent _onVideoFullscreenPlayerWillDismiss = onVideoFullscreenPlayerWillDismiss + _onVideoFullscreenPlayerDidDismiss = onVideoFullscreenPlayerDidDismiss } func playerViewControllerDidStartPictureInPicture(_ playerViewController: AVPlayerViewController) { @@ -36,7 +38,10 @@ class RCTPlayerDelegate: NSObject, AVPlayerViewControllerDelegate { } - func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator: UIViewControllerTransitionCoordinator) { + func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { + coordinator.animate(alongsideTransition: nil, completion: { _ in + self._onVideoFullscreenPlayerDidDismiss?([:]) + }) _onVideoFullscreenPlayerWillDismiss?([:]) diff --git a/ios/Video/RCTVideo.swift b/ios/Video/RCTVideo.swift index c768744c27..870f21d72e 100644 --- a/ios/Video/RCTVideo.swift +++ b/ios/Video/RCTVideo.swift @@ -736,7 +736,7 @@ class RCTVideo: UIView, RCTVideoPlayerViewControllerDelegate, RCTPlayerObserverH self.removePlayerLayer() self.usePlayerViewController() if (_playerViewController !== nil) { - _playerDelegate = RCTPlayerDelegate(self.onPictureInPictureStatusChanged, self.onVideoFullscreenPlayerWillPresent, self.onVideoFullscreenPlayerWillDismiss) + _playerDelegate = RCTPlayerDelegate(self.onPictureInPictureStatusChanged, self.onVideoFullscreenPlayerWillPresent, self.onVideoFullscreenPlayerWillDismiss, self.onVideoFullscreenPlayerDidDismiss) _playerViewController!.delegate = _playerDelegate } } @@ -780,8 +780,8 @@ class RCTVideo: UIView, RCTVideoPlayerViewControllerDelegate, RCTPlayerObserverH _playerViewController = nil _playerObserver.playerViewController = nil self.applyModifiers() - - onVideoFullscreenPlayerDidDismiss?(["target": reactTag as Any]) + // Moved to RCTPlayerDelegate + // onVideoFullscreenPlayerDidDismiss?(["target": reactTag as Any]) } }