From 1cd8f05ee821c8d58d4637dfd665b86d22616638 Mon Sep 17 00:00:00 2001 From: Sota Ogo Date: Wed, 15 Dec 2021 18:13:16 -0800 Subject: [PATCH] Refactor app template setup util functions Summary: Changelog: [internal] Refactor RCTAppSetupUtils to c functions. Since RCTAppSetupUtils doesn't retain any states, we don't need it to be a class. Reviewed By: philIip Differential Revision: D33084352 fbshipit-source-id: 1372a2737eafffa46ee6e5164a970dd12699c71c --- React/AppSetup/RCTAppSetupUtils.h | 20 ++++++++++---------- React/AppSetup/RCTAppSetupUtils.mm | 18 ++++++------------ template/ios/HelloWorld/AppDelegate.mm | 12 ++++++------ 3 files changed, 22 insertions(+), 28 deletions(-) diff --git a/React/AppSetup/RCTAppSetupUtils.h b/React/AppSetup/RCTAppSetupUtils.h index 3056dd15953..51455e8d148 100644 --- a/React/AppSetup/RCTAppSetupUtils.h +++ b/React/AppSetup/RCTAppSetupUtils.h @@ -28,16 +28,16 @@ #import #endif -@interface RCTAppSetupUtils : NSObject -+ (void)prepareApp:(UIApplication *_Nonnull)application; -+ (UIView *_Nonnull)defaultRootViewWithBridge:(RCTBridge *_Nonnull)bridge - moduleName:(NSString *_Nonnull)moduleName - initialProperties:(nullable NSDictionary *)initialProperties; +RCT_EXTERN_C_BEGIN + +void RCTAppSetupPrepareApp(UIApplication *application); +UIView *RCTAppSetupDefaultRootView(RCTBridge *bridge, NSString *moduleName, NSDictionary *initialProperties); #if RCT_NEW_ARCH_ENABLED -+ (id _Nonnull)defaultModuleInstanceFromClass:(Class _Nonnull)moduleClass; -+ (std::unique_ptr) - defaultJsExecutorFactoryForBridge:(RCTBridge *_Nonnull)bridge - withTurboModuleManager:(RCTTurboModuleManager *_Nonnull)turboModuleManager; +id RCTAppSetupDefaultModuleFromClass(Class moduleClass); +std::unique_ptr RCTAppSetupDefaultJsexecutorFactory( + RCTBridge *bridge, + RCTTurboModuleManager *turboModuleManager); #endif -@end + +RCT_EXTERN_C_END diff --git a/React/AppSetup/RCTAppSetupUtils.mm b/React/AppSetup/RCTAppSetupUtils.mm index c051c7c6444..b48c7aad11c 100644 --- a/React/AppSetup/RCTAppSetupUtils.mm +++ b/React/AppSetup/RCTAppSetupUtils.mm @@ -44,9 +44,7 @@ static void InitializeFlipper(UIApplication *application) } #endif -@implementation RCTAppSetupUtils - -+ (void)prepareApp:(UIApplication *)application +void RCTAppSetupPrepareApp(UIApplication *application) { #ifdef FB_SONARKIT_ENABLED InitializeFlipper(application); @@ -57,9 +55,7 @@ static void InitializeFlipper(UIApplication *application) #endif } -+ (UIView *)defaultRootViewWithBridge:(RCTBridge *)bridge - moduleName:(NSString *)moduleName - initialProperties:(NSDictionary *)initialProperties +UIView *RCTAppSetupDefaultRootView(RCTBridge *bridge, NSString *moduleName, NSDictionary *initialProperties) { #if RCT_NEW_ARCH_ENABLED return [[RCTFabricSurfaceHostingProxyRootView alloc] initWithBridge:bridge @@ -71,7 +67,7 @@ static void InitializeFlipper(UIApplication *application) } #if RCT_NEW_ARCH_ENABLED -+ (id)defaultModuleInstanceFromClass:(Class)moduleClass +id RCTAppSetupDefaultModuleFromClass(Class moduleClass) { // Set up the default RCTImageLoader and RCTNetworking modules. if (moduleClass == RCTImageLoader.class) { @@ -96,9 +92,9 @@ static void InitializeFlipper(UIApplication *application) return [moduleClass new]; } -+ (std::unique_ptr)defaultJsExecutorFactoryForBridge:(RCTBridge *)bridge - withTurboModuleManager: - (RCTTurboModuleManager *)turboModuleManager; +std::unique_ptr RCTAppSetupDefaultJsExecutorFactory( + RCTBridge *bridge, + RCTTurboModuleManager *turboModuleManager) { // Necessary to allow NativeModules to lookup TurboModules [bridge setRCTTurboModuleRegistry:turboModuleManager]; @@ -131,5 +127,3 @@ static void InitializeFlipper(UIApplication *application) } #endif - -@end diff --git a/template/ios/HelloWorld/AppDelegate.mm b/template/ios/HelloWorld/AppDelegate.mm index 76dd1b445b9..01812770775 100644 --- a/template/ios/HelloWorld/AppDelegate.mm +++ b/template/ios/HelloWorld/AppDelegate.mm @@ -25,11 +25,13 @@ @end #endif +using namespace facebook::react; + @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - [RCTAppSetupUtils prepareApp: application]; + RCTAppSetupPrepareApp(application); RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; @@ -41,9 +43,7 @@ bridge.surfacePresenter = _bridgeAdapter.surfacePresenter; #endif - UIView *rootView = [RCTAppSetupUtils defaultRootViewWithBridge:bridge - moduleName:@"HelloWorld" - initialProperties:nil]; + UIView *rootView = RCTAppSetupDefaultRootView(bridge, @"HelloWorld", nil); if (@available(iOS 13.0, *)) { rootView.backgroundColor = [UIColor systemBackgroundColor]; @@ -77,7 +77,7 @@ _turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge delegate:self jsInvoker:bridge.jsCallInvoker]; - return [RCTAppSetupUtils defaultJsExecutorFactoryForBridge:bridge withTurboModuleManager:_turboModuleManager]; + return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager); } #pragma mark RCTTurboModuleManagerDelegate @@ -101,7 +101,7 @@ - (id)getModuleInstanceFromClass:(Class)moduleClass { - return [RCTAppSetupUtils defaultModuleInstanceFromClass: moduleClass]; + return RCTAppSetupDefaultModuleFromClass(moduleClass); } #endif