-
Notifications
You must be signed in to change notification settings - Fork 95
/
Copy pathBridgeDelegate.mm
83 lines (67 loc) · 2.19 KB
/
BridgeDelegate.mm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#import "BridgeDelegate.h"
#import <React/RCTCxxBridgeDelegate.h>
#if USE_TURBOMODULE
#import <React/CoreModulesPlugins.h>
#import <React/RCTAppSetupUtils.h>
#import <ReactCommon/RCTTurboModuleManager.h>
@interface RTABridgeDelegate () <RCTCxxBridgeDelegate, RCTTurboModuleManagerDelegate>
@end
#else
@interface RTABridgeDelegate () <RCTCxxBridgeDelegate>
@end
#endif // USE_TURBOMODULE
@implementation RTABridgeDelegate {
__weak id<RCTBridgeDelegate> _bridgeDelegate;
#if USE_TURBOMODULE
RCTTurboModuleManager *_turboModuleManager;
#endif // USE_TURBOMODULE
}
- (instancetype)initWithBridgeDelegate:(id<RCTBridgeDelegate>)bridgeDelegate
{
if (self = [super init]) {
_bridgeDelegate = bridgeDelegate;
}
return self;
}
// MARK: - RCTBridgeDelegate details
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
return [_bridgeDelegate sourceURLForBridge:bridge];
}
- (NSArray<id<RCTBridgeModule>> *)extraModulesForBridge:(RCTBridge *)bridge
{
return [_bridgeDelegate extraModulesForBridge:bridge];
}
// MARK: - RCTCxxBridgeDelegate details
- (std::unique_ptr<facebook::react::JSExecutorFactory>)jsExecutorFactoryForBridge:
(RCTBridge *)bridge
{
#if USE_TURBOMODULE
// jsExecutorFactoryForBridge: (USE_TURBOMODULE=1)
_turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge
delegate:self
jsInvoker:bridge.jsCallInvoker];
return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager);
#else
// jsExecutorFactoryForBridge: (USE_TURBOMODULE=0)
return nullptr;
#endif // USE_TURBOMODULE
}
// MARK: - RCTTurboModuleManagerDelegate details
#if USE_TURBOMODULE
- (Class)getModuleClassFromName:(const char *)name
{
return RCTCoreModulesClassProvider(name);
}
- (std::shared_ptr<facebook::react::TurboModule>)
getTurboModule:(const std::string &)name
jsInvoker:(std::shared_ptr<facebook::react::CallInvoker>)jsInvoker
{
return nullptr;
}
- (id<RCTTurboModule>)getModuleInstanceFromClass:(Class)moduleClass
{
return RCTAppSetupDefaultModuleFromClass(moduleClass);
}
#endif // USE_TURBOMODULE
@end