From 26db4c3a04a057c1e379d03b993d3fb6e232e212 Mon Sep 17 00:00:00 2001 From: Filipp Mikheev Date: Mon, 21 Jul 2025 22:47:02 -0500 Subject: [PATCH 1/5] extract playerProps to const --- src/internal/THEOplayerView.tsx | 74 +++++++++++++++++---------------- 1 file changed, 38 insertions(+), 36 deletions(-) diff --git a/src/internal/THEOplayerView.tsx b/src/internal/THEOplayerView.tsx index e0e336c14..9168917a7 100644 --- a/src/internal/THEOplayerView.tsx +++ b/src/internal/THEOplayerView.tsx @@ -401,44 +401,46 @@ export class THEOplayerView extends PureComponent - + {posterActive && } {children} From dbbe93c277d8a3f6d6fbc7b25f34eb2815bd8e2d Mon Sep 17 00:00:00 2001 From: Filipp Mikheev Date: Mon, 21 Jul 2025 22:48:02 -0500 Subject: [PATCH 2/5] add customPlayerRender callback --- src/api/THEOplayerView.ts | 5 +++++ src/internal/THEOplayerView.tsx | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/api/THEOplayerView.ts b/src/api/THEOplayerView.ts index f91ce35b8..9d31fe4d5 100644 --- a/src/api/THEOplayerView.ts +++ b/src/api/THEOplayerView.ts @@ -9,6 +9,11 @@ export interface THEOplayerViewProps { */ config?: PlayerConfiguration; + /** + * Render something instead of the player view. + */ + customPlayerRender?: (playerProps: any) => React.JSX.Element; + /** * The style applied to the player view. */ diff --git a/src/internal/THEOplayerView.tsx b/src/internal/THEOplayerView.tsx index 9168917a7..bc9465b0e 100644 --- a/src/internal/THEOplayerView.tsx +++ b/src/internal/THEOplayerView.tsx @@ -398,7 +398,7 @@ export class THEOplayerView extends PureComponent - + {customPlayerRender ? customPlayerRender({ ...playerProps }) : } {posterActive && } {children} From 460efb58135f01baa75b24a235398e5ef09e1192 Mon Sep 17 00:00:00 2001 From: Filipp Mikheev Date: Mon, 21 Jul 2025 22:51:59 -0500 Subject: [PATCH 3/5] make notifyNativePlayerReady public in iOS --- ios/THEOplayerRCTView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/THEOplayerRCTView.swift b/ios/THEOplayerRCTView.swift index d6fdcb60b..e59ccd5ec 100644 --- a/ios/THEOplayerRCTView.swift +++ b/ios/THEOplayerRCTView.swift @@ -168,7 +168,7 @@ public class THEOplayerRCTView: UIView { } } - private func notifyNativePlayerReady() { + public func notifyNativePlayerReady() { DispatchQueue.main.async { let versionString = THEOplayer.version if let forwardedNativeReady = self.onNativePlayerReady { From d38f64f9d3406432e7150f59793323821f06baec Mon Sep 17 00:00:00 2001 From: Filipp Mikheev Date: Mon, 21 Jul 2025 22:55:55 -0500 Subject: [PATCH 4/5] Make eventEmitter public in Android code. Extract payload shaping to a separate method emitPlayerReady --- android/src/main/java/com/theoplayer/PlayerEventEmitter.kt | 5 ++++- android/src/main/java/com/theoplayer/ReactTHEOplayerView.kt | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/com/theoplayer/PlayerEventEmitter.kt b/android/src/main/java/com/theoplayer/PlayerEventEmitter.kt index 3e349bb9b..47d4b8e25 100644 --- a/android/src/main/java/com/theoplayer/PlayerEventEmitter.kt +++ b/android/src/main/java/com/theoplayer/PlayerEventEmitter.kt @@ -280,7 +280,10 @@ class PlayerEventEmitter internal constructor( fun preparePlayer(player: Player) { attachListeners(player) - + emitPlayerReady(player) + } + + fun emitPlayerReady(player: Player) { val payload = Arguments.createMap() payload.putMap( EVENT_PROP_STATE, diff --git a/android/src/main/java/com/theoplayer/ReactTHEOplayerView.kt b/android/src/main/java/com/theoplayer/ReactTHEOplayerView.kt index f3fc67ddc..4019946e7 100644 --- a/android/src/main/java/com/theoplayer/ReactTHEOplayerView.kt +++ b/android/src/main/java/com/theoplayer/ReactTHEOplayerView.kt @@ -20,7 +20,7 @@ private const val TAG = "ReactTHEOplayerView" class ReactTHEOplayerView(private val reactContext: ThemedReactContext) : FrameLayout(reactContext), LifecycleEventListener { - private val eventEmitter: PlayerEventEmitter = + val eventEmitter: PlayerEventEmitter = PlayerEventEmitter(reactContext.reactApplicationContext, this) val broadcast = EventBroadcastAdapter(this) var presentationManager: PresentationManager? = null From 4f50a13ed30fc0c37ca1f428dc5c3640a9995c84 Mon Sep 17 00:00:00 2001 From: Filipp Mikheev Date: Wed, 27 Aug 2025 22:58:39 -0500 Subject: [PATCH 5/5] make isInitialized public --- android/src/main/java/com/theoplayer/ReactTHEOplayerView.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/src/main/java/com/theoplayer/ReactTHEOplayerView.kt b/android/src/main/java/com/theoplayer/ReactTHEOplayerView.kt index 4019946e7..eed36a20e 100644 --- a/android/src/main/java/com/theoplayer/ReactTHEOplayerView.kt +++ b/android/src/main/java/com/theoplayer/ReactTHEOplayerView.kt @@ -25,7 +25,7 @@ class ReactTHEOplayerView(private val reactContext: ThemedReactContext) : val broadcast = EventBroadcastAdapter(this) var presentationManager: PresentationManager? = null var playerContext: ReactTHEOplayerContext? = null - private var isInitialized: Boolean = false + var isInitialized: Boolean = false private var config: PlayerConfigAdapter? = null val adsApi: AdsApiWrapper