Refactor: ReactInstance: Inline getUIManagerConstants() (#42215)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/42215

This diff should not change any behaviour.

**Why:** This logic is only used once from the UIConstantsProviderManager. So, let's just inline it. Inlining this method will make ReactInstance.java have fewer private methods, which'll make ReactInstance.java easier to read.

**Concern:** Inlining this method into ReactInstance's constructor will make the constructor too hard to read.
- I think it'll be fine: we will simplify this method significantly in D52399003.

Changelog: [Internal]

Reviewed By: cortinico

Differential Revision: D52399002

fbshipit-source-id: 8c0dc69af86109da8144546347eecd2e01c0e0be
This commit is contained in:
Ramanpreet Nara
2024-01-10 12:35:33 -08:00
committed by Facebook GitHub Bot
parent 0df4511839
commit a31a4569e1
@@ -23,7 +23,6 @@ import com.facebook.react.bridge.JSBundleLoader;
import com.facebook.react.bridge.JSBundleLoaderDelegate;
import com.facebook.react.bridge.LifecycleEventListener;
import com.facebook.react.bridge.NativeArray;
import com.facebook.react.bridge.NativeMap;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactNoCrashSoftException;
import com.facebook.react.bridge.ReactSoftExceptionLogger;
@@ -257,7 +256,35 @@ final class ReactInstance {
// We want to match this beahavior.
(UIConstantsProvider)
() -> {
return getUIManagerConstants();
List<ViewManager> viewManagers = new ArrayList<ViewManager>();
boolean canLoadViewManagersLazily = true;
List<ReactPackage> packages = mReactPackages;
for (ReactPackage reactPackage : packages) {
if (!(reactPackage instanceof ViewManagerOnDemandReactPackage)) {
canLoadViewManagersLazily = false;
break;
}
}
// 1, Retrive view managers via on demand loading
if (canLoadViewManagersLazily) {
for (String viewManagerName : getViewManagerNames()) {
viewManagers.add(createViewManager(viewManagerName));
}
} else {
// 2, There are packages that don't implement ViewManagerOnDemandReactPackage
// so we retrieve
// view managers via eager loading
for (ReactPackage reactPackage : packages) {
List<ViewManager> viewManagersInPackage =
reactPackage.createViewManagers(mBridgelessReactContext);
viewManagers.addAll(viewManagersInPackage);
}
}
Map<String, Object> constants =
UIManagerModule.createConstants(
viewManagers, new HashMap<>(), new HashMap<>());
return Arguments.makeNativeMap(constants);
});
}
@@ -554,34 +581,4 @@ final class ReactInstance {
}
return uniqueNames;
}
private @NonNull NativeMap getUIManagerConstants() {
List<ViewManager> viewManagers = new ArrayList<ViewManager>();
boolean canLoadViewManagersLazily = true;
List<ReactPackage> packages = mReactPackages;
for (ReactPackage reactPackage : packages) {
if (!(reactPackage instanceof ViewManagerOnDemandReactPackage)) {
canLoadViewManagersLazily = false;
break;
}
}
// 1, Retrive view managers via on demand loading
if (canLoadViewManagersLazily) {
for (String viewManagerName : getViewManagerNames()) {
viewManagers.add(createViewManager(viewManagerName));
}
} else {
// 2, There are packages that don't implement ViewManagerOnDemandReactPackage so we retrieve
// view managers via eager loading
for (ReactPackage reactPackage : packages) {
List<ViewManager> viewManagersInPackage =
reactPackage.createViewManagers(mBridgelessReactContext);
viewManagers.addAll(viewManagersInPackage);
}
}
Map<String, Object> constants =
UIManagerModule.createConstants(viewManagers, new HashMap<>(), new HashMap<>());
return Arguments.makeNativeMap(constants);
}
}