Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use TurboModule to initialize JSI + Enable new architecture in example #66

Open
wants to merge 17 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class MainApplication : Application(), ReactApplication {
SoLoader.init(this, false)
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
// If you opted-in for the New Architecture, we load the native entry point for this app.
load(bridgelessEnabled=false)
load()
}
}
}
2 changes: 1 addition & 1 deletion example/android/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
# your application. You should enable this flag either if you want
# to write custom TurboModules/Fabric components OR use libraries that
# are providing them.
newArchEnabled=false
newArchEnabled=true

# Use this property to enable or disable the Hermes JS engine.
# If set to false, you will be using JSC instead.
Expand Down
2 changes: 2 additions & 0 deletions example/ios/Podfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
ENV['RCT_NEW_ARCH_ENABLED'] = '1'

# Resolve react_native_pods.rb with node to allow for hoisting
require Pod::Executable.execute_command('node', ['-p',
'require.resolve(
Expand Down
109 changes: 98 additions & 11 deletions example/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1259,7 +1259,71 @@ PODS:
- ReactCommon/turbomodule/core
- Yoga
- react-native-safe-area-context (4.11.0):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
- RCTRequired
- RCTTypeSafety
- React-Core
- React-debug
- React-Fabric
- React-featureflags
- React-graphics
- React-ImageManager
- react-native-safe-area-context/common (= 4.11.0)
- react-native-safe-area-context/fabric (= 4.11.0)
- React-NativeModulesApple
- React-RCTFabric
- React-rendererdebug
- React-utils
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- react-native-safe-area-context/common (4.11.0):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
- RCTRequired
- RCTTypeSafety
- React-Core
- React-debug
- React-Fabric
- React-featureflags
- React-graphics
- React-ImageManager
- React-NativeModulesApple
- React-RCTFabric
- React-rendererdebug
- React-utils
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- react-native-safe-area-context/fabric (4.11.0):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
- RCTRequired
- RCTTypeSafety
- React-Core
- React-debug
- React-Fabric
- React-featureflags
- React-graphics
- React-ImageManager
- react-native-safe-area-context/common
- React-NativeModulesApple
- React-RCTFabric
- React-rendererdebug
- React-utils
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- React-nativeconfig (0.75.2)
- React-NativeModulesApple (0.75.2):
- glog
Expand Down Expand Up @@ -1521,6 +1585,29 @@ PODS:
- React-perflogger (= 0.75.2)
- React-utils (= 0.75.2)
- RNScreens (3.34.0):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2024.01.01.00)
- RCTRequired
- RCTTypeSafety
- React-Core
- React-debug
- React-Fabric
- React-featureflags
- React-graphics
- React-ImageManager
- React-NativeModulesApple
- React-RCTFabric
- React-RCTImage
- React-rendererdebug
- React-utils
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- RNScreens/common (= 3.34.0)
- Yoga
- RNScreens/common (3.34.0):
- DoubleConversion
- glog
- hermes-engine
Expand Down Expand Up @@ -1768,16 +1855,16 @@ SPEC CHECKSUMS:
React-CoreModules: f92a2cb11d22f6066823ca547c61e900325dfe44
React-cxxreact: f5595a4cbfe5a4e9d401dffa2c1c78bbbbbe75e4
React-debug: 4a91c177b5b2efcc546fb50bc2f676f3f589efab
React-defaultsnativemodule: bb94c3db425b01c760f41a253de8536b3f5497f0
React-domnativemodule: 6c581fd39812cafb024171e091c00905b2c3a3e2
React-defaultsnativemodule: 6b666572abf5fe7fe87836a42776abd6ad5ed173
React-domnativemodule: 785d767c4edbb9f011b8c976271077759ca5c4aa
React-Fabric: a33cc1fdc62a3085774783bb30970531589d2028
React-FabricComponents: 98de5f94cbd35d407f4fc78855298b562d8289cb
React-FabricImage: 0ce8fd83844d9edef5825116d38f0e208b9ad786
React-featureflags: 37a78859ad71db758e2efdcbdb7384afefa8701e
React-featureflagsnativemodule: 52b46e161a151b4653cf1762285e8e899d534e3f
React-featureflagsnativemodule: f94aacb52c463e200ee185bff90ae3b392e60263
React-graphics: c16f1bab97a5d473831a79360d84300e93a614e5
React-hermes: 7801f8c0e12f326524b461dc368d3e74f3d2a385
React-idlecallbacksnativemodule: 58de2ac968ee80947d19dc8fe20def607e5c2de8
React-idlecallbacksnativemodule: d81bb7b5d26cea9852a8edc6ad1979cd7ed0841f
React-ImageManager: 98a1e5b0b05528dde47ebcd953d916ac66d46c09
React-jserrorhandler: 08f1c3465a71a6549c27ad82809ce145ad52d4f1
React-jsi: 161428ab2c706d5fcd9878d260ff1513fdb356ab
Expand All @@ -1786,18 +1873,18 @@ SPEC CHECKSUMS:
React-jsitracing: 52b849a77d02e2dc262a3031454c23be8dabb4d9
React-logger: 8db32983d75dc2ad54f278f344ccb9b256e694fc
React-Mapbuffer: 1c08607305558666fd16678b85ef135e455d5c96
React-microtasksnativemodule: 87b8de96f937faefece8afd2cb3a518321b2ef99
react-native-quick-sqlite: 3499facf9b58206e7d6a3d49b4613565dc03a77d
react-native-safe-area-context: 851c62c48dce80ccaa5637b6aa5991a1bc36eca9
React-microtasksnativemodule: f13f03163b6a5ec66665dfe80a0df4468bb766a6
react-native-quick-sqlite: f5579dc8ba5a05aec0e940f0d859eaf9316538c7
react-native-safe-area-context: f1fda705dfe14355f41933debb5932887e234cc5
React-nativeconfig: 57781b79e11d5af7573e6f77cbf1143b71802a6d
React-NativeModulesApple: 7ff2e2cfb2e5fa5bdedcecf28ce37e696c6ef1e1
React-perflogger: 8a360ccf603de6ddbe9ff8f54383146d26e6c936
React-performancetimeline: 3cfec915adcb3653a5a633b41e711903844c35d8
React-RCTActionSheet: 1c0e26a88eec41215089cf4436e38188cfe9f01a
React-RCTAnimation: d87207841b1e2ae1389e684262ea8c73c887cb04
React-RCTAppDelegate: 4ec7824c0cc9cc4b146ca8ee0fd81b10c316a440
React-RCTAppDelegate: 328e56399c4f1c3d20cfe547ea24ebded2b3a87f
React-RCTBlob: 79b42cb7db55f34079297687a480dbcf37f023f6
React-RCTFabric: 1dd1661db93716f8cb116e451bd9c211a8d15716
React-RCTFabric: 27636a6a5fa5622159297fce26881945d3658cf6
React-RCTImage: 0c10a75de59f7384a2a55545d5f36fe783e6ecda
React-RCTLinking: bf08f4f655bf777af292b8d97449072c8bb196ca
React-RCTNetwork: 1b690846b40fc5685af58e088720657db6814637
Expand All @@ -1815,10 +1902,10 @@ SPEC CHECKSUMS:
React-utils: 81a715d9c0a2a49047e77a86f3a2247408540deb
ReactCodegen: 4eedb2fdd079174d6fc3c80b1cccafbe4ff1be8d
ReactCommon: 6ef348087d250257c44c0204461c03f036650e9b
RNScreens: 19719a9c326e925498ac3b2d35c4e50fe87afc06
RNScreens: de6e57426ba0e6cbc3fb5b4f496e7f08cb2773c2
SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d
Yoga: a1d7895431387402a674fd0d1c04ec85e87909b8

PODFILE CHECKSUM: 4bce8267d9986e5cfbfb8604f802585607b49854
PODFILE CHECKSUM: c6724dc625a6aa9f3f0577b2c2d3f9b39ece8968

COCOAPODS: 1.15.2
7 changes: 7 additions & 0 deletions example/ios/QuickSQLiteExample/AppDelegate.mm
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,11 @@ - (NSURL *)bundleURL
#endif
}

#ifdef RCT_NEW_ARCH_ENABLED
- (BOOL)bridgelessEnabled
{
return YES;
}
#endif

@end
2 changes: 1 addition & 1 deletion example/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"version": "8.1.0",
"private": true,
"scripts": {
"pods": "cd ios && bundle exec pod install",
"pods": "cd ios && RCT_NEW_ARCH_ENABLED=1 bundle exec pod install",
"android": "react-native run-android",
"ios": "react-native run-ios",
"start": "react-native start",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.margelo.rnquicksqlite;

import android.util.Log;

import androidx.annotation.NonNull;

import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;

public class RNQuickSQLiteModule extends NativeRNQuickSQLiteSpec {
public RNQuickSQLiteModule(ReactApplicationContext reactContext) {
super(reactContext);
}

@Override
@NonNull
public String getName() {
return NAME;
}

@Override
public boolean install() {
try {
QuickSQLiteBridge.instance.install(getReactApplicationContext());
return true;
} catch (Exception exception) {
Log.e(NAME, "Failed to install JSI Bindings!", exception);
return false;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package com.margelo.rnquicksqlite;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.module.model.ReactModuleInfo;
import com.facebook.react.module.model.ReactModuleInfoProvider;
import com.facebook.react.TurboReactPackage;

import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class RNQuickSQLitePackage extends TurboReactPackage {
static {
System.loadLibrary("RNQuickSQLite");
}

@Nullable
@Override
public NativeModule getModule(String name, ReactApplicationContext reactContext) {
if (name.equals(RNQuickSQLiteModule.NAME)) {
return new RNQuickSQLiteModule(reactContext);
} else {
return null;
}
}

@Override
public ReactModuleInfoProvider getReactModuleInfoProvider() {
return () -> {
final Map<String, ReactModuleInfo> moduleInfos = new HashMap<>();
moduleInfos.put(
RNQuickSQLiteModule.NAME,
new ReactModuleInfo(
RNQuickSQLiteModule.NAME,
RNQuickSQLiteModule.NAME,
false,
true,
true,
false,
true));
return moduleInfos;
};
}
}

This file was deleted.

This file was deleted.

17 changes: 14 additions & 3 deletions package/ios/QuickSQLite.h
Original file line number Diff line number Diff line change
@@ -1,8 +1,19 @@
#import <React/RCTBridgeModule.h>
#import <React/RCTInvalidating.h>
#ifdef RCT_NEW_ARCH_ENABLED
#import <RNQuickSQLite/RNQuickSQLite.h>

@interface QuickSQLite : NSObject <RCTBridgeModule, RCTInvalidating>
NS_ASSUME_NONNULL_BEGIN

@interface RNQuickSQLite : NSObject<NativeRNQuickSQLiteSpec>
#else
#import <React/RCTBridge.h>

@interface RNQuickSQLite : NSObject<RCTBridgeModule>
#endif

@property(nonatomic, assign) BOOL setBridgeOnMainQueue;

@end

#ifdef RCT_NEW_ARCH_ENABLED
NS_ASSUME_NONNULL_END
#endif
Loading