feat: Add StateWrapper to fbjni typings
#55288
Open
+21
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary:
In Nitro, we support creating views using Fabric's view system.
We use
StateWrapper(andStateWrapperImpl) from C++. While we can usereact::StateWrapperImplfrom C++, we had to defineStateWrapperourselves (seeJStateWrapper.hpp)StateWrapperImplinherits fromStateWrapperin Kotlin, but the same inheritance is not reflected in C++ via fbjni.To fix this, we did some dirty static downcasting, which is not safe to do but worked.
Changelog:
[ANDROID] [ADDED] - Add
StateWrapperto C++ fbjni typesTest Plan:
When you have a
StateWrapperImplin Kotlin, pass that to C++ via fbjni using thejni::alias_ref<react::StateWrapper>type. (Example;SimpleViewManager.updateState(...)gives you aStateWrapper)Then try downcasting via
jni::dynamic_ref_cast<react::StateWrapperImpl>(...).If both works, this PR works.