refactor: internal refactor for prepare new arch (#3980)
* chore(js): fix typo * refactor(js): refactor type code for codegen * refactor(js): refactor Video component - parse shutterColor value within JS - remove internal fullscreen state * chore(js): add deprecation warning comment * fix(js): fix return type * fix(js): fix import path * refactor(android): apply changed API for new arch * refactor(ios): apply changed API for new arch * fix(ios): fix wrong name * refactor: refactor VideoDecoderProperties - rename and add wrapper * refactor(android): Code fixes for backward compatibility with Kotlin
This commit is contained in:
@@ -762,15 +762,13 @@ class RCTVideo: UIView, RCTVideoPlayerViewControllerDelegate, RCTPlayerObserverH
|
||||
}
|
||||
|
||||
@objc
|
||||
func setSeek(_ info: NSDictionary!) {
|
||||
let seekTime: NSNumber! = info["time"] as! NSNumber
|
||||
let seekTolerance: NSNumber! = info["tolerance"] as! NSNumber
|
||||
func setSeek(_ time: NSNumber, _ tolerance: NSNumber) {
|
||||
let item: AVPlayerItem? = _player?.currentItem
|
||||
|
||||
_pendingSeek = true
|
||||
|
||||
guard item != nil, let player = _player, let item, item.status == AVPlayerItem.Status.readyToPlay else {
|
||||
_pendingSeekTime = seekTime.floatValue
|
||||
_pendingSeekTime = time.floatValue
|
||||
return
|
||||
}
|
||||
|
||||
@@ -778,15 +776,15 @@ class RCTVideo: UIView, RCTVideoPlayerViewControllerDelegate, RCTPlayerObserverH
|
||||
player: player,
|
||||
playerItem: item,
|
||||
paused: _paused,
|
||||
seekTime: seekTime.floatValue,
|
||||
seekTolerance: seekTolerance.floatValue
|
||||
seekTime: time.floatValue,
|
||||
seekTolerance: tolerance.floatValue
|
||||
) { [weak self] (_: Bool) in
|
||||
guard let self else { return }
|
||||
|
||||
self._playerObserver.addTimeObserverIfNotSet()
|
||||
self.setPaused(self._paused)
|
||||
self.onVideoSeek?(["currentTime": NSNumber(value: Float(CMTimeGetSeconds(item.currentTime()))),
|
||||
"seekTime": seekTime,
|
||||
"seekTime": time,
|
||||
"target": self.reactTag])
|
||||
}
|
||||
|
||||
@@ -1303,7 +1301,7 @@ class RCTVideo: UIView, RCTVideoPlayerViewControllerDelegate, RCTPlayerObserverH
|
||||
// MARK: - Export
|
||||
|
||||
@objc
|
||||
func save(options: NSDictionary!, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
||||
func save(_ options: NSDictionary!, _ resolve: @escaping RCTPromiseResolveBlock, _ reject: @escaping RCTPromiseRejectBlock) {
|
||||
RCTVideoSave.save(
|
||||
options: options,
|
||||
resolve: resolve,
|
||||
@@ -1320,14 +1318,6 @@ class RCTVideo: UIView, RCTVideoPlayerViewControllerDelegate, RCTPlayerObserverH
|
||||
_resouceLoaderDelegate?.setLicenseResultError(error, licenseUrl)
|
||||
}
|
||||
|
||||
func dismissFullscreenPlayer() {
|
||||
setFullscreen(false)
|
||||
}
|
||||
|
||||
func presentFullscreenPlayer() {
|
||||
setFullscreen(true)
|
||||
}
|
||||
|
||||
// MARK: - RCTPlayerObserverHandler
|
||||
|
||||
func handleTimeUpdate(time _: CMTime) {
|
||||
@@ -1381,18 +1371,12 @@ class RCTVideo: UIView, RCTVideoPlayerViewControllerDelegate, RCTPlayerObserverH
|
||||
|
||||
Task {
|
||||
if self._pendingSeek {
|
||||
self.setSeek([
|
||||
"time": NSNumber(value: self._pendingSeekTime),
|
||||
"tolerance": NSNumber(value: 100),
|
||||
])
|
||||
self.setSeek(NSNumber(value: self._pendingSeekTime), NSNumber(value: 100))
|
||||
self._pendingSeek = false
|
||||
}
|
||||
|
||||
if self._startPosition >= 0 {
|
||||
self.setSeek([
|
||||
"time": NSNumber(value: self._startPosition),
|
||||
"tolerance": NSNumber(value: 100),
|
||||
])
|
||||
self.setSeek(NSNumber(value: self._startPosition), NSNumber(value: 100))
|
||||
self._startPosition = -1
|
||||
}
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
#import "React/RCTViewManager.h"
|
||||
#import <React/RCTBridge.h>
|
||||
#import <React/RCTBridgeModule.h>
|
||||
|
||||
@interface RCT_EXTERN_MODULE (RCTVideoManager, RCTViewManager)
|
||||
|
||||
@@ -37,7 +37,7 @@ RCT_EXPORT_VIEW_PROPERTY(progressUpdateInterval, float);
|
||||
RCT_EXPORT_VIEW_PROPERTY(restoreUserInterfaceForPIPStopCompletionHandler, BOOL);
|
||||
RCT_EXPORT_VIEW_PROPERTY(localSourceEncryptionKeyScheme, NSString);
|
||||
RCT_EXPORT_VIEW_PROPERTY(subtitleStyle, NSDictionary);
|
||||
RCT_EXPORT_VIEW_PROPERTY(showNotificationControls, BOOL)
|
||||
RCT_EXPORT_VIEW_PROPERTY(showNotificationControls, BOOL);
|
||||
/* Should support: onLoadStart, onLoad, and onError to stay consistent with Image */
|
||||
RCT_EXPORT_VIEW_PROPERTY(onVideoLoadStart, RCTDirectEventBlock);
|
||||
RCT_EXPORT_VIEW_PROPERTY(onVideoLoad, RCTDirectEventBlock);
|
||||
@@ -68,31 +68,21 @@ RCT_EXPORT_VIEW_PROPERTY(onTextTracks, RCTDirectEventBlock);
|
||||
RCT_EXPORT_VIEW_PROPERTY(onAudioTracks, RCTDirectEventBlock);
|
||||
RCT_EXPORT_VIEW_PROPERTY(onTextTrackDataChanged, RCTDirectEventBlock);
|
||||
|
||||
RCT_EXTERN_METHOD(seekCmd : (nonnull NSNumber*)reactTag time : (nonnull NSNumber*)time tolerance : (nonnull NSNumber*)tolerance)
|
||||
RCT_EXTERN_METHOD(setLicenseResultCmd : (nonnull NSNumber*)reactTag lisence : (NSString*)license licenseUrl : (NSString*)licenseUrl)
|
||||
RCT_EXTERN_METHOD(setLicenseResultErrorCmd : (nonnull NSNumber*)reactTag error : (NSString*)error licenseUrl : (NSString*)licenseUrl)
|
||||
RCT_EXTERN_METHOD(setPlayerPauseStateCmd : (nonnull NSNumber*)reactTag paused : (nonnull BOOL)paused)
|
||||
RCT_EXTERN_METHOD(setVolumeCmd : (nonnull NSNumber*)reactTag volume : (nonnull float*)volume)
|
||||
RCT_EXTERN_METHOD(setFullScreenCmd : (nonnull NSNumber*)reactTag fullscreen : (nonnull BOOL)fullScreen)
|
||||
|
||||
RCT_EXTERN_METHOD(save
|
||||
: (NSDictionary*)options reactTag
|
||||
: (nonnull NSNumber*)reactTag resolver
|
||||
: (RCTPromiseResolveBlock)resolve rejecter
|
||||
: (nonnull NSNumber*)reactTag options
|
||||
: (NSDictionary*)options resolve
|
||||
: (RCTPromiseResolveBlock)resolve reject
|
||||
: (RCTPromiseRejectBlock)reject)
|
||||
|
||||
RCT_EXTERN_METHOD(seek : (NSDictionary*)info reactTag : (nonnull NSNumber*)reactTag)
|
||||
|
||||
RCT_EXTERN_METHOD(setLicenseResult : (NSString*)license licenseUrl : (NSString*)licenseUrl reactTag : (nonnull NSNumber*)reactTag)
|
||||
|
||||
RCT_EXTERN_METHOD(setLicenseResultError : (NSString*)error licenseUrl : (NSString*)licenseUrl reactTag : (nonnull NSNumber*)reactTag)
|
||||
|
||||
RCT_EXTERN_METHOD(setPlayerPauseState : (nonnull NSNumber*)paused reactTag : (nonnull NSNumber*)reactTag)
|
||||
|
||||
RCT_EXTERN_METHOD(presentFullscreenPlayer : (nonnull NSNumber*)reactTag)
|
||||
|
||||
RCT_EXTERN_METHOD(dismissFullscreenPlayer : (nonnull NSNumber*)reactTag)
|
||||
|
||||
RCT_EXTERN_METHOD(setVolume : (nonnull float*)volume reactTag : (nonnull NSNumber*)reactTag)
|
||||
|
||||
RCT_EXTERN_METHOD(getCurrentPosition
|
||||
: (nonnull NSNumber*)reactTag resolver
|
||||
: (RCTPromiseResolveBlock)resolve rejecter
|
||||
: (nonnull NSNumber*)reactTag resolve
|
||||
: (RCTPromiseResolveBlock)resolve reject
|
||||
: (RCTPromiseRejectBlock)reject)
|
||||
|
||||
RCT_EXTERN_METHOD(setFullScreen : (BOOL)fullScreen reactTag : (nonnull NSNumber*)reactTag)
|
||||
|
||||
@end
|
||||
|
@@ -30,76 +30,62 @@ class RCTVideoManager: RCTViewManager {
|
||||
}
|
||||
}
|
||||
|
||||
@objc(save:reactTag:resolver:rejecter:)
|
||||
func save(options: NSDictionary, reactTag: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
||||
@objc(seekCmd:time:tolerance:)
|
||||
func seekCmd(_ reactTag: NSNumber, time: NSNumber, tolerance: NSNumber) {
|
||||
performOnVideoView(withReactTag: reactTag, callback: { videoView in
|
||||
videoView?.save(options: options, resolve: resolve, reject: reject)
|
||||
videoView?.setSeek(time, tolerance)
|
||||
})
|
||||
}
|
||||
|
||||
@objc(seek:reactTag:)
|
||||
func seek(info: NSDictionary, reactTag: NSNumber) {
|
||||
performOnVideoView(withReactTag: reactTag, callback: { videoView in
|
||||
videoView?.setSeek(info)
|
||||
})
|
||||
}
|
||||
|
||||
@objc(setLicenseResult:licenseUrl:reactTag:)
|
||||
func setLicenseResult(license: NSString, licenseUrl: NSString, reactTag: NSNumber) {
|
||||
@objc(setLicenseResultCmd:license:licenseUrl:)
|
||||
func setLicenseResultCmd(_ reactTag: NSNumber, license: NSString, licenseUrl: NSString) {
|
||||
performOnVideoView(withReactTag: reactTag, callback: { videoView in
|
||||
videoView?.setLicenseResult(license as String, licenseUrl as String)
|
||||
})
|
||||
}
|
||||
|
||||
@objc(setLicenseResultError:licenseUrl:reactTag:)
|
||||
func setLicenseResultError(error: NSString, licenseUrl: NSString, reactTag: NSNumber) {
|
||||
@objc(setLicenseResultErrorCmd:error:licenseUrl:)
|
||||
func setLicenseResultErrorCmd(_ reactTag: NSNumber, error: NSString, licenseUrl: NSString) {
|
||||
performOnVideoView(withReactTag: reactTag, callback: { videoView in
|
||||
videoView?.setLicenseResultError(error as String, licenseUrl as String)
|
||||
})
|
||||
}
|
||||
|
||||
@objc(dismissFullscreenPlayer:)
|
||||
func dismissFullscreenPlayer(_ reactTag: NSNumber) {
|
||||
@objc(setPlayerPauseStateCmd:paused:)
|
||||
func setPlayerPauseStateCmd(_ reactTag: NSNumber, paused: Bool) {
|
||||
performOnVideoView(withReactTag: reactTag, callback: { videoView in
|
||||
videoView?.dismissFullscreenPlayer()
|
||||
videoView?.setPaused(paused)
|
||||
})
|
||||
}
|
||||
|
||||
@objc(presentFullscreenPlayer:)
|
||||
func presentFullscreenPlayer(_ reactTag: NSNumber) {
|
||||
@objc(setVolumeCmd:volume:)
|
||||
func setVolumeCmd(_ reactTag: NSNumber, volume: Float) {
|
||||
performOnVideoView(withReactTag: reactTag, callback: { videoView in
|
||||
videoView?.presentFullscreenPlayer()
|
||||
videoView?.setVolume(volume)
|
||||
})
|
||||
}
|
||||
|
||||
@objc(setPlayerPauseState:reactTag:)
|
||||
func setPlayerPauseState(paused: NSNumber, reactTag: NSNumber) {
|
||||
performOnVideoView(withReactTag: reactTag, callback: { videoView in
|
||||
videoView?.setPaused(paused.boolValue)
|
||||
})
|
||||
}
|
||||
|
||||
@objc(setVolume:reactTag:)
|
||||
func setVolume(value: Float, reactTag: NSNumber) {
|
||||
performOnVideoView(withReactTag: reactTag, callback: { videoView in
|
||||
videoView?.setVolume(value)
|
||||
})
|
||||
}
|
||||
|
||||
@objc(getCurrentPosition:resolver:rejecter:)
|
||||
func getCurrentPosition(reactTag: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
||||
performOnVideoView(withReactTag: reactTag, callback: { videoView in
|
||||
videoView?.getCurrentPlaybackTime(resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
@objc(setFullScreen:reactTag:)
|
||||
func setFullScreen(fullScreen: Bool, reactTag: NSNumber) {
|
||||
@objc(setFullScreenCmd:fullscreen:)
|
||||
func setFullScreenCmd(_ reactTag: NSNumber, fullScreen: Bool) {
|
||||
performOnVideoView(withReactTag: reactTag, callback: { videoView in
|
||||
videoView?.setFullscreen(fullScreen)
|
||||
})
|
||||
}
|
||||
|
||||
@objc(save:options:resolve:reject:)
|
||||
func save(_ reactTag: NSNumber, options: NSDictionary, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
||||
performOnVideoView(withReactTag: reactTag, callback: { videoView in
|
||||
videoView?.save(options, resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
@objc(getCurrentPosition:resolve:reject:)
|
||||
func getCurrentPosition(_ reactTag: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
||||
performOnVideoView(withReactTag: reactTag, callback: { videoView in
|
||||
videoView?.getCurrentPlaybackTime(resolve, reject)
|
||||
})
|
||||
}
|
||||
|
||||
override class func requiresMainQueueSetup() -> Bool {
|
||||
return true
|
||||
}
|
||||
|
Reference in New Issue
Block a user