Skip to content

Commit 3d97bac

Browse files
Nick Lefeverfacebook-github-bot
authored andcommitted
Add codegen for EdgeInset type diffing (#52239)
Summary: Pull Request resolved: #52239 Add `toDynamic` conversion function for `EdgeInset` which allowed for removing the custom conversion implemented for the `ViewProps`. Changelog: [Internal] Reviewed By: mdvacca Differential Revision: D77234069 fbshipit-source-id: 3aecad8a6d78468f0056167fa1523ccdfb68f369
1 parent 9b82e70 commit 3d97bac

4 files changed

Lines changed: 18 additions & 9 deletions

File tree

packages/react-native-codegen/src/generators/components/GeneratePropsCpp.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,10 @@ function generatePropsDiffString(
118118
result["${prop.name}"] = toDynamic(${prop.name});
119119
}`;
120120
case 'EdgeInsetsPrimitive':
121+
return `
122+
if (${prop.name} != oldProps->${prop.name}) {
123+
result["${prop.name}"] = toDynamic(${prop.name});
124+
}`;
121125
case 'DimensionPrimitive':
122126
// TODO: Implement diffProps for complex types
123127
return '';

packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsCpp-test.js.snap

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -900,6 +900,9 @@ folly::dynamic InsetsPropNativeComponentProps::getDiffProps(
900900
}
901901
folly::dynamic result = HostPlatformViewProps::getDiffProps(prevProps);
902902
903+
if (contentInset != oldProps->contentInset) {
904+
result[\\"contentInset\\"] = toDynamic(contentInset);
905+
}
903906
return result;
904907
}
905908
#endif

packages/react-native/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -530,15 +530,6 @@ static folly::dynamic toDynamic(const std::vector<FilterFunction>& filter) {
530530
return filterResult;
531531
}
532532

533-
static folly::dynamic toDynamic(const EdgeInsets& edgeInsets) {
534-
folly::dynamic edgeInsetsResult = folly::dynamic::object();
535-
edgeInsetsResult["left"] = edgeInsets.left;
536-
edgeInsetsResult["top"] = edgeInsets.top;
537-
edgeInsetsResult["right"] = edgeInsets.right;
538-
edgeInsetsResult["bottom"] = edgeInsets.bottom;
539-
return edgeInsetsResult;
540-
}
541-
542533
ComponentName HostPlatformViewProps::getDiffPropsImplementationTarget() const {
543534
return "View";
544535
}

packages/react-native/ReactCommon/react/renderer/core/graphicsConversions.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,17 @@ inline void fromRawValue(
178178
}
179179
}
180180

181+
#ifdef RN_SERIALIZABLE_STATE
182+
inline folly::dynamic toDynamic(const EdgeInsets& edgeInsets) {
183+
folly::dynamic edgeInsetsResult = folly::dynamic::object();
184+
edgeInsetsResult["left"] = edgeInsets.left;
185+
edgeInsetsResult["top"] = edgeInsets.top;
186+
edgeInsetsResult["right"] = edgeInsets.right;
187+
edgeInsetsResult["bottom"] = edgeInsets.bottom;
188+
return edgeInsetsResult;
189+
}
190+
#endif
191+
181192
inline void fromRawValue(
182193
const PropsParserContext& context,
183194
const RawValue& value,

0 commit comments

Comments
 (0)