mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Turn FBMainReactPackage into a TurboReactPackage
Summary: `ReactTurboModuleManagerDelegate` only understands `TurboReactPackage`s. So, we need to convert `FBMainReactPackage` and all its dependent packages into `TurboReactPackage`. Reviewed By: fkgozali Differential Revision: D15711546 fbshipit-source-id: df626d542a6477b116c867299219156423c6364a
This commit is contained in:
committed by
Facebook Github Bot
parent
e5c96a85fc
commit
9c76e14b07
@@ -63,7 +63,14 @@ import com.facebook.react.views.viewpager.ReactViewPagerManager;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.inject.Provider;
|
||||
import com.facebook.react.TurboReactPackage;
|
||||
import com.facebook.react.ViewManagerOnDemandReactPackage;
|
||||
import java.util.Map;
|
||||
import com.facebook.react.module.model.ReactModuleInfo;
|
||||
import com.facebook.react.module.annotations.ReactModule;
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* Package defining basic modules and view managers.
|
||||
@@ -93,9 +100,8 @@ import javax.inject.Provider;
|
||||
ToastModule.class,
|
||||
VibrationModule.class,
|
||||
WebSocketModule.class,
|
||||
|
||||
})
|
||||
public class MainReactPackage extends LazyReactPackage {
|
||||
public class MainReactPackage extends TurboReactPackage {
|
||||
|
||||
private MainPackageConfig mConfig;
|
||||
|
||||
@@ -110,201 +116,60 @@ public class MainReactPackage extends LazyReactPackage {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ModuleSpec> getNativeModules(final ReactApplicationContext context) {
|
||||
return Arrays.asList(
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
AccessibilityInfoModule.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new AccessibilityInfoModule(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
AppStateModule.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new AppStateModule(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
BlobModule.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new BlobModule(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
FileReaderModule.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new FileReaderModule(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
AsyncStorageModule.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new AsyncStorageModule(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
CameraRollManager.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new CameraRollManager(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
ClipboardModule.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new ClipboardModule(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
DatePickerDialogModule.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new DatePickerDialogModule(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
DialogModule.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new DialogModule(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
FrescoModule.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new FrescoModule(
|
||||
context, true, mConfig != null ? mConfig.getFrescoConfig() : null);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
I18nManagerModule.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new I18nManagerModule(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
ImageEditingManager.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new ImageEditingManager(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
ImageLoaderModule.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new ImageLoaderModule(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
ImageStoreManager.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new ImageStoreManager(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
IntentModule.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new IntentModule(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
NativeAnimatedModule.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new NativeAnimatedModule(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
NetworkingModule.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new NetworkingModule(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
PermissionsModule.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new PermissionsModule(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
ShareModule.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new ShareModule(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
StatusBarModule.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new StatusBarModule(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
TimePickerDialogModule.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new TimePickerDialogModule(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
ToastModule.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new ToastModule(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
VibrationModule.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new VibrationModule(context);
|
||||
}
|
||||
}),
|
||||
ModuleSpec.nativeModuleSpec(
|
||||
WebSocketModule.class,
|
||||
new Provider<NativeModule>() {
|
||||
@Override
|
||||
public NativeModule get() {
|
||||
return new WebSocketModule(context);
|
||||
}
|
||||
}));
|
||||
public @Nullable NativeModule getModule(String name, ReactApplicationContext context) {
|
||||
switch (name) {
|
||||
case AccessibilityInfoModule.NAME:
|
||||
return new AccessibilityInfoModule(context);
|
||||
case AppStateModule.NAME:
|
||||
return new AppStateModule(context);
|
||||
case BlobModule.NAME:
|
||||
return new BlobModule(context);
|
||||
case FileReaderModule.NAME:
|
||||
return new FileReaderModule(context);
|
||||
case AsyncStorageModule.NAME:
|
||||
return new AsyncStorageModule(context);
|
||||
case CameraRollManager.NAME:
|
||||
return new CameraRollManager(context);
|
||||
case ClipboardModule.NAME:
|
||||
return new ClipboardModule(context);
|
||||
case DatePickerDialogModule.FRAGMENT_TAG:
|
||||
return new DatePickerDialogModule(context);
|
||||
case DialogModule.NAME:
|
||||
return new DialogModule(context);
|
||||
case FrescoModule.NAME:
|
||||
return new FrescoModule(
|
||||
context, true, mConfig != null ? mConfig.getFrescoConfig() : null);
|
||||
case I18nManagerModule.NAME:
|
||||
return new I18nManagerModule(context);
|
||||
case ImageEditingManager.NAME:
|
||||
return new ImageEditingManager(context);
|
||||
case ImageLoaderModule.NAME:
|
||||
return new ImageLoaderModule(context);
|
||||
case ImageStoreManager.NAME:
|
||||
return new ImageStoreManager(context);
|
||||
case IntentModule.NAME:
|
||||
return new IntentModule(context);
|
||||
case NativeAnimatedModule.NAME:
|
||||
return new NativeAnimatedModule(context);
|
||||
case NetworkingModule.NAME:
|
||||
return new NetworkingModule(context);
|
||||
case PermissionsModule.NAME:
|
||||
return new PermissionsModule(context);
|
||||
case ShareModule.NAME:
|
||||
return new ShareModule(context);
|
||||
case StatusBarModule.NAME:
|
||||
return new StatusBarModule(context);
|
||||
case TimePickerDialogModule.FRAGMENT_TAG:
|
||||
return new TimePickerDialogModule(context);
|
||||
case ToastModule.NAME:
|
||||
return new ToastModule(context);
|
||||
case VibrationModule.NAME:
|
||||
return new VibrationModule(context);
|
||||
case WebSocketModule.NAME:
|
||||
return new WebSocketModule(context);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -343,7 +208,68 @@ public class MainReactPackage extends LazyReactPackage {
|
||||
|
||||
@Override
|
||||
public ReactModuleInfoProvider getReactModuleInfoProvider() {
|
||||
// This has to be done via reflection or we break open source.
|
||||
return LazyReactPackage.getReactModuleInfoProviderViaReflection(this);
|
||||
try {
|
||||
Class<?> reactModuleInfoProviderClass =
|
||||
Class.forName("com.facebook.react.MainReactPackage$$ReactModuleInfoProvider");
|
||||
return (ReactModuleInfoProvider) reactModuleInfoProviderClass.newInstance();
|
||||
} catch (ClassNotFoundException e) {
|
||||
// In OSS case, the annotation processor does not run. We fall back on creating this byhand
|
||||
Class<? extends NativeModule>[] moduleList =
|
||||
new Class[] {
|
||||
AccessibilityInfoModule.class,
|
||||
AppStateModule.class,
|
||||
BlobModule.class,
|
||||
FileReaderModule.class,
|
||||
AsyncStorageModule.class,
|
||||
CameraRollManager.class,
|
||||
ClipboardModule.class,
|
||||
DatePickerDialogModule.class,
|
||||
DialogModule.class,
|
||||
FrescoModule.class,
|
||||
I18nManagerModule.class,
|
||||
ImageEditingManager.class,
|
||||
ImageLoaderModule.class,
|
||||
ImageStoreManager.class,
|
||||
IntentModule.class,
|
||||
NativeAnimatedModule.class,
|
||||
NetworkingModule.class,
|
||||
PermissionsModule.class,
|
||||
ShareModule.class,
|
||||
StatusBarModule.class,
|
||||
TimePickerDialogModule.class,
|
||||
ToastModule.class,
|
||||
VibrationModule.class,
|
||||
WebSocketModule.class
|
||||
};
|
||||
|
||||
final Map<String, ReactModuleInfo> reactModuleInfoMap = new HashMap<>();
|
||||
for (Class<? extends NativeModule> moduleClass : moduleList) {
|
||||
ReactModule reactModule = moduleClass.getAnnotation(ReactModule.class);
|
||||
|
||||
reactModuleInfoMap.put(
|
||||
reactModule.name(),
|
||||
new ReactModuleInfo(
|
||||
reactModule.name(),
|
||||
moduleClass.getName(),
|
||||
reactModule.canOverrideExistingModule(),
|
||||
reactModule.needsEagerInit(),
|
||||
reactModule.hasConstants(),
|
||||
reactModule.isCxxModule(),
|
||||
false));
|
||||
}
|
||||
|
||||
return new ReactModuleInfoProvider() {
|
||||
@Override
|
||||
public Map<String, ReactModuleInfo> getReactModuleInfos() {
|
||||
return reactModuleInfoMap;
|
||||
}
|
||||
};
|
||||
} catch (InstantiationException e) {
|
||||
throw new RuntimeException(
|
||||
"No ReactModuleInfoProvider for CoreModulesPackage$$ReactModuleInfoProvider", e);
|
||||
} catch (IllegalAccessException e) {
|
||||
throw new RuntimeException(
|
||||
"No ReactModuleInfoProvider for CoreModulesPackage$$ReactModuleInfoProvider", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user