@onekeyfe/react-native-perp-depth-bar 3.0.96 → 3.0.98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/nitrogen/generated/android/c++/views/JHybridPerpDepthBarsStateUpdater.cpp +122 -87
- package/lib/nitrogen/generated/android/c++/views/JHybridPerpDepthBarsStateUpdater.hpp +6 -1
- package/lib/nitrogen/generated/android/c++/views/JHybridPerpSideRatioStateUpdater.cpp +66 -41
- package/lib/nitrogen/generated/android/c++/views/JHybridPerpSideRatioStateUpdater.hpp +6 -1
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpDepthBarsManager.kt +26 -10
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpDepthBarsStateUpdater.kt +2 -2
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpSideRatioManager.kt +26 -10
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpSideRatioStateUpdater.kt +2 -2
- package/lib/nitrogen/generated/ios/c++/views/HybridPerpDepthBarsComponent.mm +146 -107
- package/lib/nitrogen/generated/ios/c++/views/HybridPerpSideRatioComponent.mm +86 -57
- package/lib/nitrogen/generated/shared/c++/views/HybridPerpDepthBarsComponent.cpp +23 -225
- package/lib/nitrogen/generated/shared/c++/views/HybridPerpDepthBarsComponent.hpp +74 -66
- package/lib/nitrogen/generated/shared/c++/views/HybridPerpSideRatioComponent.cpp +13 -125
- package/lib/nitrogen/generated/shared/c++/views/HybridPerpSideRatioComponent.hpp +44 -56
- package/lib/nitrogen/nitrogen/generated/android/c++/views/JHybridPerpDepthBarsStateUpdater.cpp +122 -87
- package/lib/nitrogen/nitrogen/generated/android/c++/views/JHybridPerpDepthBarsStateUpdater.hpp +6 -1
- package/lib/nitrogen/nitrogen/generated/android/c++/views/JHybridPerpSideRatioStateUpdater.cpp +66 -41
- package/lib/nitrogen/nitrogen/generated/android/c++/views/JHybridPerpSideRatioStateUpdater.hpp +6 -1
- package/lib/nitrogen/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpDepthBarsManager.kt +26 -10
- package/lib/nitrogen/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpDepthBarsStateUpdater.kt +2 -2
- package/lib/nitrogen/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpSideRatioManager.kt +26 -10
- package/lib/nitrogen/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpSideRatioStateUpdater.kt +2 -2
- package/lib/nitrogen/nitrogen/generated/ios/c++/views/HybridPerpDepthBarsComponent.mm +146 -107
- package/lib/nitrogen/nitrogen/generated/ios/c++/views/HybridPerpSideRatioComponent.mm +86 -57
- package/lib/nitrogen/nitrogen/generated/shared/c++/views/HybridPerpDepthBarsComponent.cpp +23 -225
- package/lib/nitrogen/nitrogen/generated/shared/c++/views/HybridPerpDepthBarsComponent.hpp +74 -66
- package/lib/nitrogen/nitrogen/generated/shared/c++/views/HybridPerpSideRatioComponent.cpp +13 -125
- package/lib/nitrogen/nitrogen/generated/shared/c++/views/HybridPerpSideRatioComponent.hpp +44 -56
- package/nitrogen/generated/android/c++/views/JHybridPerpDepthBarsStateUpdater.cpp +122 -87
- package/nitrogen/generated/android/c++/views/JHybridPerpDepthBarsStateUpdater.hpp +6 -1
- package/nitrogen/generated/android/c++/views/JHybridPerpSideRatioStateUpdater.cpp +66 -41
- package/nitrogen/generated/android/c++/views/JHybridPerpSideRatioStateUpdater.hpp +6 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpDepthBarsManager.kt +26 -10
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpDepthBarsStateUpdater.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpSideRatioManager.kt +26 -10
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpSideRatioStateUpdater.kt +2 -2
- package/nitrogen/generated/ios/c++/views/HybridPerpDepthBarsComponent.mm +146 -107
- package/nitrogen/generated/ios/c++/views/HybridPerpSideRatioComponent.mm +86 -57
- package/nitrogen/generated/shared/c++/views/HybridPerpDepthBarsComponent.cpp +23 -225
- package/nitrogen/generated/shared/c++/views/HybridPerpDepthBarsComponent.hpp +74 -66
- package/nitrogen/generated/shared/c++/views/HybridPerpSideRatioComponent.cpp +13 -125
- package/nitrogen/generated/shared/c++/views/HybridPerpSideRatioComponent.hpp +44 -56
- package/package.json +4 -4
|
@@ -7,14 +7,15 @@
|
|
|
7
7
|
|
|
8
8
|
#pragma once
|
|
9
9
|
|
|
10
|
-
#include <
|
|
11
|
-
#include <NitroModules/
|
|
12
|
-
#include <NitroModules/
|
|
13
|
-
#include <NitroModules/CachedProp.hpp>
|
|
14
|
-
#include <react/renderer/core/ConcreteComponentDescriptor.h>
|
|
15
|
-
#include <react/renderer/core/PropsParserContext.h>
|
|
10
|
+
#include <NitroModules/ReactProp.hpp>
|
|
11
|
+
#include <NitroModules/ViewComponentDescriptor.hpp>
|
|
12
|
+
#include <NitroModules/ViewPropsHolderState.hpp>
|
|
16
13
|
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
|
|
17
14
|
#include <react/renderer/components/view/ViewProps.h>
|
|
15
|
+
#include <react/renderer/core/PropsParserContext.h>
|
|
16
|
+
#include <react/renderer/core/RawProps.h>
|
|
17
|
+
|
|
18
|
+
#include <string>
|
|
18
19
|
|
|
19
20
|
#include <string>
|
|
20
21
|
#include <memory>
|
|
@@ -42,15 +43,41 @@ namespace margelo::nitro::perpdepthbar::views {
|
|
|
42
43
|
const react::RawProps& rawProps);
|
|
43
44
|
|
|
44
45
|
public:
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
46
|
+
nitro::ReactProp<double> bidPercentage;
|
|
47
|
+
nitro::ReactProp<double> askPercentage;
|
|
48
|
+
nitro::ReactProp<std::string> longColor;
|
|
49
|
+
nitro::ReactProp<std::string> shortColor;
|
|
50
|
+
nitro::ReactProp<double> segmentHeight;
|
|
51
|
+
nitro::ReactProp<double> cornerRadius;
|
|
52
|
+
nitro::ReactProp<double> gap;
|
|
53
|
+
nitro::ReactProp<bool> reducedMotion;
|
|
54
|
+
nitro::ReactProp<std::optional<std::function<void(const std::shared_ptr<HybridPerpSideRatioSpec>& /* ref */)>>> hybridRef;
|
|
55
|
+
|
|
56
|
+
[[nodiscard]]
|
|
57
|
+
bool hasSameProps(const HybridPerpSideRatioProps& other) const noexcept {
|
|
58
|
+
return bidPercentage.hasSameValue(other.bidPercentage) &&
|
|
59
|
+
askPercentage.hasSameValue(other.askPercentage) &&
|
|
60
|
+
longColor.hasSameValue(other.longColor) &&
|
|
61
|
+
shortColor.hasSameValue(other.shortColor) &&
|
|
62
|
+
segmentHeight.hasSameValue(other.segmentHeight) &&
|
|
63
|
+
cornerRadius.hasSameValue(other.cornerRadius) &&
|
|
64
|
+
gap.hasSameValue(other.gap) &&
|
|
65
|
+
reducedMotion.hasSameValue(other.reducedMotion) &&
|
|
66
|
+
hybridRef.hasSameValue(other.hybridRef);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
[[nodiscard]]
|
|
70
|
+
bool hasAnyProvidedProps() const noexcept {
|
|
71
|
+
return bidPercentage.isProvided() ||
|
|
72
|
+
askPercentage.isProvided() ||
|
|
73
|
+
longColor.isProvided() ||
|
|
74
|
+
shortColor.isProvided() ||
|
|
75
|
+
segmentHeight.isProvided() ||
|
|
76
|
+
cornerRadius.isProvided() ||
|
|
77
|
+
gap.isProvided() ||
|
|
78
|
+
reducedMotion.isProvided() ||
|
|
79
|
+
hybridRef.isProvided();
|
|
80
|
+
}
|
|
54
81
|
|
|
55
82
|
private:
|
|
56
83
|
static bool filterObjectKeys(const std::string& propName);
|
|
@@ -59,32 +86,7 @@ namespace margelo::nitro::perpdepthbar::views {
|
|
|
59
86
|
/**
|
|
60
87
|
* State for the "PerpSideRatio" View.
|
|
61
88
|
*/
|
|
62
|
-
|
|
63
|
-
public:
|
|
64
|
-
HybridPerpSideRatioState() = default;
|
|
65
|
-
explicit HybridPerpSideRatioState(const std::shared_ptr<HybridPerpSideRatioProps>& props):
|
|
66
|
-
_props(props) {}
|
|
67
|
-
|
|
68
|
-
public:
|
|
69
|
-
[[nodiscard]]
|
|
70
|
-
const std::shared_ptr<HybridPerpSideRatioProps>& getProps() const {
|
|
71
|
-
return _props;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
public:
|
|
75
|
-
#ifdef ANDROID
|
|
76
|
-
HybridPerpSideRatioState(const HybridPerpSideRatioState& /* previousState */, folly::dynamic /* data */) {}
|
|
77
|
-
folly::dynamic getDynamic() const {
|
|
78
|
-
throw std::runtime_error("HybridPerpSideRatioState does not support folly!");
|
|
79
|
-
}
|
|
80
|
-
react::MapBuffer getMapBuffer() const {
|
|
81
|
-
throw std::runtime_error("HybridPerpSideRatioState does not support MapBuffer!");
|
|
82
|
-
};
|
|
83
|
-
#endif
|
|
84
|
-
|
|
85
|
-
private:
|
|
86
|
-
std::shared_ptr<HybridPerpSideRatioProps> _props;
|
|
87
|
-
};
|
|
89
|
+
using HybridPerpSideRatioState = nitro::ViewPropsHolderState<HybridPerpSideRatioProps>;
|
|
88
90
|
|
|
89
91
|
/**
|
|
90
92
|
* The Shadow Node for the "PerpSideRatio" View.
|
|
@@ -97,21 +99,7 @@ namespace margelo::nitro::perpdepthbar::views {
|
|
|
97
99
|
/**
|
|
98
100
|
* The Component Descriptor for the "PerpSideRatio" View.
|
|
99
101
|
*/
|
|
100
|
-
|
|
101
|
-
public:
|
|
102
|
-
explicit HybridPerpSideRatioComponentDescriptor(const react::ComponentDescriptorParameters& parameters);
|
|
103
|
-
|
|
104
|
-
public:
|
|
105
|
-
/**
|
|
106
|
-
* A faster path for cloning props - reuses the caching logic from `HybridPerpSideRatioProps`.
|
|
107
|
-
*/
|
|
108
|
-
std::shared_ptr<const react::Props> cloneProps(const react::PropsParserContext& context,
|
|
109
|
-
const std::shared_ptr<const react::Props>& props,
|
|
110
|
-
react::RawProps rawProps) const override;
|
|
111
|
-
#ifdef ANDROID
|
|
112
|
-
void adopt(react::ShadowNode& shadowNode) const override;
|
|
113
|
-
#endif
|
|
114
|
-
};
|
|
102
|
+
using HybridPerpSideRatioComponentDescriptor = nitro::ViewComponentDescriptor<HybridPerpSideRatioShadowNode>;
|
|
115
103
|
|
|
116
104
|
/* The actual view for "PerpSideRatio" needs to be implemented in platform-specific code. */
|
|
117
105
|
|
package/lib/nitrogen/nitrogen/generated/android/c++/views/JHybridPerpDepthBarsStateUpdater.cpp
CHANGED
|
@@ -15,109 +15,144 @@ namespace margelo::nitro::perpdepthbar::views {
|
|
|
15
15
|
using namespace facebook;
|
|
16
16
|
using ConcreteStateData = react::ConcreteState<HybridPerpDepthBarsState>;
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
std::shared_ptr<const HybridPerpDepthBarsProps> JHybridPerpDepthBarsStateUpdater::getPropsFromStateWrapper(
|
|
19
|
+
jni::alias_ref<JStateWrapper::javaobject> stateWrapper) {
|
|
20
|
+
if (stateWrapper.get() == nullptr) {
|
|
21
|
+
return nullptr;
|
|
22
|
+
}
|
|
23
23
|
// Get concrete StateWrapperImpl from passed StateWrapper interface object
|
|
24
|
-
jobject rawStateWrapper =
|
|
25
|
-
if (!
|
|
26
|
-
|
|
24
|
+
jobject rawStateWrapper = stateWrapper.get();
|
|
25
|
+
if (!stateWrapper->isInstanceOf(react::StateWrapperImpl::javaClassStatic())) [[unlikely]] {
|
|
26
|
+
throw std::runtime_error("StateWrapper is not a StateWrapperImpl");
|
|
27
|
+
}
|
|
28
|
+
auto stateWrapperImpl = jni::alias_ref<react::StateWrapperImpl::javaobject>{
|
|
29
|
+
static_cast<react::StateWrapperImpl::javaobject>(rawStateWrapper)
|
|
30
|
+
};
|
|
31
|
+
std::shared_ptr<const react::State> state = stateWrapperImpl->cthis()->getState();
|
|
32
|
+
if (state == nullptr) {
|
|
33
|
+
return nullptr;
|
|
27
34
|
}
|
|
28
|
-
auto stateWrapper = jni::alias_ref<react::StateWrapperImpl::javaobject>{
|
|
29
|
-
static_cast<react::StateWrapperImpl::javaobject>(rawStateWrapper)};
|
|
30
|
-
std::shared_ptr<const react::State> state = stateWrapper->cthis()->getState();
|
|
31
35
|
auto concreteState = std::static_pointer_cast<const ConcreteStateData>(state);
|
|
32
36
|
const HybridPerpDepthBarsState& data = concreteState->getData();
|
|
33
|
-
const std::shared_ptr<HybridPerpDepthBarsProps>& props = data.getProps();
|
|
37
|
+
const std::shared_ptr<const HybridPerpDepthBarsProps>& props = data.getProps();
|
|
34
38
|
if (props == nullptr) [[unlikely]] {
|
|
35
|
-
// Props aren't set yet!
|
|
36
39
|
throw std::runtime_error("HybridPerpDepthBarsState's data doesn't contain any props!");
|
|
37
40
|
}
|
|
41
|
+
return props;
|
|
42
|
+
}
|
|
38
43
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
if (props->rowMarginTop.isDirty) {
|
|
49
|
-
hybridView->setRowMarginTop(props->rowMarginTop.value);
|
|
50
|
-
props->rowMarginTop.isDirty = false;
|
|
51
|
-
}
|
|
52
|
-
if (props->barInset.isDirty) {
|
|
53
|
-
hybridView->setBarInset(props->barInset.value);
|
|
54
|
-
props->barInset.isDirty = false;
|
|
55
|
-
}
|
|
56
|
-
if (props->color.isDirty) {
|
|
57
|
-
hybridView->setColor(props->color.value);
|
|
58
|
-
props->color.isDirty = false;
|
|
59
|
-
}
|
|
60
|
-
if (props->origin.isDirty) {
|
|
61
|
-
hybridView->setOrigin(props->origin.value);
|
|
62
|
-
props->origin.isDirty = false;
|
|
63
|
-
}
|
|
64
|
-
if (props->reducedMotion.isDirty) {
|
|
65
|
-
hybridView->setReducedMotion(props->reducedMotion.value);
|
|
66
|
-
props->reducedMotion.isDirty = false;
|
|
67
|
-
}
|
|
68
|
-
if (props->epoch.isDirty) {
|
|
69
|
-
hybridView->setEpoch(props->epoch.value);
|
|
70
|
-
props->epoch.isDirty = false;
|
|
71
|
-
}
|
|
72
|
-
if (props->prices.isDirty) {
|
|
73
|
-
hybridView->setPrices(props->prices.value);
|
|
74
|
-
props->prices.isDirty = false;
|
|
75
|
-
}
|
|
76
|
-
if (props->sizes.isDirty) {
|
|
77
|
-
hybridView->setSizes(props->sizes.value);
|
|
78
|
-
props->sizes.isDirty = false;
|
|
79
|
-
}
|
|
80
|
-
if (props->priceColor.isDirty) {
|
|
81
|
-
hybridView->setPriceColor(props->priceColor.value);
|
|
82
|
-
props->priceColor.isDirty = false;
|
|
83
|
-
}
|
|
84
|
-
if (props->sizeColor.isDirty) {
|
|
85
|
-
hybridView->setSizeColor(props->sizeColor.value);
|
|
86
|
-
props->sizeColor.isDirty = false;
|
|
87
|
-
}
|
|
88
|
-
if (props->priceFontSize.isDirty) {
|
|
89
|
-
hybridView->setPriceFontSize(props->priceFontSize.value);
|
|
90
|
-
props->priceFontSize.isDirty = false;
|
|
91
|
-
}
|
|
92
|
-
if (props->sizeFontSize.isDirty) {
|
|
93
|
-
hybridView->setSizeFontSize(props->sizeFontSize.value);
|
|
94
|
-
props->sizeFontSize.isDirty = false;
|
|
95
|
-
}
|
|
96
|
-
if (props->textInset.isDirty) {
|
|
97
|
-
hybridView->setTextInset(props->textInset.value);
|
|
98
|
-
props->textInset.isDirty = false;
|
|
99
|
-
}
|
|
100
|
-
if (props->placeholderText.isDirty) {
|
|
101
|
-
hybridView->setPlaceholderText(props->placeholderText.value);
|
|
102
|
-
props->placeholderText.isDirty = false;
|
|
103
|
-
}
|
|
104
|
-
if (props->placeholderRows.isDirty) {
|
|
105
|
-
hybridView->setPlaceholderRows(props->placeholderRows.value);
|
|
106
|
-
props->placeholderRows.isDirty = false;
|
|
44
|
+
void JHybridPerpDepthBarsStateUpdater::updateViewProps(jni::alias_ref<jni::JClass> /* class */,
|
|
45
|
+
jni::alias_ref<JHybridPerpDepthBarsSpec::JavaPart> javaView,
|
|
46
|
+
jni::alias_ref<JStateWrapper::javaobject> newState,
|
|
47
|
+
jni::alias_ref<JStateWrapper::javaobject> oldState) {
|
|
48
|
+
std::shared_ptr<JHybridPerpDepthBarsSpec> hybridView = javaView->getJHybridPerpDepthBarsSpec();
|
|
49
|
+
std::shared_ptr<const HybridPerpDepthBarsProps> newProps = getPropsFromStateWrapper(newState);
|
|
50
|
+
std::shared_ptr<const HybridPerpDepthBarsProps> oldProps = getPropsFromStateWrapper(oldState);
|
|
51
|
+
if (newProps == nullptr) [[unlikely]] {
|
|
52
|
+
throw std::runtime_error("Current StateWrapper doesn't contain any props!");
|
|
107
53
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
54
|
+
|
|
55
|
+
// Update only props that differ from the previous State snapshot.
|
|
56
|
+
if (oldProps == nullptr
|
|
57
|
+
? newProps->percents.isProvided()
|
|
58
|
+
: !newProps->percents.hasSameValue(oldProps->percents)) {
|
|
59
|
+
hybridView->setPercents(newProps->percents.get());
|
|
60
|
+
}
|
|
61
|
+
if (oldProps == nullptr
|
|
62
|
+
? newProps->rowHeight.isProvided()
|
|
63
|
+
: !newProps->rowHeight.hasSameValue(oldProps->rowHeight)) {
|
|
64
|
+
hybridView->setRowHeight(newProps->rowHeight.get());
|
|
65
|
+
}
|
|
66
|
+
if (oldProps == nullptr
|
|
67
|
+
? newProps->rowMarginTop.isProvided()
|
|
68
|
+
: !newProps->rowMarginTop.hasSameValue(oldProps->rowMarginTop)) {
|
|
69
|
+
hybridView->setRowMarginTop(newProps->rowMarginTop.get());
|
|
70
|
+
}
|
|
71
|
+
if (oldProps == nullptr
|
|
72
|
+
? newProps->barInset.isProvided()
|
|
73
|
+
: !newProps->barInset.hasSameValue(oldProps->barInset)) {
|
|
74
|
+
hybridView->setBarInset(newProps->barInset.get());
|
|
75
|
+
}
|
|
76
|
+
if (oldProps == nullptr
|
|
77
|
+
? newProps->color.isProvided()
|
|
78
|
+
: !newProps->color.hasSameValue(oldProps->color)) {
|
|
79
|
+
hybridView->setColor(newProps->color.get());
|
|
80
|
+
}
|
|
81
|
+
if (oldProps == nullptr
|
|
82
|
+
? newProps->origin.isProvided()
|
|
83
|
+
: !newProps->origin.hasSameValue(oldProps->origin)) {
|
|
84
|
+
hybridView->setOrigin(newProps->origin.get());
|
|
85
|
+
}
|
|
86
|
+
if (oldProps == nullptr
|
|
87
|
+
? newProps->reducedMotion.isProvided()
|
|
88
|
+
: !newProps->reducedMotion.hasSameValue(oldProps->reducedMotion)) {
|
|
89
|
+
hybridView->setReducedMotion(newProps->reducedMotion.get());
|
|
90
|
+
}
|
|
91
|
+
if (oldProps == nullptr
|
|
92
|
+
? newProps->epoch.isProvided()
|
|
93
|
+
: !newProps->epoch.hasSameValue(oldProps->epoch)) {
|
|
94
|
+
hybridView->setEpoch(newProps->epoch.get());
|
|
95
|
+
}
|
|
96
|
+
if (oldProps == nullptr
|
|
97
|
+
? newProps->prices.isProvided()
|
|
98
|
+
: !newProps->prices.hasSameValue(oldProps->prices)) {
|
|
99
|
+
hybridView->setPrices(newProps->prices.get());
|
|
100
|
+
}
|
|
101
|
+
if (oldProps == nullptr
|
|
102
|
+
? newProps->sizes.isProvided()
|
|
103
|
+
: !newProps->sizes.hasSameValue(oldProps->sizes)) {
|
|
104
|
+
hybridView->setSizes(newProps->sizes.get());
|
|
105
|
+
}
|
|
106
|
+
if (oldProps == nullptr
|
|
107
|
+
? newProps->priceColor.isProvided()
|
|
108
|
+
: !newProps->priceColor.hasSameValue(oldProps->priceColor)) {
|
|
109
|
+
hybridView->setPriceColor(newProps->priceColor.get());
|
|
110
|
+
}
|
|
111
|
+
if (oldProps == nullptr
|
|
112
|
+
? newProps->sizeColor.isProvided()
|
|
113
|
+
: !newProps->sizeColor.hasSameValue(oldProps->sizeColor)) {
|
|
114
|
+
hybridView->setSizeColor(newProps->sizeColor.get());
|
|
115
|
+
}
|
|
116
|
+
if (oldProps == nullptr
|
|
117
|
+
? newProps->priceFontSize.isProvided()
|
|
118
|
+
: !newProps->priceFontSize.hasSameValue(oldProps->priceFontSize)) {
|
|
119
|
+
hybridView->setPriceFontSize(newProps->priceFontSize.get());
|
|
120
|
+
}
|
|
121
|
+
if (oldProps == nullptr
|
|
122
|
+
? newProps->sizeFontSize.isProvided()
|
|
123
|
+
: !newProps->sizeFontSize.hasSameValue(oldProps->sizeFontSize)) {
|
|
124
|
+
hybridView->setSizeFontSize(newProps->sizeFontSize.get());
|
|
125
|
+
}
|
|
126
|
+
if (oldProps == nullptr
|
|
127
|
+
? newProps->textInset.isProvided()
|
|
128
|
+
: !newProps->textInset.hasSameValue(oldProps->textInset)) {
|
|
129
|
+
hybridView->setTextInset(newProps->textInset.get());
|
|
130
|
+
}
|
|
131
|
+
if (oldProps == nullptr
|
|
132
|
+
? newProps->placeholderText.isProvided()
|
|
133
|
+
: !newProps->placeholderText.hasSameValue(oldProps->placeholderText)) {
|
|
134
|
+
hybridView->setPlaceholderText(newProps->placeholderText.get());
|
|
135
|
+
}
|
|
136
|
+
if (oldProps == nullptr
|
|
137
|
+
? newProps->placeholderRows.isProvided()
|
|
138
|
+
: !newProps->placeholderRows.hasSameValue(oldProps->placeholderRows)) {
|
|
139
|
+
hybridView->setPlaceholderRows(newProps->placeholderRows.get());
|
|
140
|
+
}
|
|
141
|
+
if (oldProps == nullptr
|
|
142
|
+
? newProps->onRowPress.isProvided()
|
|
143
|
+
: !newProps->onRowPress.hasSameValue(oldProps->onRowPress)) {
|
|
144
|
+
hybridView->setOnRowPress(newProps->onRowPress.get());
|
|
111
145
|
}
|
|
112
146
|
|
|
113
147
|
// Update hybridRef if it changed
|
|
114
|
-
if (
|
|
148
|
+
if (oldProps == nullptr
|
|
149
|
+
? newProps->hybridRef.isProvided()
|
|
150
|
+
: !newProps->hybridRef.hasSameValue(oldProps->hybridRef)) {
|
|
115
151
|
// hybridRef changed - call it with new this
|
|
116
|
-
const auto& maybeFunc =
|
|
152
|
+
const auto& maybeFunc = newProps->hybridRef.get();
|
|
117
153
|
if (maybeFunc.has_value()) {
|
|
118
154
|
maybeFunc.value()(hybridView);
|
|
119
155
|
}
|
|
120
|
-
props->hybridRef.isDirty = false;
|
|
121
156
|
}
|
|
122
157
|
}
|
|
123
158
|
|
package/lib/nitrogen/nitrogen/generated/android/c++/views/JHybridPerpDepthBarsStateUpdater.hpp
CHANGED
|
@@ -31,7 +31,12 @@ public:
|
|
|
31
31
|
public:
|
|
32
32
|
static void updateViewProps(jni::alias_ref<jni::JClass> /* class */,
|
|
33
33
|
jni::alias_ref<JHybridPerpDepthBarsSpec::JavaPart> view,
|
|
34
|
-
jni::alias_ref<JStateWrapper::javaobject>
|
|
34
|
+
jni::alias_ref<JStateWrapper::javaobject> newState,
|
|
35
|
+
jni::alias_ref<JStateWrapper::javaobject> oldState);
|
|
36
|
+
|
|
37
|
+
private:
|
|
38
|
+
static std::shared_ptr<const HybridPerpDepthBarsProps> getPropsFromStateWrapper(
|
|
39
|
+
jni::alias_ref<JStateWrapper::javaobject> stateWrapper);
|
|
35
40
|
|
|
36
41
|
public:
|
|
37
42
|
static void registerNatives() {
|
package/lib/nitrogen/nitrogen/generated/android/c++/views/JHybridPerpSideRatioStateUpdater.cpp
CHANGED
|
@@ -15,69 +15,94 @@ namespace margelo::nitro::perpdepthbar::views {
|
|
|
15
15
|
using namespace facebook;
|
|
16
16
|
using ConcreteStateData = react::ConcreteState<HybridPerpSideRatioState>;
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
std::shared_ptr<const HybridPerpSideRatioProps> JHybridPerpSideRatioStateUpdater::getPropsFromStateWrapper(
|
|
19
|
+
jni::alias_ref<JStateWrapper::javaobject> stateWrapper) {
|
|
20
|
+
if (stateWrapper.get() == nullptr) {
|
|
21
|
+
return nullptr;
|
|
22
|
+
}
|
|
23
23
|
// Get concrete StateWrapperImpl from passed StateWrapper interface object
|
|
24
|
-
jobject rawStateWrapper =
|
|
25
|
-
if (!
|
|
26
|
-
|
|
24
|
+
jobject rawStateWrapper = stateWrapper.get();
|
|
25
|
+
if (!stateWrapper->isInstanceOf(react::StateWrapperImpl::javaClassStatic())) [[unlikely]] {
|
|
26
|
+
throw std::runtime_error("StateWrapper is not a StateWrapperImpl");
|
|
27
|
+
}
|
|
28
|
+
auto stateWrapperImpl = jni::alias_ref<react::StateWrapperImpl::javaobject>{
|
|
29
|
+
static_cast<react::StateWrapperImpl::javaobject>(rawStateWrapper)
|
|
30
|
+
};
|
|
31
|
+
std::shared_ptr<const react::State> state = stateWrapperImpl->cthis()->getState();
|
|
32
|
+
if (state == nullptr) {
|
|
33
|
+
return nullptr;
|
|
27
34
|
}
|
|
28
|
-
auto stateWrapper = jni::alias_ref<react::StateWrapperImpl::javaobject>{
|
|
29
|
-
static_cast<react::StateWrapperImpl::javaobject>(rawStateWrapper)};
|
|
30
|
-
std::shared_ptr<const react::State> state = stateWrapper->cthis()->getState();
|
|
31
35
|
auto concreteState = std::static_pointer_cast<const ConcreteStateData>(state);
|
|
32
36
|
const HybridPerpSideRatioState& data = concreteState->getData();
|
|
33
|
-
const std::shared_ptr<HybridPerpSideRatioProps>& props = data.getProps();
|
|
37
|
+
const std::shared_ptr<const HybridPerpSideRatioProps>& props = data.getProps();
|
|
34
38
|
if (props == nullptr) [[unlikely]] {
|
|
35
|
-
// Props aren't set yet!
|
|
36
39
|
throw std::runtime_error("HybridPerpSideRatioState's data doesn't contain any props!");
|
|
37
40
|
}
|
|
41
|
+
return props;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
void JHybridPerpSideRatioStateUpdater::updateViewProps(jni::alias_ref<jni::JClass> /* class */,
|
|
45
|
+
jni::alias_ref<JHybridPerpSideRatioSpec::JavaPart> javaView,
|
|
46
|
+
jni::alias_ref<JStateWrapper::javaobject> newState,
|
|
47
|
+
jni::alias_ref<JStateWrapper::javaobject> oldState) {
|
|
48
|
+
std::shared_ptr<JHybridPerpSideRatioSpec> hybridView = javaView->getJHybridPerpSideRatioSpec();
|
|
49
|
+
std::shared_ptr<const HybridPerpSideRatioProps> newProps = getPropsFromStateWrapper(newState);
|
|
50
|
+
std::shared_ptr<const HybridPerpSideRatioProps> oldProps = getPropsFromStateWrapper(oldState);
|
|
51
|
+
if (newProps == nullptr) [[unlikely]] {
|
|
52
|
+
throw std::runtime_error("Current StateWrapper doesn't contain any props!");
|
|
53
|
+
}
|
|
38
54
|
|
|
39
|
-
// Update
|
|
40
|
-
if (
|
|
41
|
-
|
|
42
|
-
|
|
55
|
+
// Update only props that differ from the previous State snapshot.
|
|
56
|
+
if (oldProps == nullptr
|
|
57
|
+
? newProps->bidPercentage.isProvided()
|
|
58
|
+
: !newProps->bidPercentage.hasSameValue(oldProps->bidPercentage)) {
|
|
59
|
+
hybridView->setBidPercentage(newProps->bidPercentage.get());
|
|
43
60
|
}
|
|
44
|
-
if (
|
|
45
|
-
|
|
46
|
-
|
|
61
|
+
if (oldProps == nullptr
|
|
62
|
+
? newProps->askPercentage.isProvided()
|
|
63
|
+
: !newProps->askPercentage.hasSameValue(oldProps->askPercentage)) {
|
|
64
|
+
hybridView->setAskPercentage(newProps->askPercentage.get());
|
|
47
65
|
}
|
|
48
|
-
if (
|
|
49
|
-
|
|
50
|
-
|
|
66
|
+
if (oldProps == nullptr
|
|
67
|
+
? newProps->longColor.isProvided()
|
|
68
|
+
: !newProps->longColor.hasSameValue(oldProps->longColor)) {
|
|
69
|
+
hybridView->setLongColor(newProps->longColor.get());
|
|
51
70
|
}
|
|
52
|
-
if (
|
|
53
|
-
|
|
54
|
-
|
|
71
|
+
if (oldProps == nullptr
|
|
72
|
+
? newProps->shortColor.isProvided()
|
|
73
|
+
: !newProps->shortColor.hasSameValue(oldProps->shortColor)) {
|
|
74
|
+
hybridView->setShortColor(newProps->shortColor.get());
|
|
55
75
|
}
|
|
56
|
-
if (
|
|
57
|
-
|
|
58
|
-
|
|
76
|
+
if (oldProps == nullptr
|
|
77
|
+
? newProps->segmentHeight.isProvided()
|
|
78
|
+
: !newProps->segmentHeight.hasSameValue(oldProps->segmentHeight)) {
|
|
79
|
+
hybridView->setSegmentHeight(newProps->segmentHeight.get());
|
|
59
80
|
}
|
|
60
|
-
if (
|
|
61
|
-
|
|
62
|
-
|
|
81
|
+
if (oldProps == nullptr
|
|
82
|
+
? newProps->cornerRadius.isProvided()
|
|
83
|
+
: !newProps->cornerRadius.hasSameValue(oldProps->cornerRadius)) {
|
|
84
|
+
hybridView->setCornerRadius(newProps->cornerRadius.get());
|
|
63
85
|
}
|
|
64
|
-
if (
|
|
65
|
-
|
|
66
|
-
|
|
86
|
+
if (oldProps == nullptr
|
|
87
|
+
? newProps->gap.isProvided()
|
|
88
|
+
: !newProps->gap.hasSameValue(oldProps->gap)) {
|
|
89
|
+
hybridView->setGap(newProps->gap.get());
|
|
67
90
|
}
|
|
68
|
-
if (
|
|
69
|
-
|
|
70
|
-
|
|
91
|
+
if (oldProps == nullptr
|
|
92
|
+
? newProps->reducedMotion.isProvided()
|
|
93
|
+
: !newProps->reducedMotion.hasSameValue(oldProps->reducedMotion)) {
|
|
94
|
+
hybridView->setReducedMotion(newProps->reducedMotion.get());
|
|
71
95
|
}
|
|
72
96
|
|
|
73
97
|
// Update hybridRef if it changed
|
|
74
|
-
if (
|
|
98
|
+
if (oldProps == nullptr
|
|
99
|
+
? newProps->hybridRef.isProvided()
|
|
100
|
+
: !newProps->hybridRef.hasSameValue(oldProps->hybridRef)) {
|
|
75
101
|
// hybridRef changed - call it with new this
|
|
76
|
-
const auto& maybeFunc =
|
|
102
|
+
const auto& maybeFunc = newProps->hybridRef.get();
|
|
77
103
|
if (maybeFunc.has_value()) {
|
|
78
104
|
maybeFunc.value()(hybridView);
|
|
79
105
|
}
|
|
80
|
-
props->hybridRef.isDirty = false;
|
|
81
106
|
}
|
|
82
107
|
}
|
|
83
108
|
|
package/lib/nitrogen/nitrogen/generated/android/c++/views/JHybridPerpSideRatioStateUpdater.hpp
CHANGED
|
@@ -31,7 +31,12 @@ public:
|
|
|
31
31
|
public:
|
|
32
32
|
static void updateViewProps(jni::alias_ref<jni::JClass> /* class */,
|
|
33
33
|
jni::alias_ref<JHybridPerpSideRatioSpec::JavaPart> view,
|
|
34
|
-
jni::alias_ref<JStateWrapper::javaobject>
|
|
34
|
+
jni::alias_ref<JStateWrapper::javaobject> newState,
|
|
35
|
+
jni::alias_ref<JStateWrapper::javaobject> oldState);
|
|
36
|
+
|
|
37
|
+
private:
|
|
38
|
+
static std::shared_ptr<const HybridPerpSideRatioProps> getPropsFromStateWrapper(
|
|
39
|
+
jni::alias_ref<JStateWrapper::javaobject> stateWrapper);
|
|
35
40
|
|
|
36
41
|
public:
|
|
37
42
|
static void registerNatives() {
|
|
@@ -20,6 +20,14 @@ import com.margelo.nitro.perpdepthbar.*
|
|
|
20
20
|
* Represents the React Native `ViewManager` for the "PerpDepthBars" Nitro HybridView.
|
|
21
21
|
*/
|
|
22
22
|
public class HybridPerpDepthBarsManager: SimpleViewManager<View>() {
|
|
23
|
+
/**
|
|
24
|
+
* Represents the View and its last state snapshot (mutable)
|
|
25
|
+
*/
|
|
26
|
+
private class HybridViewHolder(
|
|
27
|
+
val hybridView: HybridPerpDepthBars,
|
|
28
|
+
var lastState: StateWrapper? = null,
|
|
29
|
+
)
|
|
30
|
+
|
|
23
31
|
init {
|
|
24
32
|
if (RecyclableView::class.java.isAssignableFrom(HybridPerpDepthBars::class.java)) {
|
|
25
33
|
// Enable view recycling
|
|
@@ -34,33 +42,41 @@ public class HybridPerpDepthBarsManager: SimpleViewManager<View>() {
|
|
|
34
42
|
override fun createViewInstance(reactContext: ThemedReactContext): View {
|
|
35
43
|
val hybridView = HybridPerpDepthBars(reactContext)
|
|
36
44
|
val view = hybridView.view
|
|
37
|
-
view.setTag(associated_hybrid_view_tag, hybridView)
|
|
45
|
+
view.setTag(associated_hybrid_view_tag, HybridViewHolder(hybridView))
|
|
38
46
|
return view
|
|
39
47
|
}
|
|
40
48
|
|
|
41
49
|
override fun updateState(view: View, props: ReactStylesDiffMap, stateWrapper: StateWrapper): Any? {
|
|
42
|
-
val
|
|
50
|
+
val holder = getHybridViewHolder(view)
|
|
43
51
|
?: throw Error("Couldn't find view $view in local views table!")
|
|
52
|
+
val hybridView = holder.hybridView
|
|
53
|
+
val oldState = holder.lastState
|
|
54
|
+
val newState = stateWrapper
|
|
44
55
|
|
|
45
56
|
// 1. Update each prop individually
|
|
46
57
|
hybridView.beforeUpdate()
|
|
47
|
-
HybridPerpDepthBarsStateUpdater.updateViewProps(hybridView,
|
|
58
|
+
HybridPerpDepthBarsStateUpdater.updateViewProps(hybridView, newState, oldState)
|
|
48
59
|
hybridView.afterUpdate()
|
|
60
|
+
holder.lastState = newState
|
|
49
61
|
|
|
50
62
|
// 2. Continue in base View props
|
|
51
|
-
return super.updateState(view, props,
|
|
63
|
+
return super.updateState(view, props, newState)
|
|
52
64
|
}
|
|
53
65
|
|
|
54
66
|
override fun onDropViewInstance(view: View) {
|
|
55
|
-
val
|
|
56
|
-
|
|
67
|
+
val holder = getHybridViewHolder(view)
|
|
68
|
+
holder?.lastState = null
|
|
69
|
+
holder?.hybridView?.onDropView()
|
|
57
70
|
return super.onDropViewInstance(view)
|
|
58
71
|
}
|
|
59
72
|
|
|
60
73
|
protected override fun prepareToRecycleView(reactContext: ThemedReactContext, view: View): View? {
|
|
61
|
-
super.prepareToRecycleView(reactContext, view)
|
|
62
|
-
|
|
74
|
+
val preparedView = super.prepareToRecycleView(reactContext, view)
|
|
75
|
+
?: return null
|
|
76
|
+
val holder = getHybridViewHolder(preparedView)
|
|
63
77
|
?: return null
|
|
78
|
+
val hybridView = holder.hybridView
|
|
79
|
+
holder.lastState = null
|
|
64
80
|
|
|
65
81
|
@Suppress("USELESS_IS_CHECK")
|
|
66
82
|
if (hybridView is RecyclableView) {
|
|
@@ -74,7 +90,7 @@ public class HybridPerpDepthBarsManager: SimpleViewManager<View>() {
|
|
|
74
90
|
}
|
|
75
91
|
}
|
|
76
92
|
|
|
77
|
-
private fun
|
|
78
|
-
return view.getTag(associated_hybrid_view_tag) as?
|
|
93
|
+
private fun getHybridViewHolder(view: View): HybridViewHolder? {
|
|
94
|
+
return view.getTag(associated_hybrid_view_tag) as? HybridViewHolder
|
|
79
95
|
}
|
|
80
96
|
}
|
|
@@ -14,10 +14,10 @@ internal class HybridPerpDepthBarsStateUpdater {
|
|
|
14
14
|
companion object {
|
|
15
15
|
/**
|
|
16
16
|
* Updates the props for [view] through C++.
|
|
17
|
-
* The [
|
|
17
|
+
* The [newState] prop is expected to contain [view]'s props as wrapped Fabric state.
|
|
18
18
|
*/
|
|
19
19
|
@Suppress("KotlinJniMissingFunction")
|
|
20
20
|
@JvmStatic
|
|
21
|
-
external fun updateViewProps(view: HybridPerpDepthBarsSpec,
|
|
21
|
+
external fun updateViewProps(view: HybridPerpDepthBarsSpec, newState: StateWrapper, oldState: StateWrapper?)
|
|
22
22
|
}
|
|
23
23
|
}
|