From fe7eb619892f0a3774cf5dbf324215e7320f55b5 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Thu, 8 Nov 2018 16:55:12 -0800 Subject: [PATCH] Force navigation to use root tag Summary: This diff ensures that JS uses rootTags during navigation. A redbox will be rendered in debug mode when a non-rootTag is used during navigation. This change enables proper navigation for Fabric. Reviewed By: shergin Differential Revision: D10855198 fbshipit-source-id: a82aaa706cd62ce92143fa86d0a422c1ae439a50 --- .../com/facebook/react/uimanager/UIManagerModule.java | 4 +++- .../com/facebook/react/uimanager/common/ViewUtil.java | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java index bdab2af5a..bd2a33555 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java @@ -806,7 +806,9 @@ public class UIManagerModule extends ReactContextBaseJavaModule * @return the rootTag */ public int resolveRootTagFromReactTag(int reactTag) { - return mUIImplementation.resolveRootTagFromReactTag(reactTag); + return ViewUtil.isRootTag(reactTag) + ? reactTag + : mUIImplementation.resolveRootTagFromReactTag(reactTag); } /** Dirties the node associated with the given react tag */ diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/common/ViewUtil.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/common/ViewUtil.java index c84d265af..2333fccc1 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/common/ViewUtil.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/common/ViewUtil.java @@ -25,4 +25,13 @@ public class ViewUtil { return DEFAULT; } + /** + * @param reactTag {@link int} react tag + * @return if the react tag received by parameter is a RootTag or not. + */ + @Deprecated + public static boolean isRootTag(int reactTag) { + return reactTag % 10 == 1; + } + }