Create types for player & view

This commit is contained in:
2026-04-09 12:52:54 +02:00
parent c71c8fb8f9
commit e1e2fa3f3b
70 changed files with 3499 additions and 369 deletions
@@ -1,24 +1,24 @@
///
/// JHybridOmniStateUpdater.cpp
/// JHybridOmniViewStateUpdater.cpp
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
/// https://github.com/mrousavy/nitro
/// Copyright © Marc Rousavy @ Margelo
///
#include "JHybridOmniStateUpdater.hpp"
#include "views/HybridOmniComponent.hpp"
#include "JHybridOmniViewStateUpdater.hpp"
#include "views/HybridOmniViewComponent.hpp"
#include <NitroModules/NitroDefines.hpp>
#include <react/fabric/StateWrapperImpl.h>
namespace margelo::nitro::omni::views {
using namespace facebook;
using ConcreteStateData = react::ConcreteState<HybridOmniState>;
using ConcreteStateData = react::ConcreteState<HybridOmniViewState>;
void JHybridOmniStateUpdater::updateViewProps(jni::alias_ref<jni::JClass> /* class */,
jni::alias_ref<JHybridOmniSpec::JavaPart> javaView,
void JHybridOmniViewStateUpdater::updateViewProps(jni::alias_ref<jni::JClass> /* class */,
jni::alias_ref<JHybridOmniViewSpec::JavaPart> javaView,
jni::alias_ref<JStateWrapper::javaobject> stateWrapperInterface) {
std::shared_ptr<JHybridOmniSpec> hybridView = javaView->getJHybridOmniSpec();
std::shared_ptr<JHybridOmniViewSpec> hybridView = javaView->getJHybridOmniViewSpec();
// Get concrete StateWrapperImpl from passed StateWrapper interface object
jobject rawStateWrapper = stateWrapperInterface.get();
@@ -29,17 +29,25 @@ void JHybridOmniStateUpdater::updateViewProps(jni::alias_ref<jni::JClass> /* cla
static_cast<react::StateWrapperImpl::javaobject>(rawStateWrapper)};
std::shared_ptr<const react::State> state = stateWrapper->cthis()->getState();
auto concreteState = std::static_pointer_cast<const ConcreteStateData>(state);
const HybridOmniState& data = concreteState->getData();
const std::shared_ptr<HybridOmniProps>& props = data.getProps();
const HybridOmniViewState& data = concreteState->getData();
const std::shared_ptr<HybridOmniViewProps>& props = data.getProps();
if (props == nullptr) [[unlikely]] {
// Props aren't set yet!
throw std::runtime_error("HybridOmniState's data doesn't contain any props!");
throw std::runtime_error("HybridOmniViewState's data doesn't contain any props!");
}
// Update all props if they are dirty
if (props->isRed.isDirty) {
hybridView->setIsRed(props->isRed.value);
props->isRed.isDirty = false;
if (props->autoplay.isDirty) {
hybridView->setAutoplay(props->autoplay.value);
props->autoplay.isDirty = false;
}
if (props->showNotification.isDirty) {
hybridView->setShowNotification(props->showNotification.value);
props->showNotification.isDirty = false;
}
if (props->autoPip.isDirty) {
hybridView->setAutoPip(props->autoPip.value);
props->autoPip.isDirty = false;
}
// Update hybridRef if it changed
@@ -1,5 +1,5 @@
///
/// JHybridOmniStateUpdater.hpp
/// JHybridOmniViewStateUpdater.hpp
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
/// https://github.com/mrousavy/nitro
/// Copyright © Marc Rousavy @ Margelo
@@ -17,30 +17,30 @@
#include <react/renderer/core/ConcreteComponentDescriptor.h>
#include <NitroModules/NitroDefines.hpp>
#include <NitroModules/JStateWrapper.hpp>
#include "JHybridOmniSpec.hpp"
#include "views/HybridOmniComponent.hpp"
#include "JHybridOmniViewSpec.hpp"
#include "views/HybridOmniViewComponent.hpp"
namespace margelo::nitro::omni::views {
using namespace facebook;
class JHybridOmniStateUpdater final: public jni::JavaClass<JHybridOmniStateUpdater> {
class JHybridOmniViewStateUpdater final: public jni::JavaClass<JHybridOmniViewStateUpdater> {
public:
static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/omni/views/HybridOmniStateUpdater;";
static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/omni/views/HybridOmniViewStateUpdater;";
public:
static void updateViewProps(jni::alias_ref<jni::JClass> /* class */,
jni::alias_ref<JHybridOmniSpec::JavaPart> view,
jni::alias_ref<JHybridOmniViewSpec::JavaPart> view,
jni::alias_ref<JStateWrapper::javaobject> stateWrapperInterface);
public:
static void registerNatives() {
// Register JNI calls
javaClassStatic()->registerNatives({
makeNativeMethod("updateViewProps", JHybridOmniStateUpdater::updateViewProps),
makeNativeMethod("updateViewProps", JHybridOmniViewStateUpdater::updateViewProps),
});
// Register React Native view component descriptor
auto provider = react::concreteComponentDescriptorProvider<HybridOmniComponentDescriptor>();
auto provider = react::concreteComponentDescriptorProvider<HybridOmniViewComponentDescriptor>();
auto providerRegistry = react::CoreComponentsRegistry::sharedProviderRegistry();
providerRegistry->add(provider);
}