diff --git a/apps/example/__tests__/nitro.views.harness.tsx b/apps/example/__tests__/nitro.views.harness.tsx index 4de631acf..d9ae09dcd 100644 --- a/apps/example/__tests__/nitro.views.harness.tsx +++ b/apps/example/__tests__/nitro.views.harness.tsx @@ -157,6 +157,8 @@ function expectRed(actualCoverage: PixelCoverage): void { const INITIAL_SIZE = { width: 80, height: 60 } const RESIZED_SIZE = { width: 160, height: 120 } +const INITIAL_INT64_VALUE = 9_007_199_254_740_993n +const UPDATED_INT64_VALUE = -9_007_199_254_740_993n const RENDER_TIMEOUT = 4_000 const SUPPORTS_NATIVE_VIEW_RECYCLING = Platform.OS === 'ios' || Number(Platform.Version) >= 28 @@ -195,6 +197,7 @@ describe('TestView', () => { hybridRef={callback((view) => viewRef.resolve(view))} isBlue={true} hasBeenCalled={false} + int64Value={INITIAL_INT64_VALUE} colorScheme="dark" someCallback={callback(onSomeCallback)} onLayout={({ nativeEvent }) => layout.resolve(nativeEvent.layout)} @@ -208,6 +211,7 @@ describe('TestView', () => { expect(reportedLayout.height).toBeCloseTo(INITIAL_SIZE.height, 0) expect(mountedView.isBlue).toBe(true) expect(mountedView.hasBeenCalled).toBe(false) + expect(mountedView.int64Value).toBe(INITIAL_INT64_VALUE) expect(mountedView.colorScheme).toBe('dark') expect(mountedView.getOnDropViewCount()).toBe(0) expect(HybridTestObjectCpp.getIsViewBlue(mountedView)).toBe(true) @@ -234,6 +238,7 @@ describe('TestView', () => { hybridRef={callback((view) => initialRef.resolve(view))} isBlue={true} hasBeenCalled={false} + int64Value={INITIAL_INT64_VALUE} colorScheme="dark" someCallback={callback(initialCallback)} />, @@ -241,6 +246,7 @@ describe('TestView', () => { ) const firstView = await initialRef.promise + expect(firstView.int64Value).toBe(INITIAL_INT64_VALUE) const blueCapture = await captureView('test-view-updates') expectRenderedSize(blueCapture.size, INITIAL_SIZE) expectBlue(blueCapture.pixelCoverage) @@ -260,6 +266,7 @@ describe('TestView', () => { hybridRef={updatedHybridRef} isBlue={false} hasBeenCalled={true} + int64Value={UPDATED_INT64_VALUE} colorScheme="light" someCallback={updatedSomeCallback} /> @@ -269,6 +276,7 @@ describe('TestView', () => { expect(updatedView.equals(firstView)).toBe(true) expect(updatedView.isBlue).toBe(false) expect(updatedView.hasBeenCalled).toBe(true) + expect(updatedView.int64Value).toBe(UPDATED_INT64_VALUE) expect(updatedView.colorScheme).toBe('light') expect(updatedView.getOnDropViewCount()).toBe(0) expect(HybridTestObjectCpp.getIsViewBlue(updatedView)).toBe(false) @@ -291,6 +299,7 @@ describe('TestView', () => { hybridRef={updatedHybridRef} isBlue={false} hasBeenCalled={true} + int64Value={UPDATED_INT64_VALUE} colorScheme="light" someCallback={updatedSomeCallback} onLayout={({ nativeEvent }) => @@ -304,6 +313,7 @@ describe('TestView', () => { expect(reportedResizedLayout.height).toBeCloseTo(RESIZED_SIZE.height, 0) expect(firstView.isBlue).toBe(false) expect(firstView.hasBeenCalled).toBe(true) + expect(firstView.int64Value).toBe(UPDATED_INT64_VALUE) expect(firstView.colorScheme).toBe('light') const resizedCapture = await captureView('test-view-updates') @@ -324,6 +334,7 @@ describe('TestView', () => { hybridRef={stableHybridRef} isBlue={false} hasBeenCalled={false} + int64Value={0n} colorScheme="dark" someCallback={stableSomeCallback} />, @@ -346,6 +357,7 @@ describe('TestView', () => { )} isBlue={true} hasBeenCalled={false} + int64Value={0n} colorScheme="dark" someCallback={stableSomeCallback} /> @@ -371,6 +383,7 @@ describe('TestView', () => { hybridRef={stableHybridRef} isBlue={false} hasBeenCalled={false} + int64Value={0n} colorScheme="dark" someCallback={stableSomeCallback} nativeDefaultValue={1} @@ -392,6 +405,7 @@ describe('TestView', () => { )} isBlue={false} hasBeenCalled={false} + int64Value={0n} colorScheme="dark" someCallback={stableSomeCallback} nativeDefaultValue={2} @@ -416,6 +430,7 @@ describe('TestView', () => { hybridRef={isBlueUpdatedHybridRef} isBlue={true} hasBeenCalled={false} + int64Value={0n} colorScheme="dark" someCallback={stableSomeCallback} nativeDefaultValue={2} @@ -436,6 +451,7 @@ describe('TestView', () => { hybridRef={isBlueUpdatedHybridRef} isBlue={true} hasBeenCalled={false} + int64Value={0n} colorScheme="dark" someCallback={stableSomeCallback} nativeDefaultValue={2} @@ -461,6 +477,7 @@ describe('TestView', () => { hybridRef={callback((view) => firstRef.resolve(view))} isBlue={true} hasBeenCalled={false} + int64Value={0n} colorScheme="dark" someCallback={callback(fn())} />, @@ -488,6 +505,7 @@ describe('TestView', () => { hybridRef={callback((view) => secondRef.resolve(view))} isBlue={false} hasBeenCalled={true} + int64Value={0n} colorScheme="light" someCallback={callback(fn())} />, diff --git a/apps/example/src/screens/ViewScreen.tsx b/apps/example/src/screens/ViewScreen.tsx index c17b84864..c20576874 100644 --- a/apps/example/src/screens/ViewScreen.tsx +++ b/apps/example/src/screens/ViewScreen.tsx @@ -38,6 +38,7 @@ export function ViewScreenImpl() { someCallback={callback(() => console.log(`Callback called!`))} colorScheme="dark" hasBeenCalled={false} + int64Value={0n} onTouchEnd={() => { console.log(`Touched View #${i}!`) }} diff --git a/packages/react-native-nitro-test/android/src/main/java/com/margelo/nitro/test/HybridTestView.kt b/packages/react-native-nitro-test/android/src/main/java/com/margelo/nitro/test/HybridTestView.kt index e3f1f6e2a..9f88d1110 100644 --- a/packages/react-native-nitro-test/android/src/main/java/com/margelo/nitro/test/HybridTestView.kt +++ b/packages/react-native-nitro-test/android/src/main/java/com/margelo/nitro/test/HybridTestView.kt @@ -27,6 +27,7 @@ class HybridTestView( view.setBackgroundColor(color) } override var hasBeenCalled: Boolean = false + override var int64Value: Long = 0L override var colorScheme: ColorScheme = ColorScheme.LIGHT override var someCallback: () -> Unit = {} override var nativeDefaultValue: Double? = 42.0 diff --git a/packages/react-native-nitro-test/ios/HybridTestView.swift b/packages/react-native-nitro-test/ios/HybridTestView.swift index 56ec14ebb..f8a2e84b7 100644 --- a/packages/react-native-nitro-test/ios/HybridTestView.swift +++ b/packages/react-native-nitro-test/ios/HybridTestView.swift @@ -24,6 +24,7 @@ class HybridTestView: HybridTestViewSpec { } } var hasBeenCalled: Bool = false + var int64Value: Int64 = 0 var colorScheme: ColorScheme = .light var someCallback: () -> Void = {} var nativeDefaultValue: Double? = 42 { diff --git a/packages/react-native-nitro-test/nitrogen/generated/android/c++/JHybridTestViewSpec.cpp b/packages/react-native-nitro-test/nitrogen/generated/android/c++/JHybridTestViewSpec.cpp index e80a08d8b..349ffac39 100644 --- a/packages/react-native-nitro-test/nitrogen/generated/android/c++/JHybridTestViewSpec.cpp +++ b/packages/react-native-nitro-test/nitrogen/generated/android/c++/JHybridTestViewSpec.cpp @@ -65,6 +65,15 @@ namespace margelo::nitro::test { static const auto method = _javaPart->javaClassStatic()->getMethod("setHasBeenCalled"); method(_javaPart, hasBeenCalled); } + int64_t JHybridTestViewSpec::getInt64Value() { + static const auto method = _javaPart->javaClassStatic()->getMethod("getInt64Value"); + auto __result = method(_javaPart); + return __result; + } + void JHybridTestViewSpec::setInt64Value(int64_t int64Value) { + static const auto method = _javaPart->javaClassStatic()->getMethod("setInt64Value"); + method(_javaPart, int64Value); + } ColorScheme JHybridTestViewSpec::getColorScheme() { static const auto method = _javaPart->javaClassStatic()->getMethod()>("getColorScheme"); auto __result = method(_javaPart); diff --git a/packages/react-native-nitro-test/nitrogen/generated/android/c++/JHybridTestViewSpec.hpp b/packages/react-native-nitro-test/nitrogen/generated/android/c++/JHybridTestViewSpec.hpp index 9e88cf704..90e5c4de5 100644 --- a/packages/react-native-nitro-test/nitrogen/generated/android/c++/JHybridTestViewSpec.hpp +++ b/packages/react-native-nitro-test/nitrogen/generated/android/c++/JHybridTestViewSpec.hpp @@ -54,6 +54,8 @@ namespace margelo::nitro::test { void setIsBlue(bool isBlue) override; bool getHasBeenCalled() override; void setHasBeenCalled(bool hasBeenCalled) override; + int64_t getInt64Value() override; + void setInt64Value(int64_t int64Value) override; ColorScheme getColorScheme() override; void setColorScheme(ColorScheme colorScheme) override; std::function getSomeCallback() override; diff --git a/packages/react-native-nitro-test/nitrogen/generated/android/c++/views/JHybridTestViewStateUpdater.cpp b/packages/react-native-nitro-test/nitrogen/generated/android/c++/views/JHybridTestViewStateUpdater.cpp index 25fc8c722..6adbc64e7 100644 --- a/packages/react-native-nitro-test/nitrogen/generated/android/c++/views/JHybridTestViewStateUpdater.cpp +++ b/packages/react-native-nitro-test/nitrogen/generated/android/c++/views/JHybridTestViewStateUpdater.cpp @@ -63,6 +63,11 @@ void JHybridTestViewStateUpdater::updateViewProps(jni::alias_ref /* : !newProps->hasBeenCalled.hasSameValue(oldProps->hasBeenCalled)) { hybridView->setHasBeenCalled(newProps->hasBeenCalled.get()); } + if (oldProps == nullptr + ? newProps->int64Value.isProvided() + : !newProps->int64Value.hasSameValue(oldProps->int64Value)) { + hybridView->setInt64Value(newProps->int64Value.get()); + } if (oldProps == nullptr ? newProps->colorScheme.isProvided() : !newProps->colorScheme.hasSameValue(oldProps->colorScheme)) { diff --git a/packages/react-native-nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridTestViewSpec.kt b/packages/react-native-nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridTestViewSpec.kt index 6ad82b276..235857324 100644 --- a/packages/react-native-nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridTestViewSpec.kt +++ b/packages/react-native-nitro-test/nitrogen/generated/android/kotlin/com/margelo/nitro/test/HybridTestViewSpec.kt @@ -39,6 +39,12 @@ abstract class HybridTestViewSpec: HybridView() { @set:Keep abstract var hasBeenCalled: Boolean + @get:DoNotStrip + @get:Keep + @set:DoNotStrip + @set:Keep + abstract var int64Value: Long + @get:DoNotStrip @get:Keep @set:DoNotStrip diff --git a/packages/react-native-nitro-test/nitrogen/generated/ios/c++/HybridTestViewSpecSwift.hpp b/packages/react-native-nitro-test/nitrogen/generated/ios/c++/HybridTestViewSpecSwift.hpp index d2aa02b7b..d29f7f060 100644 --- a/packages/react-native-nitro-test/nitrogen/generated/ios/c++/HybridTestViewSpecSwift.hpp +++ b/packages/react-native-nitro-test/nitrogen/generated/ios/c++/HybridTestViewSpecSwift.hpp @@ -77,6 +77,12 @@ namespace margelo::nitro::test { inline void setHasBeenCalled(bool hasBeenCalled) noexcept override { _swiftPart.setHasBeenCalled(std::forward(hasBeenCalled)); } + inline int64_t getInt64Value() noexcept override { + return _swiftPart.getInt64Value(); + } + inline void setInt64Value(int64_t int64Value) noexcept override { + _swiftPart.setInt64Value(std::forward(int64Value)); + } inline ColorScheme getColorScheme() noexcept override { auto __result = _swiftPart.getColorScheme(); return static_cast(__result); diff --git a/packages/react-native-nitro-test/nitrogen/generated/ios/c++/views/HybridTestViewComponent.mm b/packages/react-native-nitro-test/nitrogen/generated/ios/c++/views/HybridTestViewComponent.mm index dcc24aaab..fbd2444dc 100644 --- a/packages/react-native-nitro-test/nitrogen/generated/ios/c++/views/HybridTestViewComponent.mm +++ b/packages/react-native-nitro-test/nitrogen/generated/ios/c++/views/HybridTestViewComponent.mm @@ -110,6 +110,12 @@ - (void) updateProps:(const std::shared_ptr&)props : !newViewProps.hasBeenCalled.hasSameValue(oldViewProps->hasBeenCalled)) { swiftPart.setHasBeenCalled(newViewProps.hasBeenCalled.get()); } + // int64Value: int64 + if (oldViewProps == nullptr + ? newViewProps.int64Value.isProvided() + : !newViewProps.int64Value.hasSameValue(oldViewProps->int64Value)) { + swiftPart.setInt64Value(newViewProps.int64Value.get()); + } // colorScheme: enum if (oldViewProps == nullptr ? newViewProps.colorScheme.isProvided() diff --git a/packages/react-native-nitro-test/nitrogen/generated/ios/swift/HybridTestViewSpec.swift b/packages/react-native-nitro-test/nitrogen/generated/ios/swift/HybridTestViewSpec.swift index 3c47050d4..0fd410e2b 100644 --- a/packages/react-native-nitro-test/nitrogen/generated/ios/swift/HybridTestViewSpec.swift +++ b/packages/react-native-nitro-test/nitrogen/generated/ios/swift/HybridTestViewSpec.swift @@ -12,6 +12,7 @@ public protocol HybridTestViewSpec_protocol: HybridObject, HybridView { // Properties var isBlue: Bool { get set } var hasBeenCalled: Bool { get set } + var int64Value: Int64 { get set } var colorScheme: ColorScheme { get set } var someCallback: () -> Void { get set } var nativeDefaultValue: Double? { get set } diff --git a/packages/react-native-nitro-test/nitrogen/generated/ios/swift/HybridTestViewSpec_cxx.swift b/packages/react-native-nitro-test/nitrogen/generated/ios/swift/HybridTestViewSpec_cxx.swift index f914e8317..2dc2b215d 100644 --- a/packages/react-native-nitro-test/nitrogen/generated/ios/swift/HybridTestViewSpec_cxx.swift +++ b/packages/react-native-nitro-test/nitrogen/generated/ios/swift/HybridTestViewSpec_cxx.swift @@ -143,6 +143,17 @@ open class HybridTestViewSpec_cxx { } } + public final var int64Value: Int64 { + @inline(__always) + get { + return self.__implementation.int64Value + } + @inline(__always) + set { + self.__implementation.int64Value = newValue + } + } + public final var colorScheme: Int32 { @inline(__always) get { diff --git a/packages/react-native-nitro-test/nitrogen/generated/shared/c++/HybridTestViewSpec.cpp b/packages/react-native-nitro-test/nitrogen/generated/shared/c++/HybridTestViewSpec.cpp index 02e5d36b2..bc71df0ef 100644 --- a/packages/react-native-nitro-test/nitrogen/generated/shared/c++/HybridTestViewSpec.cpp +++ b/packages/react-native-nitro-test/nitrogen/generated/shared/c++/HybridTestViewSpec.cpp @@ -18,6 +18,8 @@ namespace margelo::nitro::test { prototype.registerHybridSetter("isBlue", &HybridTestViewSpec::setIsBlue); prototype.registerHybridGetter("hasBeenCalled", &HybridTestViewSpec::getHasBeenCalled); prototype.registerHybridSetter("hasBeenCalled", &HybridTestViewSpec::setHasBeenCalled); + prototype.registerHybridGetter("int64Value", &HybridTestViewSpec::getInt64Value); + prototype.registerHybridSetter("int64Value", &HybridTestViewSpec::setInt64Value); prototype.registerHybridGetter("colorScheme", &HybridTestViewSpec::getColorScheme); prototype.registerHybridSetter("colorScheme", &HybridTestViewSpec::setColorScheme); prototype.registerHybridGetter("someCallback", &HybridTestViewSpec::getSomeCallback); diff --git a/packages/react-native-nitro-test/nitrogen/generated/shared/c++/HybridTestViewSpec.hpp b/packages/react-native-nitro-test/nitrogen/generated/shared/c++/HybridTestViewSpec.hpp index 758e772bb..efd55dc17 100644 --- a/packages/react-native-nitro-test/nitrogen/generated/shared/c++/HybridTestViewSpec.hpp +++ b/packages/react-native-nitro-test/nitrogen/generated/shared/c++/HybridTestViewSpec.hpp @@ -51,6 +51,8 @@ namespace margelo::nitro::test { virtual void setIsBlue(bool isBlue) = 0; virtual bool getHasBeenCalled() = 0; virtual void setHasBeenCalled(bool hasBeenCalled) = 0; + virtual int64_t getInt64Value() = 0; + virtual void setInt64Value(int64_t int64Value) = 0; virtual ColorScheme getColorScheme() = 0; virtual void setColorScheme(ColorScheme colorScheme) = 0; virtual std::function getSomeCallback() = 0; diff --git a/packages/react-native-nitro-test/nitrogen/generated/shared/c++/views/HybridTestViewComponent.cpp b/packages/react-native-nitro-test/nitrogen/generated/shared/c++/views/HybridTestViewComponent.cpp index 75b5df68d..4d5ddf31e 100644 --- a/packages/react-native-nitro-test/nitrogen/generated/shared/c++/views/HybridTestViewComponent.cpp +++ b/packages/react-native-nitro-test/nitrogen/generated/shared/c++/views/HybridTestViewComponent.cpp @@ -22,6 +22,7 @@ namespace margelo::nitro::test::views { react::ViewProps(context, sourceProps, rawProps, filterObjectKeys), isBlue(nitro::ReactProp::fromRawValue("TestView", "isBlue", rawProps, sourceProps.isBlue)), hasBeenCalled(nitro::ReactProp::fromRawValue("TestView", "hasBeenCalled", rawProps, sourceProps.hasBeenCalled)), + int64Value(nitro::ReactProp::fromRawValue("TestView", "int64Value", rawProps, sourceProps.int64Value)), colorScheme(nitro::ReactProp::fromRawValue("TestView", "colorScheme", rawProps, sourceProps.colorScheme)), someCallback(nitro::ReactProp>::fromRawValue("TestView", "someCallback", rawProps, sourceProps.someCallback)), nativeDefaultValue(nitro::ReactProp>::fromRawValue("TestView", "nativeDefaultValue", rawProps, sourceProps.nativeDefaultValue)), @@ -31,6 +32,7 @@ namespace margelo::nitro::test::views { switch (hashString(propName)) { case hashString("isBlue"): return true; case hashString("hasBeenCalled"): return true; + case hashString("int64Value"): return true; case hashString("colorScheme"): return true; case hashString("someCallback"): return true; case hashString("nativeDefaultValue"): return true; diff --git a/packages/react-native-nitro-test/nitrogen/generated/shared/c++/views/HybridTestViewComponent.hpp b/packages/react-native-nitro-test/nitrogen/generated/shared/c++/views/HybridTestViewComponent.hpp index 8b8ad1e56..fa25270c4 100644 --- a/packages/react-native-nitro-test/nitrogen/generated/shared/c++/views/HybridTestViewComponent.hpp +++ b/packages/react-native-nitro-test/nitrogen/generated/shared/c++/views/HybridTestViewComponent.hpp @@ -45,6 +45,7 @@ namespace margelo::nitro::test::views { public: nitro::ReactProp isBlue; nitro::ReactProp hasBeenCalled; + nitro::ReactProp int64Value; nitro::ReactProp colorScheme; nitro::ReactProp> someCallback; nitro::ReactProp> nativeDefaultValue; @@ -54,6 +55,7 @@ namespace margelo::nitro::test::views { bool hasSameProps(const HybridTestViewProps& other) const noexcept { return isBlue.hasSameValue(other.isBlue) && hasBeenCalled.hasSameValue(other.hasBeenCalled) && + int64Value.hasSameValue(other.int64Value) && colorScheme.hasSameValue(other.colorScheme) && someCallback.hasSameValue(other.someCallback) && nativeDefaultValue.hasSameValue(other.nativeDefaultValue) && @@ -64,6 +66,7 @@ namespace margelo::nitro::test::views { bool hasAnyProvidedProps() const noexcept { return isBlue.isProvided() || hasBeenCalled.isProvided() || + int64Value.isProvided() || colorScheme.isProvided() || someCallback.isProvided() || nativeDefaultValue.isProvided() || diff --git a/packages/react-native-nitro-test/nitrogen/generated/shared/json/TestViewConfig.json b/packages/react-native-nitro-test/nitrogen/generated/shared/json/TestViewConfig.json index eae6ee5b0..6d0396409 100644 --- a/packages/react-native-nitro-test/nitrogen/generated/shared/json/TestViewConfig.json +++ b/packages/react-native-nitro-test/nitrogen/generated/shared/json/TestViewConfig.json @@ -6,6 +6,7 @@ "validAttributes": { "isBlue": true, "hasBeenCalled": true, + "int64Value": true, "colorScheme": true, "someCallback": true, "nativeDefaultValue": true, diff --git a/packages/react-native-nitro-test/src/specs/TestView.nitro.ts b/packages/react-native-nitro-test/src/specs/TestView.nitro.ts index a9b52abf4..f2ccce55e 100644 --- a/packages/react-native-nitro-test/src/specs/TestView.nitro.ts +++ b/packages/react-native-nitro-test/src/specs/TestView.nitro.ts @@ -2,6 +2,7 @@ import type { HybridView as HybridViewAlias, HybridViewMethods, HybridViewProps, + Int64, } from 'react-native-nitro-modules' export type ColorScheme = 'light' | 'dark' @@ -9,6 +10,7 @@ export type ColorScheme = 'light' | 'dark' export interface TestViewProps extends HybridViewProps { isBlue: boolean hasBeenCalled: boolean + int64Value: Int64 colorScheme: ColorScheme someCallback: () => void nativeDefaultValue?: number