mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Add Object props support for Java
Summary: This diff adds Java handling for object props Reviewed By: TheSavior Differential Revision: D16759139 fbshipit-source-id: e47956dc43cd1eb4abd58636bf111dde8d7244cc
This commit is contained in:
committed by
Facebook Github Bot
parent
50b821df49
commit
ebb412ab00
+1
-1
@@ -90,7 +90,7 @@ function getJavaValueForProp(
|
||||
return '(ReadableArray) value';
|
||||
}
|
||||
case 'ObjectTypeAnnotation': {
|
||||
throw new Error('Object type is not implemented');
|
||||
return '(ReadableMap) value';
|
||||
}
|
||||
case 'StringEnumTypeAnnotation':
|
||||
return '(String) value';
|
||||
|
||||
+2
-1
@@ -69,7 +69,8 @@ function getJavaValueForProp(prop: PropTypeShape, imports): string {
|
||||
return '@Nullable ReadableArray value';
|
||||
}
|
||||
case 'ObjectTypeAnnotation': {
|
||||
throw new Error('Object type is not implemented');
|
||||
addNullable(imports);
|
||||
return '@Nullable ReadableMap value';
|
||||
}
|
||||
case 'StringEnumTypeAnnotation':
|
||||
addNullable(imports);
|
||||
|
||||
@@ -77,6 +77,10 @@ function getImports(component: ComponentShape): Set<string> {
|
||||
if (typeAnnotation.type === 'ArrayTypeAnnotation') {
|
||||
imports.add('import com.facebook.react.bridge.ReadableArray;');
|
||||
}
|
||||
|
||||
if (typeAnnotation.type === 'ObjectTypeAnnotation') {
|
||||
imports.add('import com.facebook.react.bridge.ReadableMap;');
|
||||
}
|
||||
});
|
||||
|
||||
return imports;
|
||||
|
||||
Vendored
-1
@@ -17,7 +17,6 @@ const generator = require('../GeneratePropsJavaDelegate.js');
|
||||
describe('GeneratePropsJavaDelegate', () => {
|
||||
Object.keys(fixtures)
|
||||
.sort()
|
||||
.filter(fixtureName => fixtureName !== 'OBJECT_PROPS')
|
||||
.forEach(fixtureName => {
|
||||
const fixture = fixtures[fixtureName];
|
||||
|
||||
|
||||
packages/react-native-codegen/src/generators/components/__tests__/GeneratePropsJavaInterface-test.js
Vendored
-1
@@ -17,7 +17,6 @@ const generator = require('../GeneratePropsJavaInterface.js');
|
||||
describe('GeneratePropsJavaInterface', () => {
|
||||
Object.keys(fixtures)
|
||||
.sort()
|
||||
.filter(fixtureName => fixtureName !== 'OBJECT_PROPS')
|
||||
.forEach(fixtureName => {
|
||||
const fixture = fixtures[fixtureName];
|
||||
|
||||
|
||||
+31
@@ -503,6 +503,37 @@ public class NoPropsNoEventsComponentManagerDelegate<T extends View, U extends B
|
||||
}
|
||||
`;
|
||||
|
||||
exports[`GeneratePropsJavaDelegate can generate fixture OBJECT_PROPS 1`] = `
|
||||
Map {
|
||||
"ObjectPropsManagerDelegate.java" => "
|
||||
package com.facebook.react.viewmanagers;
|
||||
|
||||
import android.view.View;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
import com.facebook.react.uimanager.BaseViewManager;
|
||||
import com.facebook.react.uimanager.BaseViewManagerDelegate;
|
||||
import com.facebook.react.uimanager.LayoutShadowNode;
|
||||
|
||||
public class ObjectPropsManagerDelegate<T extends View, U extends BaseViewManager<T, ? extends LayoutShadowNode> & ObjectPropsManagerInterface<T>> extends BaseViewManagerDelegate<T, U> {
|
||||
public ObjectPropsManagerDelegate(U viewManager) {
|
||||
super(viewManager);
|
||||
}
|
||||
@Override
|
||||
public void setProperty(T view, String propName, @Nullable Object value) {
|
||||
switch (propName) {
|
||||
case \\"objectProp\\":
|
||||
mViewManager.setObjectProp(view, (ReadableMap) value);
|
||||
break;
|
||||
default:
|
||||
super.setProperty(view, propName, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
",
|
||||
}
|
||||
`;
|
||||
|
||||
exports[`GeneratePropsJavaDelegate can generate fixture POINT_PROP 1`] = `
|
||||
Map {
|
||||
"PointPropNativeComponentManagerDelegate.java" => "
|
||||
|
||||
+16
@@ -241,6 +241,22 @@ public interface NoPropsNoEventsComponentManagerInterface<T extends View> {
|
||||
}
|
||||
`;
|
||||
|
||||
exports[`GeneratePropsJavaInterface can generate fixture OBJECT_PROPS 1`] = `
|
||||
Map {
|
||||
"ObjectPropsManagerInterface.java" => "
|
||||
package com.facebook.react.viewmanagers;
|
||||
|
||||
import android.view.View;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
|
||||
public interface ObjectPropsManagerInterface<T extends View> {
|
||||
void setObjectProp(T view, @Nullable ReadableMap value);
|
||||
}
|
||||
",
|
||||
}
|
||||
`;
|
||||
|
||||
exports[`GeneratePropsJavaInterface can generate fixture POINT_PROP 1`] = `
|
||||
Map {
|
||||
"PointPropNativeComponentManagerInterface.java" => "
|
||||
|
||||
Reference in New Issue
Block a user