diff --git a/android/src/main/java/dev/zoriya/omni/HybridOmni.kt b/android/src/main/java/dev/zoriya/omni/HybridOmni.kt deleted file mode 100755 index 781b440..0000000 --- a/android/src/main/java/dev/zoriya/omni/HybridOmni.kt +++ /dev/null @@ -1,27 +0,0 @@ -package dev.zoriya.omni - -import android.graphics.Color -import android.view.View -import androidx.annotation.Keep -import com.facebook.proguard.annotations.DoNotStrip -import com.facebook.react.uimanager.ThemedReactContext -import com.margelo.nitro.omni.HybridOmniSpec - -@Keep -@DoNotStrip -class HybridOmni(val context: ThemedReactContext): HybridOmniSpec() { - // View - override val view: View = View(context) - - // Props - private var _isRed = false - override var isRed: Boolean - get() = _isRed - set(value) { - _isRed = value - view.setBackgroundColor( - if (value) Color.RED - else Color.BLACK - ) - } -} diff --git a/android/src/main/java/dev/zoriya/omni/OmniPackage.kt b/android/src/main/java/dev/zoriya/omni/OmniPackage.kt index fb08262..ceeb2b6 100755 --- a/android/src/main/java/dev/zoriya/omni/OmniPackage.kt +++ b/android/src/main/java/dev/zoriya/omni/OmniPackage.kt @@ -16,7 +16,7 @@ public class OmniPackage : BaseReactPackage() { override fun createViewManagers(reactContext: ReactApplicationContext): List> { val viewManagers = ArrayList>() - viewManagers.add(HybridOmniManager()) + viewManagers.add(HybridOmniViewManager()) return viewManagers } diff --git a/android/src/main/java/dev/zoriya/omni/OmniPlayer.kt b/android/src/main/java/dev/zoriya/omni/OmniPlayer.kt new file mode 100644 index 0000000..f5be432 --- /dev/null +++ b/android/src/main/java/dev/zoriya/omni/OmniPlayer.kt @@ -0,0 +1,76 @@ +package dev.zoriya.omni + +import com.margelo.nitro.omni.HybridOmniPlayerPropsSpec +import com.margelo.nitro.omni.HybridOmniPlayerSpec +import com.margelo.nitro.omni.PlayerStatus +import com.margelo.nitro.omni.Rendition +import com.margelo.nitro.omni.Track +import com.margelo.nitro.omni.Variant_NullType_Rendition + +class OmniPlayer(source: HybridOmniPlayerPropsSpec) : HybridOmniPlayerSpec() { + override val hasPrev: Boolean + get() = TODO("Not yet implemented") + override val hasNext: Boolean + get() = TODO("Not yet implemented") + override val status: PlayerStatus + get() = TODO("Not yet implemented") + override val isPlaying: Boolean + get() = TODO("Not yet implemented") + override var currentTime: Double + get() = TODO("Not yet implemented") + set(value) {} + override val buffered: Double + get() = TODO("Not yet implemented") + override val duration: Double + get() = TODO("Not yet implemented") + override var playbackRate: Double + get() = TODO("Not yet implemented") + set(value) {} + override var volume: Double + get() = TODO("Not yet implemented") + set(value) {} + override val videos: Array + get() = TODO("Not yet implemented") + override val audios: Array + get() = TODO("Not yet implemented") + override val subtitles: Array + get() = TODO("Not yet implemented") + override val rendition: Array + get() = TODO("Not yet implemented") + + override fun play() { + TODO("Not yet implemented") + } + + override fun pause() { + TODO("Not yet implemented") + } + + override fun seekBy(offset: Double) { + TODO("Not yet implemented") + } + + override fun playPrev() { + TODO("Not yet implemented") + } + + override fun playNext() { + TODO("Not yet implemented") + } + + override fun selectVideo(video: Track) { + TODO("Not yet implemented") + } + + override fun selectAudio(audio: Track) { + TODO("Not yet implemented") + } + + override fun selectSubtitle(subtitle: Track) { + TODO("Not yet implemented") + } + + override fun selectRendition(rendition: Variant_NullType_Rendition?) { + TODO("Not yet implemented") + } +} \ No newline at end of file diff --git a/android/src/main/java/dev/zoriya/omni/OmniPlayerFactory.kt b/android/src/main/java/dev/zoriya/omni/OmniPlayerFactory.kt new file mode 100755 index 0000000..622c379 --- /dev/null +++ b/android/src/main/java/dev/zoriya/omni/OmniPlayerFactory.kt @@ -0,0 +1,12 @@ +package dev.zoriya.omni + +import com.facebook.react.uimanager.ThemedReactContext +import com.margelo.nitro.omni.HybridOmniPlayerFactorySpec +import com.margelo.nitro.omni.HybridOmniPlayerPropsSpec +import com.margelo.nitro.omni.HybridOmniPlayerSpec + +class OmniPlayerFactory(val context: ThemedReactContext): HybridOmniPlayerFactorySpec() { + override fun createPlayer(props: HybridOmniPlayerPropsSpec): HybridOmniPlayerSpec { + return OmniPlayer(props) + } +} diff --git a/android/src/main/java/dev/zoriya/omni/OmniView.kt b/android/src/main/java/dev/zoriya/omni/OmniView.kt new file mode 100755 index 0000000..af00cc7 --- /dev/null +++ b/android/src/main/java/dev/zoriya/omni/OmniView.kt @@ -0,0 +1,22 @@ +package dev.zoriya.omni + +import android.graphics.Color +import android.view.View +import com.facebook.react.uimanager.ThemedReactContext +import com.margelo.nitro.omni.HybridOmniViewSpec + +class OmniView(val context: ThemedReactContext) : HybridOmniViewSpec() { + // View + override val view: View = View(context) + + // Props + override var autoplay: Boolean? + get() = TODO("Not yet implemented") + set(value) {} + override var showNotification: Boolean? + get() = TODO("Not yet implemented") + set(value) {} + override var autoPip: Boolean? + get() = TODO("Not yet implemented") + set(value) {} +} diff --git a/nitro.json b/nitro.json index 22eb761..0121b24 100644 --- a/nitro.json +++ b/nitro.json @@ -12,19 +12,13 @@ "OmniView": { "android": { "language": "kotlin", - "implementationClassName": "OmniView" - } - }, - "OmniPlayer": { - "android": { - "language": "kotlin", - "implementationClassName": "OmniPlayer" + "implementationClassName": "HybridOmniView" } }, "OmniPlayerFactory": { "android": { "language": "kotlin", - "implementationClassName": "OmniPlayerFactory" + "implementationClassName": "HybridOmniPlayerFactory" } } }, diff --git a/nitrogen/generated/android/OmniOnLoad.cpp b/nitrogen/generated/android/OmniOnLoad.cpp index 61b3803..422b421 100644 --- a/nitrogen/generated/android/OmniOnLoad.cpp +++ b/nitrogen/generated/android/OmniOnLoad.cpp @@ -31,23 +31,15 @@ int initialize(JavaVM* vm) { } struct JHybridOmniViewSpecImpl: public jni::JavaClass { - static constexpr auto kJavaDescriptor = "Ldev/zoriya/omni/OmniView;"; + static constexpr auto kJavaDescriptor = "Ldev/zoriya/omni/HybridOmniView;"; static std::shared_ptr create() { static const auto constructorFn = javaClassStatic()->getConstructor(); jni::local_ref javaPart = javaClassStatic()->newObject(constructorFn); return javaPart->getJHybridOmniViewSpec(); } }; -struct JHybridOmniPlayerSpecImpl: public jni::JavaClass { - static constexpr auto kJavaDescriptor = "Ldev/zoriya/omni/OmniPlayer;"; - static std::shared_ptr create() { - static const auto constructorFn = javaClassStatic()->getConstructor(); - jni::local_ref javaPart = javaClassStatic()->newObject(constructorFn); - return javaPart->getJHybridOmniPlayerSpec(); - } -}; struct JHybridOmniPlayerFactorySpecImpl: public jni::JavaClass { - static constexpr auto kJavaDescriptor = "Ldev/zoriya/omni/OmniPlayerFactory;"; + static constexpr auto kJavaDescriptor = "Ldev/zoriya/omni/HybridOmniPlayerFactory;"; static std::shared_ptr create() { static const auto constructorFn = javaClassStatic()->getConstructor(); jni::local_ref javaPart = javaClassStatic()->newObject(constructorFn); @@ -73,12 +65,6 @@ void registerAllNatives() { return JHybridOmniViewSpecImpl::create(); } ); - HybridObjectRegistry::registerHybridObjectConstructor( - "OmniPlayer", - []() -> std::shared_ptr { - return JHybridOmniPlayerSpecImpl::create(); - } - ); HybridObjectRegistry::registerHybridObjectConstructor( "OmniPlayerFactory", []() -> std::shared_ptr { diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/omni/views/HybridOmniViewManager.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/omni/views/HybridOmniViewManager.kt index c179b45..ac20c1c 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/omni/views/HybridOmniViewManager.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/omni/views/HybridOmniViewManager.kt @@ -21,7 +21,7 @@ import dev.zoriya.omni.* */ public class HybridOmniViewManager: SimpleViewManager() { init { - if (RecyclableView::class.java.isAssignableFrom(OmniView::class.java)) { + if (RecyclableView::class.java.isAssignableFrom(HybridOmniView::class.java)) { // Enable view recycling super.setupViewRecycling() } @@ -32,7 +32,7 @@ public class HybridOmniViewManager: SimpleViewManager() { } override fun createViewInstance(reactContext: ThemedReactContext): View { - val hybridView = OmniView(reactContext) + val hybridView = HybridOmniView(reactContext) val view = hybridView.view view.setTag(associated_hybrid_view_tag, hybridView) return view @@ -74,7 +74,7 @@ public class HybridOmniViewManager: SimpleViewManager() { } } - private fun getHybridView(view: View): OmniView? { - return view.getTag(associated_hybrid_view_tag) as? OmniView + private fun getHybridView(view: View): HybridOmniView? { + return view.getTag(associated_hybrid_view_tag) as? HybridOmniView } } diff --git a/shell.nix b/shell.nix index 7e5d617..a18ed5d 100644 --- a/shell.nix +++ b/shell.nix @@ -23,7 +23,7 @@ in nodejs biome jdk - (android-studio.withSdk android.androidsdk) + ((android-studio.withSdk android.androidsdk).overrideAttrs {forceWayland = true;}) ]; shellHook = ''