From 2736bf91f129bb1352e9488b008e1159a5b33d3d Mon Sep 17 00:00:00 2001 From: olegr Date: Thu, 7 May 2026 14:16:15 +0200 Subject: [PATCH] Expose native logs flag --- .../java/com/theoplayer/player/PlayerModule.kt | 15 +++++++++++++++ ios/THEOplayerRCTBridge.m | 4 ++++ ios/THEOplayerRCTPlayerAPI.swift | 16 ++++++++++++++++ src/api/barrel.ts | 1 + src/api/debug/NativePlatformLogs.ts | 14 ++++++++++++++ src/api/debug/barrel.ts | 1 + 6 files changed, 51 insertions(+) create mode 100644 src/api/debug/NativePlatformLogs.ts create mode 100644 src/api/debug/barrel.ts diff --git a/android/src/main/java/com/theoplayer/player/PlayerModule.kt b/android/src/main/java/com/theoplayer/player/PlayerModule.kt index d65107023..a0113dbe2 100644 --- a/android/src/main/java/com/theoplayer/player/PlayerModule.kt +++ b/android/src/main/java/com/theoplayer/player/PlayerModule.kt @@ -49,6 +49,21 @@ class PlayerModule(context: ReactApplicationContext) : ReactContextBaseJavaModul promise.resolve(THEOplayerGlobal.getVersion()) } + @ReactMethod + fun setNativePlatformLogsEnabled(enabled: Boolean, promise: Promise) { + try { + val logger = THEOplayerGlobal.getSharedInstance(reactApplicationContext).logger + if (enabled) { + logger.enableAllTags() + } else { + logger.disableAllTags() + } + promise.resolve(null) + } catch (exception: Exception) { + promise.reject("E_NATIVE_PLATFORM_LOGS", exception) + } + } + @ReactMethod fun setABRConfig(tag: Int, config: ReadableMap?) { viewResolver.resolveViewByTag(tag) { view: ReactTHEOplayerView? -> diff --git a/ios/THEOplayerRCTBridge.m b/ios/THEOplayerRCTBridge.m index 6ffa20537..07f854f2f 100644 --- a/ios/THEOplayerRCTBridge.m +++ b/ios/THEOplayerRCTBridge.m @@ -65,6 +65,10 @@ @interface RCT_EXTERN_REMAP_MODULE(THEORCTPlayerModule, THEOplayerRCTPlayerAPI, RCT_EXTERN_METHOD(version:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) +RCT_EXTERN_METHOD(setNativePlatformLogsEnabled:(BOOL)enabled + resolver:(RCTPromiseResolveBlock)resolve + rejecter:(RCTPromiseRejectBlock)reject) + RCT_EXTERN_METHOD(setPaused:(nonnull NSNumber *)node paused:(BOOL)paused) diff --git a/ios/THEOplayerRCTPlayerAPI.swift b/ios/THEOplayerRCTPlayerAPI.swift index 2f597ef42..891e8539e 100644 --- a/ios/THEOplayerRCTPlayerAPI.swift +++ b/ios/THEOplayerRCTPlayerAPI.swift @@ -6,6 +6,10 @@ import Foundation import UIKit import THEOplayerSDK +#if canImport(THEOplayerTHEOliveIntegration) +@_spi(Debug) import THEOplayerTHEOliveIntegration +#endif + #if canImport(THEOplayerConnectorSideloadedSubtitle) import THEOplayerConnectorSideloadedSubtitle #endif @@ -42,6 +46,18 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule { resolve(versionString) } + @objc(setNativePlatformLogsEnabled:resolver:rejecter:) + func setNativePlatformLogsEnabled(_ enabled: Bool, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void { +#if canImport(THEOplayerTHEOliveIntegration) + if enabled { + DebugConfig.enableAll() + } else { + DebugConfig.disableAll() + } +#endif + resolve(nil) + } + @objc(setPaused:paused:) func setPaused(_ node: NSNumber, paused: Bool) -> Void { DispatchQueue.main.async { diff --git a/src/api/barrel.ts b/src/api/barrel.ts index 672b359a3..4fe623036 100644 --- a/src/api/barrel.ts +++ b/src/api/barrel.ts @@ -4,6 +4,7 @@ export * from './backgroundAudio/barrel'; export * from './broadcast/barrel'; export * from './cache/barrel'; export * from './cast/barrel'; +export * from './debug/barrel'; export * from './pip/barrel'; export * from './config/barrel'; export * from './error/barrel'; diff --git a/src/api/debug/NativePlatformLogs.ts b/src/api/debug/NativePlatformLogs.ts new file mode 100644 index 000000000..2a0164a43 --- /dev/null +++ b/src/api/debug/NativePlatformLogs.ts @@ -0,0 +1,14 @@ +import { NativeModules } from 'react-native'; + +type NativePlayerModuleType = { + setNativePlatformLogsEnabled?: (enabled: boolean) => Promise; +}; + +const NativePlayerModule = NativeModules.THEORCTPlayerModule as NativePlayerModuleType; + +export function setNativePlatformLogsEnabled(enabled: boolean): Promise { + if (!NativePlayerModule?.setNativePlatformLogsEnabled) { + return Promise.resolve(); + } + return NativePlayerModule.setNativePlatformLogsEnabled(enabled); +} diff --git a/src/api/debug/barrel.ts b/src/api/debug/barrel.ts new file mode 100644 index 000000000..4f6080991 --- /dev/null +++ b/src/api/debug/barrel.ts @@ -0,0 +1 @@ +export * from './NativePlatformLogs';