Android native module integration
Create module
package com.your.package.name.here
import com.facebook.react.bridge.Arguments
import com.facebook.react.bridge.Promise
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactContextBaseJavaModule
import com.facebook.react.bridge.ReactMethod
import com.facebook.react.modules.core.DeviceEventManagerModule
import nz.co.electricbolt.appfiguratelibrary.Appfigurate
import nz.co.electricbolt.appfiguratelibrary.Configuration
class AppfigurateModule internal constructor(context: ReactApplicationContext?) :
ReactContextBaseJavaModule(context) {
private var cachedConfiguration: Map<String, Any> =
Configuration.sharedConfiguration()._dictionaryFromConfiguration()
private var listenerCount = 0
init {
Appfigurate.addConfigurationUpdatedListener { action: String? ->
cachedConfiguration = Configuration.sharedConfiguration()._dictionaryFromConfiguration()
if (listenerCount > 0) {
val params = Arguments.createMap()
params.putString("APLConfigurationUpdatedAction", action)
reactApplicationContext.getJSModule(
DeviceEventManagerModule.RCTDeviceEventEmitter::class.java
).emit("APLConfigurationUpdated", params)
}
}
}
override fun getName(): String {
return "AppfigurateModule"
}
@ReactMethod
fun nativeValue(propertyName: String, result: Promise) {
result.resolve(cachedConfiguration[propertyName])
}
@ReactMethod
fun description(result: Promise) {
result.resolve(Configuration.sharedConfiguration().description())
}
@ReactMethod
fun modifications(result: Promise) {
result.resolve(Configuration.sharedConfiguration().modifications())
}
@ReactMethod
fun version(result: Promise) {
result.resolve(Appfigurate.version())
}
@ReactMethod
fun setLogging(logging: Boolean, result: Promise) {
Appfigurate.setLogging(logging)
result.resolve(null)
}
@ReactMethod
fun saveConfiguration(result: Promise) {
Appfigurate.saveConfiguration()
result.resolve(null)
}
@ReactMethod
fun restoreConfiguration(result: Promise) {
Appfigurate.restoreConfiguration()
result.resolve(null)
}
@ReactMethod
fun addListener(eventName: String?) {
listenerCount += 1
}
@ReactMethod
fun removeListeners(count: Int) {
listenerCount -= count
}
}
Create package
Register package
Last updated