From 03ac8e872eaeda3354d8e3159f06a77cdbfb5356 Mon Sep 17 00:00:00 2001 From: Eli White Date: Mon, 2 Mar 2020 15:07:50 -0800 Subject: [PATCH] Update GeneratePropsJavaDelegate to handle PlatformColor Summary: $title Changelog: [Internal] (Note: this ignores all push blocking failures!) Reviewed By: rickhanlonii Differential Revision: D20175915 fbshipit-source-id: 96d75e8cc098ea6ce78288f40191f7bae24d5aa5 --- .../generators/components/GeneratePropsJavaDelegate.js | 4 ++-- .../generators/components/GeneratePropsJavaInterface.js | 2 +- .../src/generators/components/JavaHelpers.js | 8 +++++++- .../__snapshots__/GeneratePropsJavaDelegate-test.js.snap | 8 +++++--- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/packages/react-native-codegen/src/generators/components/GeneratePropsJavaDelegate.js b/packages/react-native-codegen/src/generators/components/GeneratePropsJavaDelegate.js index 8264d85001bce3..239bf887e3ca4b 100644 --- a/packages/react-native-codegen/src/generators/components/GeneratePropsJavaDelegate.js +++ b/packages/react-native-codegen/src/generators/components/GeneratePropsJavaDelegate.js @@ -106,7 +106,7 @@ function getJavaValueForProp( case 'NativePrimitiveTypeAnnotation': switch (typeAnnotation.name) { case 'ColorPrimitive': - return 'value == null ? null : ((Double) value).intValue()'; + return 'ColorPropConverter.getColor(value, view.getContext())'; case 'ImageSourcePrimitive': return '(ReadableMap) value'; case 'PointPrimitive': @@ -230,7 +230,7 @@ function getClassExtendString(component): string { } function getDelegateImports(component) { - const imports = getImports(component); + const imports = getImports(component, 'delegate'); // The delegate needs ReadableArray for commands always. // The interface doesn't always need it if (component.commands.length > 0) { diff --git a/packages/react-native-codegen/src/generators/components/GeneratePropsJavaInterface.js b/packages/react-native-codegen/src/generators/components/GeneratePropsJavaInterface.js index c077532771c5e2..51b008bb54dc94 100644 --- a/packages/react-native-codegen/src/generators/components/GeneratePropsJavaInterface.js +++ b/packages/react-native-codegen/src/generators/components/GeneratePropsJavaInterface.js @@ -218,7 +218,7 @@ module.exports = { const className = getInterfaceJavaClassName(componentName); const fileName = `${className}.java`; - const imports = getImports(component); + const imports = getImports(component, 'interface'); const propsString = generatePropsString(component, imports); const commandsString = generateCommandsString( component, diff --git a/packages/react-native-codegen/src/generators/components/JavaHelpers.js b/packages/react-native-codegen/src/generators/components/JavaHelpers.js index 4f980ea16894bf..affb28a21406e0 100644 --- a/packages/react-native-codegen/src/generators/components/JavaHelpers.js +++ b/packages/react-native-codegen/src/generators/components/JavaHelpers.js @@ -37,7 +37,10 @@ function toSafeJavaString( return parts.map(upperCaseFirst).join(''); } -function getImports(component: ComponentShape): Set { +function getImports( + component: ComponentShape, + type: 'interface' | 'delegate', +): Set { const imports: Set = new Set(); component.extendsProps.forEach(extendProps => { @@ -60,6 +63,9 @@ function getImports(component: ComponentShape): Set { function addImportsForNativeName(name) { switch (name) { case 'ColorPrimitive': + if (type === 'delegate') { + imports.add('import com.facebook.react.bridge.ColorPropConverter;'); + } return; case 'ImageSourcePrimitive': imports.add('import com.facebook.react.bridge.ReadableMap;'); diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaDelegate-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaDelegate-test.js.snap index 17767543e4cb0b..27e4baf9895c93 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaDelegate-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaDelegate-test.js.snap @@ -161,6 +161,7 @@ package com.facebook.react.viewmanagers; import android.view.View; import androidx.annotation.Nullable; +import com.facebook.react.bridge.ColorPropConverter; import com.facebook.react.uimanager.BaseViewManagerDelegate; import com.facebook.react.uimanager.BaseViewManagerInterface; import com.facebook.react.uimanager.LayoutShadowNode; @@ -173,7 +174,7 @@ public class ColorPropNativeComponentManagerDelegate