feat: Add native module and package for custom functionality
This commit is contained in:
7
App.tsx
7
App.tsx
@@ -5,7 +5,7 @@ import {
|
||||
StyleSheet,
|
||||
Text,
|
||||
TouchableOpacity,
|
||||
Alert,
|
||||
Alert, NativeModules
|
||||
} from 'react-native';
|
||||
import { SafeAreaProvider } from 'react-native-safe-area-context';
|
||||
import { useState, useEffect } from 'react';
|
||||
@@ -14,6 +14,7 @@ import Register from './src/components/Register';
|
||||
import { authAPI } from './src/services/authAPI';
|
||||
import { networkService } from './src/services/networkService';
|
||||
type Screen = 'login' | 'register' | 'home';
|
||||
const { MyNativeModule } = NativeModules;
|
||||
|
||||
function App() {
|
||||
const isDarkMode = useColorScheme() === 'dark';
|
||||
@@ -25,6 +26,10 @@ function App() {
|
||||
// Initialize app
|
||||
useEffect(() => {
|
||||
initializeApp();
|
||||
console.log("MyNativeModule", MyNativeModule);
|
||||
MyNativeModule.greet("John").then((msg: any) => {
|
||||
console.log(msg);
|
||||
});
|
||||
|
||||
// Listen for network changes
|
||||
const unsubscribe = networkService.addListener((networkState) => {
|
||||
|
||||
@@ -10,13 +10,15 @@ import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
|
||||
class MainApplication : Application(), ReactApplication {
|
||||
|
||||
override val reactHost: ReactHost by lazy {
|
||||
|
||||
val packages = PackageList(this).packages.toMutableList()
|
||||
|
||||
// ✅ Add your custom package HERE (Kotlin syntax)
|
||||
packages.add(NativeModulesPackage())
|
||||
|
||||
getDefaultReactHost(
|
||||
context = applicationContext,
|
||||
packageList =
|
||||
PackageList(this).packages.apply {
|
||||
// Packages that cannot be autolinked yet can be added manually here, for example:
|
||||
// add(MyReactNativePackage())
|
||||
},
|
||||
packageList = packages,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
19
android/app/src/main/java/com/lynkeduppro/MyNativeModule.kt
Normal file
19
android/app/src/main/java/com/lynkeduppro/MyNativeModule.kt
Normal file
@@ -0,0 +1,19 @@
|
||||
package com.lynkeduppro
|
||||
|
||||
import com.facebook.react.bridge.ReactApplicationContext
|
||||
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
||||
import com.facebook.react.bridge.ReactMethod
|
||||
import com.facebook.react.bridge.Promise
|
||||
|
||||
class MyNativeModule(private val reactContext: ReactApplicationContext)
|
||||
: ReactContextBaseJavaModule(reactContext) {
|
||||
|
||||
override fun getName(): String {
|
||||
return "MyNativeModule" // JS module name
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
fun greet(name: String, promise: Promise) {
|
||||
promise.resolve("Hello $name from Android(Kotlin)!")
|
||||
}
|
||||
}
|
||||
19
android/app/src/main/java/com/lynkeduppro/MyNativePackage.kt
Normal file
19
android/app/src/main/java/com/lynkeduppro/MyNativePackage.kt
Normal file
@@ -0,0 +1,19 @@
|
||||
package com.lynkeduppro
|
||||
|
||||
import com.facebook.react.ReactPackage
|
||||
import com.facebook.react.bridge.NativeModule
|
||||
import com.facebook.react.bridge.ReactApplicationContext
|
||||
import com.facebook.react.uimanager.ViewManager
|
||||
|
||||
class NativeModulesPackage : ReactPackage {
|
||||
|
||||
override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> {
|
||||
return listOf(
|
||||
MyNativeModule(reactContext)
|
||||
)
|
||||
}
|
||||
|
||||
override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
|
||||
return emptyList()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user