/// /// JHybridOmniViewStateUpdater.cpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro /// Copyright © Marc Rousavy @ Margelo /// #include "JHybridOmniViewStateUpdater.hpp" #include "views/HybridOmniViewComponent.hpp" #include #include namespace margelo::nitro::omni::views { using namespace facebook; using ConcreteStateData = react::ConcreteState; void JHybridOmniViewStateUpdater::updateViewProps(jni::alias_ref /* class */, jni::alias_ref javaView, jni::alias_ref stateWrapperInterface) { std::shared_ptr hybridView = javaView->getJHybridOmniViewSpec(); // Get concrete StateWrapperImpl from passed StateWrapper interface object jobject rawStateWrapper = stateWrapperInterface.get(); if (!stateWrapperInterface->isInstanceOf(react::StateWrapperImpl::javaClassStatic())) [[unlikely]] { throw std::runtime_error("StateWrapper is not a StateWrapperImpl"); } auto stateWrapper = jni::alias_ref{ static_cast(rawStateWrapper)}; std::shared_ptr state = stateWrapper->cthis()->getState(); auto concreteState = std::static_pointer_cast(state); const HybridOmniViewState& data = concreteState->getData(); const std::shared_ptr& props = data.getProps(); if (props == nullptr) [[unlikely]] { // Props aren't set yet! throw std::runtime_error("HybridOmniViewState's data doesn't contain any props!"); } // Update all props if they are dirty 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 if (props->hybridRef.isDirty) { // hybridRef changed - call it with new this const auto& maybeFunc = props->hybridRef.value; if (maybeFunc.has_value()) { maybeFunc.value()(hybridView); } props->hybridRef.isDirty = false; } } } // namespace margelo::nitro::omni::views