Migrate packages to not eager initialize view managers
Summary: Migrate packages need for Catalyst app to use lazy view manager initialisation Changelog: [Android][Changed] - Migrate packages to not eager initialize view managers Reviewed By: javache Differential Revision: D43711708 fbshipit-source-id: fd172fc664d68fb7ee1d5a980516cdf48e30a979
This commit is contained in:
Родитель
d2dd79f3c5
Коммит
d7eb3bfcb3
|
@ -9,7 +9,9 @@ package com.facebook.react.shell;
|
|||
|
||||
import androidx.annotation.Nullable;
|
||||
import com.facebook.react.TurboReactPackage;
|
||||
import com.facebook.react.ViewManagerOnDemandReactPackage;
|
||||
import com.facebook.react.animated.NativeAnimatedModule;
|
||||
import com.facebook.react.bridge.ModuleSpec;
|
||||
import com.facebook.react.bridge.NativeModule;
|
||||
import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.react.module.annotations.ReactModule;
|
||||
|
@ -38,6 +40,7 @@ import com.facebook.react.modules.toast.ToastModule;
|
|||
import com.facebook.react.modules.vibration.VibrationModule;
|
||||
import com.facebook.react.modules.websocket.WebSocketModule;
|
||||
import com.facebook.react.turbomodule.core.interfaces.TurboModule;
|
||||
import com.facebook.react.uimanager.UIManagerModule;
|
||||
import com.facebook.react.uimanager.ViewManager;
|
||||
import com.facebook.react.views.drawer.ReactDrawerLayoutManager;
|
||||
import com.facebook.react.views.image.ReactImageManager;
|
||||
|
@ -56,9 +59,11 @@ import com.facebook.react.views.textinput.ReactTextInputManager;
|
|||
import com.facebook.react.views.unimplementedview.ReactUnimplementedViewManager;
|
||||
import com.facebook.react.views.view.ReactViewManager;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.inject.Provider;
|
||||
|
||||
/** Package defining basic modules and view managers. */
|
||||
@ReactModuleList(
|
||||
|
@ -85,9 +90,10 @@ import java.util.Map;
|
|||
VibrationModule.class,
|
||||
WebSocketModule.class,
|
||||
})
|
||||
public class MainReactPackage extends TurboReactPackage {
|
||||
public class MainReactPackage extends TurboReactPackage implements ViewManagerOnDemandReactPackage {
|
||||
|
||||
private MainPackageConfig mConfig;
|
||||
private @Nullable Map<String, ModuleSpec> mViewManagers;
|
||||
|
||||
public MainReactPackage() {}
|
||||
|
||||
|
@ -175,6 +181,181 @@ public class MainReactPackage extends TurboReactPackage {
|
|||
return viewManagers;
|
||||
}
|
||||
|
||||
private static void appendMap(
|
||||
Map<String, ModuleSpec> map, String name, Provider<? extends NativeModule> provider) {
|
||||
map.put(name, ModuleSpec.viewManagerSpec(provider));
|
||||
}
|
||||
|
||||
/** @return a map of view managers that should be registered with {@link UIManagerModule} */
|
||||
public Map<String, ModuleSpec> getViewManagersMap(final ReactApplicationContext reactContext) {
|
||||
if (mViewManagers == null) {
|
||||
Map<String, ModuleSpec> viewManagers = new HashMap<>();
|
||||
appendMap(
|
||||
viewManagers,
|
||||
ReactDrawerLayoutManager.REACT_CLASS,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new ReactDrawerLayoutManager();
|
||||
}
|
||||
});
|
||||
appendMap(
|
||||
viewManagers,
|
||||
ReactHorizontalScrollViewManager.REACT_CLASS,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new ReactHorizontalScrollViewManager();
|
||||
}
|
||||
});
|
||||
appendMap(
|
||||
viewManagers,
|
||||
ReactHorizontalScrollContainerViewManager.REACT_CLASS,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new ReactHorizontalScrollContainerViewManager();
|
||||
}
|
||||
});
|
||||
appendMap(
|
||||
viewManagers,
|
||||
ReactProgressBarViewManager.REACT_CLASS,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new ReactProgressBarViewManager();
|
||||
}
|
||||
});
|
||||
appendMap(
|
||||
viewManagers,
|
||||
ReactScrollViewManager.REACT_CLASS,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new ReactScrollViewManager();
|
||||
}
|
||||
});
|
||||
appendMap(
|
||||
viewManagers,
|
||||
ReactSwitchManager.REACT_CLASS,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new ReactSwitchManager();
|
||||
}
|
||||
});
|
||||
appendMap(
|
||||
viewManagers,
|
||||
SwipeRefreshLayoutManager.REACT_CLASS,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new SwipeRefreshLayoutManager();
|
||||
}
|
||||
});
|
||||
appendMap(
|
||||
viewManagers,
|
||||
FrescoBasedReactTextInlineImageViewManager.REACT_CLASS,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new FrescoBasedReactTextInlineImageViewManager();
|
||||
}
|
||||
});
|
||||
appendMap(
|
||||
viewManagers,
|
||||
ReactImageManager.REACT_CLASS,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new ReactImageManager();
|
||||
}
|
||||
});
|
||||
appendMap(
|
||||
viewManagers,
|
||||
ReactModalHostManager.REACT_CLASS,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new ReactModalHostManager();
|
||||
}
|
||||
});
|
||||
appendMap(
|
||||
viewManagers,
|
||||
ReactRawTextManager.REACT_CLASS,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new ReactRawTextManager();
|
||||
}
|
||||
});
|
||||
appendMap(
|
||||
viewManagers,
|
||||
ReactTextInputManager.REACT_CLASS,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new ReactTextInputManager();
|
||||
}
|
||||
});
|
||||
appendMap(
|
||||
viewManagers,
|
||||
ReactTextViewManager.REACT_CLASS,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new ReactTextViewManager();
|
||||
}
|
||||
});
|
||||
appendMap(
|
||||
viewManagers,
|
||||
ReactViewManager.REACT_CLASS,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new ReactViewManager();
|
||||
}
|
||||
});
|
||||
appendMap(
|
||||
viewManagers,
|
||||
ReactVirtualTextViewManager.REACT_CLASS,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new ReactVirtualTextViewManager();
|
||||
}
|
||||
});
|
||||
appendMap(
|
||||
viewManagers,
|
||||
ReactUnimplementedViewManager.REACT_CLASS,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new ReactUnimplementedViewManager();
|
||||
}
|
||||
});
|
||||
mViewManagers = viewManagers;
|
||||
}
|
||||
return mViewManagers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ModuleSpec> getViewManagers(ReactApplicationContext reactContext) {
|
||||
return new ArrayList<>(getViewManagersMap(reactContext).values());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<String> getViewManagerNames(ReactApplicationContext reactContext) {
|
||||
return getViewManagersMap(reactContext).keySet();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable ViewManager createViewManager(
|
||||
ReactApplicationContext reactContext, String viewManagerName) {
|
||||
ModuleSpec spec = getViewManagersMap(reactContext).get(viewManagerName);
|
||||
return spec != null ? (ViewManager) spec.getProvider().get() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReactModuleInfoProvider getReactModuleInfoProvider() {
|
||||
try {
|
||||
|
|
Загрузка…
Ссылка в новой задаче