Skip to content

Commit 81c29e5

Browse files
author
Riccardo Cipolleschi
committed
[Turbo Modules] Extend or implement the code-generated native interfaces
1 parent 13ed4d9 commit 81c29e5

File tree

4 files changed

+36
-8
lines changed

4 files changed

+36
-8
lines changed

AwesomeApp/ios/AwesomeApp.xcodeproj/project.pbxproj

+10-6
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,11 @@
1414
66EA172F5A9F8B8D3B25F124 /* libPods-AwesomeApp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 99314255B28DA015CA9E78DA /* libPods-AwesomeApp.a */; };
1515
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
1616
A3A4249C19A8DA8B362917C5 /* libPods-AwesomeApp-AwesomeAppTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 545EFEA5545C7B78668EE49C /* libPods-AwesomeApp-AwesomeAppTests.a */; };
17-
CD35780927DA5BB60015DDA1 /* RCTCalendarModule.m in Sources */ = {isa = PBXBuildFile; fileRef = CD35780827DA5BB60015DDA1 /* RCTCalendarModule.m */; };
18-
CD35780A27DA5BB60015DDA1 /* RCTCalendarModule.m in Sources */ = {isa = PBXBuildFile; fileRef = CD35780827DA5BB60015DDA1 /* RCTCalendarModule.m */; };
17+
CD35780927DA5BB60015DDA1 /* RCTCalendarModule.mm in Sources */ = {isa = PBXBuildFile; fileRef = CD35780827DA5BB60015DDA1 /* RCTCalendarModule.mm */; };
18+
CD35780A27DA5BB60015DDA1 /* RCTCalendarModule.mm in Sources */ = {isa = PBXBuildFile; fileRef = CD35780827DA5BB60015DDA1 /* RCTCalendarModule.mm */; };
1919
CD35780D27DA64630015DDA1 /* NativeCalendarModule.js in Resources */ = {isa = PBXBuildFile; fileRef = CD35780C27DA64630015DDA1 /* NativeCalendarModule.js */; };
2020
CD35780F27DA661D0015DDA1 /* CalendarModule.podspec in Resources */ = {isa = PBXBuildFile; fileRef = CD35780E27DA661D0015DDA1 /* CalendarModule.podspec */; };
21+
CD35781127DA691B0015DDA1 /* CalendarModule in Resources */ = {isa = PBXBuildFile; fileRef = CD35781027DA691B0015DDA1 /* CalendarModule */; };
2122
/* End PBXBuildFile section */
2223

2324
/* Begin PBXContainerItemProxy section */
@@ -46,9 +47,10 @@
4647
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = AwesomeApp/LaunchScreen.storyboard; sourceTree = "<group>"; };
4748
99314255B28DA015CA9E78DA /* libPods-AwesomeApp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-AwesomeApp.a"; sourceTree = BUILT_PRODUCTS_DIR; };
4849
CD35780727DA5B070015DDA1 /* RCTCalendarModule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTCalendarModule.h; sourceTree = "<group>"; };
49-
CD35780827DA5BB60015DDA1 /* RCTCalendarModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTCalendarModule.m; sourceTree = "<group>"; };
50+
CD35780827DA5BB60015DDA1 /* RCTCalendarModule.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RCTCalendarModule.mm; sourceTree = "<group>"; };
5051
CD35780C27DA64630015DDA1 /* NativeCalendarModule.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = NativeCalendarModule.js; sourceTree = "<group>"; };
5152
CD35780E27DA661D0015DDA1 /* CalendarModule.podspec */ = {isa = PBXFileReference; lastKnownFileType = text; path = CalendarModule.podspec; sourceTree = "<group>"; };
53+
CD35781027DA691B0015DDA1 /* CalendarModule */ = {isa = PBXFileReference; lastKnownFileType = folder; name = CalendarModule; path = build/generated/ios/CalendarModule; sourceTree = "<group>"; };
5254
DB3D66F1E8C331413A6C8B5B /* Pods-AwesomeApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AwesomeApp.debug.xcconfig"; path = "Target Support Files/Pods-AwesomeApp/Pods-AwesomeApp.debug.xcconfig"; sourceTree = "<group>"; };
5355
E3E6FABEA70823814F58837F /* Pods-AwesomeApp-AwesomeAppTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AwesomeApp-AwesomeAppTests.release.xcconfig"; path = "Target Support Files/Pods-AwesomeApp-AwesomeAppTests/Pods-AwesomeApp-AwesomeAppTests.release.xcconfig"; sourceTree = "<group>"; };
5456
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
@@ -95,6 +97,7 @@
9597
isa = PBXGroup;
9698
children = (
9799
CD35780627DA5AE20015DDA1 /* CalendarModule */,
100+
CD35781027DA691B0015DDA1 /* CalendarModule */,
98101
13B07FAF1A68108700A75B9A /* AppDelegate.h */,
99102
13B07FB01A68108700A75B9A /* AppDelegate.mm */,
100103
13B07FB51A68108700A75B9A /* Images.xcassets */,
@@ -162,7 +165,7 @@
162165
children = (
163166
CD35780B27DA64520015DDA1 /* js */,
164167
CD35780727DA5B070015DDA1 /* RCTCalendarModule.h */,
165-
CD35780827DA5BB60015DDA1 /* RCTCalendarModule.m */,
168+
CD35780827DA5BB60015DDA1 /* RCTCalendarModule.mm */,
166169
CD35780E27DA661D0015DDA1 /* CalendarModule.podspec */,
167170
);
168171
name = CalendarModule;
@@ -275,6 +278,7 @@
275278
CD35780D27DA64630015DDA1 /* NativeCalendarModule.js in Resources */,
276279
CD35780F27DA661D0015DDA1 /* CalendarModule.podspec in Resources */,
277280
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
281+
CD35781127DA691B0015DDA1 /* CalendarModule in Resources */,
278282
);
279283
runOnlyForDeploymentPostprocessing = 0;
280284
};
@@ -434,15 +438,15 @@
434438
buildActionMask = 2147483647;
435439
files = (
436440
00E356F31AD99517003FC87E /* AwesomeAppTests.m in Sources */,
437-
CD35780A27DA5BB60015DDA1 /* RCTCalendarModule.m in Sources */,
441+
CD35780A27DA5BB60015DDA1 /* RCTCalendarModule.mm in Sources */,
438442
);
439443
runOnlyForDeploymentPostprocessing = 0;
440444
};
441445
13B07F871A680F5B00A75B9A /* Sources */ = {
442446
isa = PBXSourcesBuildPhase;
443447
buildActionMask = 2147483647;
444448
files = (
445-
CD35780927DA5BB60015DDA1 /* RCTCalendarModule.m in Sources */,
449+
CD35780927DA5BB60015DDA1 /* RCTCalendarModule.mm in Sources */,
446450
13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */,
447451
13B07FC11A68108700A75B9A /* main.mm in Sources */,
448452
);

AwesomeApp/ios/AwesomeApp/CalendarModule/RCTCalendarModule.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
#ifndef RCTCalendarModule_h
99
#define RCTCalendarModule_h
1010

11-
#import <React/RCTBridgeModule.h>
12-
@interface RCTCalendarModule : NSObject <RCTBridgeModule>
11+
#import <CalendarModule/CalendarModule.h>
12+
@interface RCTCalendarModule : NSObject <NativeCalendarModuleSpec>
1313
@end
1414

1515
#endif /* RCTCalendarModule_h */

AwesomeApp/ios/AwesomeApp/CalendarModule/RCTCalendarModule.m AwesomeApp/ios/AwesomeApp/CalendarModule/RCTCalendarModule.mm

+5
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,9 @@ @implementation RCTCalendarModule
1111
RCTLogInfo(@"Pretending to create an event %@ at %@", name, location);
1212
}
1313

14+
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params
15+
{
16+
return std::make_shared<facebook::react::NativeCalendarModuleSpecJSI>(params);
17+
}
18+
1419
@end

RUN.md

+19
Original file line numberDiff line numberDiff line change
@@ -452,3 +452,22 @@ Steps:
452452
```
453453
* `cmd+b`
454454
* `cmd+r`
455+
456+
### [[Turbo Modules] Extend or implement the code-generated native interfaces]()
457+
Steps:
458+
* Open the `AwesomeApp.xcworkspace`
459+
* Rename the `RCTCalendarModule.m` into `RCTCalendarModule.mm`
460+
* Right-click the `AwesomeApp` group in Xcode and select `Add files to "AwesomeApp"`
461+
* Select the `build/generated/ios/CalendarModule` folder
462+
* Open the `RCTCalendarModule.h`
463+
* Replace the import with `#import <CalendarModule/CalendarModule.h>`
464+
* Replace the implemented protocol with `NativeCalendarModuleSpec`
465+
* Rename the `RCTCalendarModule.m` into `RCTCalendarModule.mm`
466+
* Open the `RCTCalendarModule.mm`
467+
* Add the following snippet before the `@end` to connect the component with the generated interface
468+
```c++
469+
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params
470+
{
471+
return std::make_shared<facebook::react::NativeCalendarModuleSpecJSI>(params);
472+
}
473+
```

0 commit comments

Comments
 (0)