diff --git a/android/plugins/litho/build.gradle b/android/plugins/litho/build.gradle index 9a6f1e12d..5a75d05c8 100644 --- a/android/plugins/litho/build.gradle +++ b/android/plugins/litho/build.gradle @@ -22,6 +22,9 @@ android { implementation project(':android') implementation deps.lithoCore implementation deps.lithoEditorCore + implementation(deps.lithoEditorFlipper) { + exclude group:'com.facebook.flipper', module:'flipper' + } implementation deps.lithoSectionsDebug implementation deps.lithoSectionsCore implementation deps.lithoWidget diff --git a/android/plugins/litho/src/main/java/com/facebook/flipper/plugins/litho/DataUtils.java b/android/plugins/litho/src/main/java/com/facebook/flipper/plugins/litho/DataUtils.java index 009c3bdf7..cc1280b86 100644 --- a/android/plugins/litho/src/main/java/com/facebook/flipper/plugins/litho/DataUtils.java +++ b/android/plugins/litho/src/main/java/com/facebook/flipper/plugins/litho/DataUtils.java @@ -18,6 +18,7 @@ import com.facebook.litho.StateContainer; import com.facebook.litho.annotations.Prop; import com.facebook.litho.annotations.State; import com.facebook.litho.drawable.ComparableColorDrawable; +import com.facebook.litho.editor.flipper.FlipperEditor; import java.lang.reflect.Field; import java.util.AbstractMap; import java.util.ArrayList; diff --git a/android/plugins/litho/src/main/java/com/facebook/flipper/plugins/litho/DebugComponentDescriptor.java b/android/plugins/litho/src/main/java/com/facebook/flipper/plugins/litho/DebugComponentDescriptor.java index 26392eb3a..ed139e0f2 100644 --- a/android/plugins/litho/src/main/java/com/facebook/flipper/plugins/litho/DebugComponentDescriptor.java +++ b/android/plugins/litho/src/main/java/com/facebook/flipper/plugins/litho/DebugComponentDescriptor.java @@ -31,6 +31,7 @@ import com.facebook.litho.DebugComponent; import com.facebook.litho.DebugLayoutNode; import com.facebook.litho.LithoView; import com.facebook.litho.StateContainer; +import com.facebook.litho.editor.flipper.FlipperEditor; import com.facebook.yoga.YogaAlign; import com.facebook.yoga.YogaDirection; import com.facebook.yoga.YogaEdge; diff --git a/android/plugins/litho/src/main/java/com/facebook/flipper/plugins/litho/FlipperEditor.java b/android/plugins/litho/src/main/java/com/facebook/flipper/plugins/litho/FlipperEditor.java deleted file mode 100644 index a5d54232f..000000000 --- a/android/plugins/litho/src/main/java/com/facebook/flipper/plugins/litho/FlipperEditor.java +++ /dev/null @@ -1,205 +0,0 @@ -/* - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -package com.facebook.flipper.plugins.litho; - -import com.facebook.flipper.core.FlipperArray; -import com.facebook.flipper.core.FlipperDynamic; -import com.facebook.flipper.core.FlipperObject; -import com.facebook.flipper.core.FlipperValue; -import com.facebook.flipper.plugins.inspector.InspectorValue; -import com.facebook.flipper.plugins.inspector.SetDataOperations; -import com.facebook.litho.editor.EditorRegistry; -import com.facebook.litho.editor.model.EditorArray; -import com.facebook.litho.editor.model.EditorBool; -import com.facebook.litho.editor.model.EditorNumber; -import com.facebook.litho.editor.model.EditorShape; -import com.facebook.litho.editor.model.EditorString; -import com.facebook.litho.editor.model.EditorValue; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import javax.annotation.Nullable; - -/** - * This class is responsible for making Litho Editor compatible with Flipper. - * - *
It provides methods to convert from FlipperDynamic, and to provide the description of a Prop - * or State as a FlipperObject, FlipperArray or FlipperValue. - */ -public class FlipperEditor { - /** - * Uses an editor to create a FlipperObject, FlipperArray or FlipperValue to describe it. If no - * editor is available then it returns the class name. - */ - public static Object makeFlipperField(Object node, Field f) { - Class> type = f.getType(); - final EditorValue editorValue = EditorRegistry.read(type, f, node); - if (editorValue != null) { - return intoFlipper(editorValue); - } else { - return InspectorValue.immutable(type.toString()); - } - } - - /** - * Uses an editor to update a field nested in an object path with the value of a FlipperDynamic. - * If no editor is available then it returns null. - * - *
The path as defined by Flipper starts with either "Props" or "State" followed by the call
- * chain into the object. Fields retain their name, positions in an array use their index.
- */
- public static @Nullable Boolean updateComponent(
- String[] path,
- Field field,
- Object o,
- final @Nullable SetDataOperations.FlipperValueHint hint,
- FlipperDynamic dynamic) {
- EditorValue edit = parseEditorValue(hint, dynamic);
- for (int i = path.length - 1; i > 0; i--) {
- HashMap