Skip to content

Commit 1cd8f05

Browse files
sota000facebook-github-bot
authored andcommitted
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
1 parent c0c5439 commit 1cd8f05

File tree

3 files changed

+22
-28
lines changed

3 files changed

+22
-28
lines changed

React/AppSetup/RCTAppSetupUtils.h

+10-10
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,16 @@
2828
#import <ReactCommon/RCTTurboModuleManager.h>
2929
#endif
3030

31-
@interface RCTAppSetupUtils : NSObject
32-
+ (void)prepareApp:(UIApplication *_Nonnull)application;
33-
+ (UIView *_Nonnull)defaultRootViewWithBridge:(RCTBridge *_Nonnull)bridge
34-
moduleName:(NSString *_Nonnull)moduleName
35-
initialProperties:(nullable NSDictionary *)initialProperties;
31+
RCT_EXTERN_C_BEGIN
32+
33+
void RCTAppSetupPrepareApp(UIApplication *application);
34+
UIView *RCTAppSetupDefaultRootView(RCTBridge *bridge, NSString *moduleName, NSDictionary *initialProperties);
3635

3736
#if RCT_NEW_ARCH_ENABLED
38-
+ (id<RCTTurboModule> _Nonnull)defaultModuleInstanceFromClass:(Class _Nonnull)moduleClass;
39-
+ (std::unique_ptr<facebook::react::JSExecutorFactory>)
40-
defaultJsExecutorFactoryForBridge:(RCTBridge *_Nonnull)bridge
41-
withTurboModuleManager:(RCTTurboModuleManager *_Nonnull)turboModuleManager;
37+
id<RCTTurboModule> RCTAppSetupDefaultModuleFromClass(Class moduleClass);
38+
std::unique_ptr<facebook::react::JSExecutorFactory> RCTAppSetupDefaultJsexecutorFactory(
39+
RCTBridge *bridge,
40+
RCTTurboModuleManager *turboModuleManager);
4241
#endif
43-
@end
42+
43+
RCT_EXTERN_C_END

React/AppSetup/RCTAppSetupUtils.mm

+6-12
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,7 @@ static void InitializeFlipper(UIApplication *application)
4444
}
4545
#endif
4646

47-
@implementation RCTAppSetupUtils
48-
49-
+ (void)prepareApp:(UIApplication *)application
47+
void RCTAppSetupPrepareApp(UIApplication *application)
5048
{
5149
#ifdef FB_SONARKIT_ENABLED
5250
InitializeFlipper(application);
@@ -57,9 +55,7 @@ + (void)prepareApp:(UIApplication *)application
5755
#endif
5856
}
5957

60-
+ (UIView *)defaultRootViewWithBridge:(RCTBridge *)bridge
61-
moduleName:(NSString *)moduleName
62-
initialProperties:(NSDictionary *)initialProperties
58+
UIView *RCTAppSetupDefaultRootView(RCTBridge *bridge, NSString *moduleName, NSDictionary *initialProperties)
6359
{
6460
#if RCT_NEW_ARCH_ENABLED
6561
return [[RCTFabricSurfaceHostingProxyRootView alloc] initWithBridge:bridge
@@ -71,7 +67,7 @@ + (UIView *)defaultRootViewWithBridge:(RCTBridge *)bridge
7167
}
7268

7369
#if RCT_NEW_ARCH_ENABLED
74-
+ (id<RCTTurboModule>)defaultModuleInstanceFromClass:(Class)moduleClass
70+
id<RCTTurboModule> RCTAppSetupDefaultModuleFromClass(Class moduleClass)
7571
{
7672
// Set up the default RCTImageLoader and RCTNetworking modules.
7773
if (moduleClass == RCTImageLoader.class) {
@@ -96,9 +92,9 @@ + (UIView *)defaultRootViewWithBridge:(RCTBridge *)bridge
9692
return [moduleClass new];
9793
}
9894

99-
+ (std::unique_ptr<facebook::react::JSExecutorFactory>)defaultJsExecutorFactoryForBridge:(RCTBridge *)bridge
100-
withTurboModuleManager:
101-
(RCTTurboModuleManager *)turboModuleManager;
95+
std::unique_ptr<facebook::react::JSExecutorFactory> RCTAppSetupDefaultJsExecutorFactory(
96+
RCTBridge *bridge,
97+
RCTTurboModuleManager *turboModuleManager)
10298
{
10399
// Necessary to allow NativeModules to lookup TurboModules
104100
[bridge setRCTTurboModuleRegistry:turboModuleManager];
@@ -131,5 +127,3 @@ + (UIView *)defaultRootViewWithBridge:(RCTBridge *)bridge
131127
}
132128

133129
#endif
134-
135-
@end

template/ios/HelloWorld/AppDelegate.mm

+6-6
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,13 @@ @interface AppDelegate () <RCTCxxBridgeDelegate, RCTTurboModuleManagerDelegate>
2525
@end
2626
#endif
2727

28+
using namespace facebook::react;
29+
2830
@implementation AppDelegate
2931

3032
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
3133
{
32-
[RCTAppSetupUtils prepareApp: application];
34+
RCTAppSetupPrepareApp(application);
3335

3436
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
3537

@@ -41,9 +43,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
4143
bridge.surfacePresenter = _bridgeAdapter.surfacePresenter;
4244
#endif
4345

44-
UIView *rootView = [RCTAppSetupUtils defaultRootViewWithBridge:bridge
45-
moduleName:@"HelloWorld"
46-
initialProperties:nil];
46+
UIView *rootView = RCTAppSetupDefaultRootView(bridge, @"HelloWorld", nil);
4747

4848
if (@available(iOS 13.0, *)) {
4949
rootView.backgroundColor = [UIColor systemBackgroundColor];
@@ -77,7 +77,7 @@ - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
7777
_turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge
7878
delegate:self
7979
jsInvoker:bridge.jsCallInvoker];
80-
return [RCTAppSetupUtils defaultJsExecutorFactoryForBridge:bridge withTurboModuleManager:_turboModuleManager];
80+
return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager);
8181
}
8282

8383
#pragma mark RCTTurboModuleManagerDelegate
@@ -101,7 +101,7 @@ - (Class)getModuleClassFromName:(const char *)name
101101

102102
- (id<RCTTurboModule>)getModuleInstanceFromClass:(Class)moduleClass
103103
{
104-
return [RCTAppSetupUtils defaultModuleInstanceFromClass: moduleClass];
104+
return RCTAppSetupDefaultModuleFromClass(moduleClass);
105105
}
106106

107107
#endif

0 commit comments

Comments
 (0)