Skip to content
This repository was archived by the owner on Jul 1, 2025. It is now read-only.

Commit 1110898

Browse files
author
Riccardo Cipolleschi
committed
[TurboModule] Android: Refactor the code to use a shared implementation
1 parent a8a8225 commit 1110898

File tree

5 files changed

+128
-12
lines changed

5 files changed

+128
-12
lines changed

README.md

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
* [[TurboModule] Update the Native iOS code](#ios-tm-code)
1313
* [[TurboModule] Android: Convert ReactPackage to a backward compatible TurboReactPackage](#android-backward)
1414
* [[TurboModule] Android: Update the Native code to use two sourcesets](#android-sourceset)
15+
* [[TurboModule] Android: Refactor the code to use a shared implementation](#android-refactor)
1516

1617
## Steps
1718

@@ -587,3 +588,106 @@ end
587588
}
588589
}
589590
```
591+
592+
### <a name="android-refactor" />[[TurboModule] Android: Refactor the code to use a shared implementation](https://github.com/cipolleschi/RNNewArchitectureLibraries/commit/)
593+
594+
1. Create a new `calculator/android/src/main/java/com/rnnewarchitecturelibrary/CalculatorModuleImpl.java` file (notice that the `src`'s subfolder is now `main`) and paste the following code:
595+
```java
596+
package com.rnnewarchitecturelibrary;
597+
598+
import androidx.annotation.NonNull;
599+
import com.facebook.react.bridge.Promise;
600+
import java.util.Map;
601+
import java.util.HashMap;
602+
603+
public class CalculatorModuleImpl {
604+
605+
public static final String NAME = "RNCalculator";
606+
607+
public static void add(double a, double b, Promise promise) {
608+
promise.resolve(a + b);
609+
}
610+
611+
}
612+
```
613+
1. Open the `calculator/android/src/main/java/com/rnnewarchitecturelibrary/CalculatorPackage.java` file and update the following lines:
614+
```diff
615+
public NativeModule getModule(String name, ReactApplicationContext reactContext) {
616+
- if (name.equals(CalculatorModule.NAME)) {
617+
+ if (name.equals(CalculatorModuleImpl.NAME)) {
618+
return new CalculatorModule(reactContext);
619+
} else {
620+
return null;
621+
}
622+
}
623+
624+
@Override
625+
public ReactModuleInfoProvider getReactModuleInfoProvider() {
626+
return () -> {
627+
final Map<String, ReactModuleInfo> moduleInfos = new HashMap<>();
628+
boolean isTurboModule = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
629+
moduleInfos.put(
630+
- CalculatorModule.NAME,
631+
+ CalculatorModuleImpl.NAME,
632+
new ReactModuleInfo(
633+
- CalculatorModule.NAME,
634+
- CalculatorModule.NAME,
635+
+ CalculatorModuleImpl.NAME,
636+
+ CalculatorModuleImpl.NAME,
637+
false, // canOverrideExistingModule
638+
false, // needsEagerInit
639+
true, // hasConstants
640+
false, // isCxxModule
641+
isTurboModule // isTurboModule
642+
));
643+
return moduleInfos;
644+
};
645+
}
646+
```
647+
1. Open the `calculator/android/src/newarch/java/com/rnnewarchitecturelibrary/CalculatorModule.java` file and update it as it follows:
648+
```diff
649+
public class CalculatorModule extends NativeCalculatorSpec {
650+
651+
- public static final String NAME = "RNCalculator";
652+
653+
CalculatorModule(ReactApplicationContext context) {
654+
super(context);
655+
}
656+
657+
@Override
658+
@NonNull
659+
public String getName() {
660+
- return NAME;
661+
+ return CalculatorModuleImpl.NAME;
662+
}
663+
664+
@Override
665+
public void add(double a, double b, Promise promise) {
666+
- promise.resolve(a + b);
667+
+ CalculatorModuleImpl.add(a, b, promise);
668+
}
669+
}
670+
```
671+
1. Open the `calculator/android/src/oldarch/java/com/rnnewarchitecturelibrary/CalculatorModule.java` and update it as it follows:
672+
```diff
673+
public class CalculatorModule extends ReactContextBaseJavaModule {
674+
675+
- public static final String NAME = "RNCalculator";
676+
677+
CalculatorModule(ReactApplicationContext context) {
678+
super(context);
679+
}
680+
681+
@Override
682+
public String getName() {
683+
- return NAME;
684+
+ return CalculatorModuleImpl.NAME;
685+
}
686+
687+
@ReactMethod
688+
public void add(int a, int b, Promise promise) {
689+
- promise.resolve(a + b);
690+
+ CalculatorModuleImpl.add(a, b, promise);
691+
}
692+
}
693+
1. Remove the `android/src/main/java/com/rnnewarchitecturelibrary/CalculatorModule.java` (the one in the `main` folder).
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.rnnewarchitecturelibrary;
2+
3+
import androidx.annotation.NonNull;
4+
import com.facebook.react.bridge.Promise;
5+
import java.util.Map;
6+
import java.util.HashMap;
7+
8+
public class CalculatorModuleImpl {
9+
10+
public static final String NAME = "RNCalculator";
11+
12+
public static void add(double a, double b, Promise promise) {
13+
promise.resolve(a + b);
14+
}
15+
16+
}

calculator/android/src/main/java/com/rnnewarchitecturelibrary/CalculatorPackage.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class CalculatorPackage extends TurboReactPackage {
1919
@Nullable
2020
@Override
2121
public NativeModule getModule(String name, ReactApplicationContext reactContext) {
22-
if (name.equals(CalculatorModule.NAME)) {
22+
if (name.equals(CalculatorModuleImpl.NAME)) {
2323
return new CalculatorModule(reactContext);
2424
} else {
2525
return null;
@@ -32,10 +32,10 @@ public ReactModuleInfoProvider getReactModuleInfoProvider() {
3232
final Map<String, ReactModuleInfo> moduleInfos = new HashMap<>();
3333
boolean isTurboModule = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
3434
moduleInfos.put(
35-
CalculatorModule.NAME,
35+
CalculatorModuleImpl.NAME,
3636
new ReactModuleInfo(
37-
CalculatorModule.NAME,
38-
CalculatorModule.NAME,
37+
CalculatorModuleImpl.NAME,
38+
CalculatorModuleImpl.NAME,
3939
false, // canOverrideExistingModule
4040
false, // needsEagerInit
4141
true, // hasConstants

calculator/android/src/newarch/java/com/rnnewarchitecturelibrary/CalculatorModule.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,18 @@
1212

1313
public class CalculatorModule extends NativeCalculatorSpec {
1414

15-
public static final String NAME = "RNCalculator";
16-
1715
CalculatorModule(ReactApplicationContext context) {
1816
super(context);
1917
}
2018

2119
@Override
2220
@NonNull
2321
public String getName() {
24-
return NAME;
22+
return CalculatorModuleImpl.NAME;
2523
}
2624

2725
@Override
2826
public void add(double a, double b, Promise promise) {
29-
promise.resolve(a + b);
27+
CalculatorModuleImpl.add(a, b, promise);
3028
}
3129
}

calculator/android/src/oldarch/java/com/rnnewarchitecturelibrary/CalculatorModule.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,17 @@
1111

1212
public class CalculatorModule extends ReactContextBaseJavaModule {
1313

14-
public static final String NAME = "RNCalculator";
15-
1614
CalculatorModule(ReactApplicationContext context) {
1715
super(context);
1816
}
1917

2018
@Override
2119
public String getName() {
22-
return NAME;
20+
return CalculatorModuleImpl.NAME;
2321
}
2422

2523
@ReactMethod
2624
public void add(int a, int b, Promise promise) {
27-
promise.resolve(a + b);
25+
CalculatorModuleImpl.add(a, b, promise);
2826
}
2927
}

0 commit comments

Comments
 (0)