diff --git a/packages/react-native-codegen/src/generators/components/GeneratePropsJavaDelegate.js b/packages/react-native-codegen/src/generators/components/GeneratePropsJavaDelegate.js index 8264d85001b..239bf887e3c 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 c077532771c..51b008bb54d 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 4f980ea1689..affb28a2140 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 17767543e4c..27e4baf9895 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