Skip to content

Commit

Permalink
Merge pull request #5 from talknagish/shared-cpp-jsi
Browse files Browse the repository at this point in the history
Shared c++ JSI library
  • Loading branch information
Alon E committed Apr 16, 2022
2 parents 5593ca3 + 952aa18 commit 7ce30b0
Show file tree
Hide file tree
Showing 12 changed files with 98 additions and 11 deletions.
8 changes: 0 additions & 8 deletions android/cpp-adapter.cpp

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,21 @@ class TurboStarterModule(reactContext: ReactApplicationContext?) :
return batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY).toDouble()
}

override fun turboMultiply(num1: Double, num2: Double): Double {
return nativeMultiply(num1, num2)
}

override fun getName(): String {
return NAME
}

private external fun nativeMultiply(num1: Double, num2: Double): Double

companion object {
const val NAME = "TurboStarter"

init {
System.loadLibrary("reactnativeturbostarter-jni")
}
}
}
10 changes: 10 additions & 0 deletions android/src/main/jni/cpp-adapter.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#include <jni.h>
#include "react-native-turbo-starter.h"
#include "log.h"

extern "C" JNIEXPORT jdouble JNICALL
Java_com_reactnativeturbostarter_TurboStarterModule_nativeMultiply(JNIEnv *env, jclass type, jdouble num1, jdouble num2)
{
LOGI("Calling nativeMultiply");
return turbostarter::multiply(num1, num2);
}
18 changes: 18 additions & 0 deletions android/src/main/jni/log.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#include <android/log.h>
#include <stdio.h>

#define APP_LOG_TAG "reactnativeturbostarter-jni"

#define _APP_LOG(level, tag, ...) \
do \
{ \
((void)__android_log_print(level, tag, __VA_ARGS__)); \
printf(__VA_ARGS__); \
printf("\n"); \
fflush(stdout); \
} while (0)

#define LOGD(...) _APP_LOG(ANDROID_LOG_DEBUG, APP_LOG_TAG, __VA_ARGS__)
#define LOGI(...) _APP_LOG(ANDROID_LOG_INFO, APP_LOG_TAG, __VA_ARGS__)
#define LOGW(...) _APP_LOG(ANDROID_LOG_WARN, APP_LOG_TAG, __VA_ARGS__)
#define LOGE(...) _APP_LOG(ANDROID_LOG_ERROR, APP_LOG_TAG, __VA_ARGS__)
4 changes: 4 additions & 0 deletions cpp/react-native-turbo-starter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,8 @@

namespace turbostarter
{
double multiply(double num1, double num2)
{
return num1 * num2;
}
}
2 changes: 1 addition & 1 deletion cpp/react-native-turbo-starter.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

namespace turbostarter
{

double multiply(double num1, double num2);
}

#endif /* TURBOSTARTER_H */
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material"
android:insetRight="@dimen/abc_edit_text_inset_horizontal_material"
android:insetTop="@dimen/abc_edit_text_inset_top_material"
android:insetBottom="@dimen/abc_edit_text_inset_bottom_material">

<selector>
<!--
This file is a copy of abc_edit_text_material (https://bit.ly/3k8fX7I).
The item below with state_pressed="false" and state_focused="false" causes a NullPointerException.
NullPointerException:tempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)'
<item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
For more info, see https://bit.ly/3CdLStv (react-native/pull/29452) and https://bit.ly/3nxOMoR.
-->
<item android:state_enabled="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
<item android:drawable="@drawable/abc_textfield_activated_mtrl_alpha"/>
</selector>

</inset>
4 changes: 2 additions & 2 deletions example/android/app/src/main/res/values/styles.xml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:textColor">#000000</item>
<item name="android:editTextBackground">@drawable/rn_edit_text_material</item>
</style>

</resources>
3 changes: 3 additions & 0 deletions example/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import {
getTurboObject,
getTurboObjectGeneric,
getTurboPromise,
turboMultiply,
} from 'react-native-turbo-starter';

const Section: React.FC<{
Expand Down Expand Up @@ -90,6 +91,8 @@ const App = () => {
getTurboPromise(1).then((res) => console.log('t3', res));

console.log('batteryLevel', getBatteryLevel());

console.log(turboMultiply(3, 3));
}, []);

const backgroundStyle = {
Expand Down
5 changes: 5 additions & 0 deletions ios/TurboStarter.mm
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,11 @@ - (NSNumber *)getBatteryLevel {
return @(UIDevice.currentDevice.batteryLevel * 100);
}

- (NSNumber *) turboMultiply:(double)num1 num2:(double)num2{
double res = turbostarter::multiply(num1, num2);
return [NSNumber numberWithDouble:res];
}

+ (NSString *)moduleName {
return @"TurboStarter";
}
Expand Down
5 changes: 5 additions & 0 deletions src/NativeTurboStarter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@ export interface Spec extends TurboModule {
// Native JSI calls
//
getBatteryLevel(): number;

//
// C++ shared code
//
turboMultiply(num1: number, num2: number): number;
}

// We know the module is going to be load so we export with the "!" so it doesn't add undefined to every function return value
Expand Down
4 changes: 4 additions & 0 deletions src/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,7 @@ export async function getTurboPromise(magicNumber: number) {
export function getBatteryLevel() {
return NativeTurboStarter.getBatteryLevel();
}

export function turboMultiply(num1: number, num2: number) {
return NativeTurboStarter.turboMultiply(num1, num2);
}

0 comments on commit 7ce30b0

Please sign in to comment.