diff --git a/packages/react-native-codegen/src/generators/components/GeneratePropsCpp.js b/packages/react-native-codegen/src/generators/components/GeneratePropsCpp.js index 7d3781aa072..2c8db07a576 100644 --- a/packages/react-native-codegen/src/generators/components/GeneratePropsCpp.js +++ b/packages/react-native-codegen/src/generators/components/GeneratePropsCpp.js @@ -118,6 +118,10 @@ function generatePropsDiffString( result["${prop.name}"] = toDynamic(${prop.name}); }`; case 'EdgeInsetsPrimitive': + return ` + if (${prop.name} != oldProps->${prop.name}) { + result["${prop.name}"] = toDynamic(${prop.name}); + }`; case 'DimensionPrimitive': // TODO: Implement diffProps for complex types return ''; diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsCpp-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsCpp-test.js.snap index 329e860f568..d55c8bc7279 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsCpp-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsCpp-test.js.snap @@ -900,6 +900,9 @@ folly::dynamic InsetsPropNativeComponentProps::getDiffProps( } folly::dynamic result = HostPlatformViewProps::getDiffProps(prevProps); + if (contentInset != oldProps->contentInset) { + result[\\"contentInset\\"] = toDynamic(contentInset); + } return result; } #endif diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp index fe5d271f1cc..da9d0904fff 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp @@ -530,15 +530,6 @@ static folly::dynamic toDynamic(const std::vector& filter) { return filterResult; } -static folly::dynamic toDynamic(const EdgeInsets& edgeInsets) { - folly::dynamic edgeInsetsResult = folly::dynamic::object(); - edgeInsetsResult["left"] = edgeInsets.left; - edgeInsetsResult["top"] = edgeInsets.top; - edgeInsetsResult["right"] = edgeInsets.right; - edgeInsetsResult["bottom"] = edgeInsets.bottom; - return edgeInsetsResult; -} - ComponentName HostPlatformViewProps::getDiffPropsImplementationTarget() const { return "View"; } diff --git a/packages/react-native/ReactCommon/react/renderer/core/graphicsConversions.h b/packages/react-native/ReactCommon/react/renderer/core/graphicsConversions.h index 66c2e87405a..2eb9c940201 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/graphicsConversions.h +++ b/packages/react-native/ReactCommon/react/renderer/core/graphicsConversions.h @@ -178,6 +178,17 @@ inline void fromRawValue( } } +#ifdef RN_SERIALIZABLE_STATE +inline folly::dynamic toDynamic(const EdgeInsets& edgeInsets) { + folly::dynamic edgeInsetsResult = folly::dynamic::object(); + edgeInsetsResult["left"] = edgeInsets.left; + edgeInsetsResult["top"] = edgeInsets.top; + edgeInsetsResult["right"] = edgeInsets.right; + edgeInsetsResult["bottom"] = edgeInsets.bottom; + return edgeInsetsResult; +} +#endif + inline void fromRawValue( const PropsParserContext& context, const RawValue& value,