package com.jedaireactnativepackage import com.anagog.jedai.anagog_api.AnagogApi import com.anagog.jedai.anagog_api.callbacks.EncodedEnrichmentReportHandler import com.anagog.jedai.ui.JedaiUI import com.anagog.jedai.ui.model.NotificationPayload import com.facebook.react.ReactApplication import com.facebook.react.ReactPackage import com.facebook.react.bridge.NativeModule import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.uimanager.ViewManager import com.jedaireactnativepackage.package_callbacks.PackageCampaignTriggeredHandler import com.jedaireactnativepackage.package_callbacks.PackageEncodedEnrichmentHandler import com.jedaireactnativepackage.package_callbacks.PackageNotificationApprovalHandler import com.jedaireactnativepackage.package_callbacks.PackageNotificationClickedHandler import com.jedaireactnativepackage.package_callbacks.PackageReportSnapshotHandler import com.jedaireactnativepackage.react_bridge.EventEmitter import com.jedaireactnativepackage.react_bridge.HeadlessEmitter import com.jedaireactnativepackage.react_bridge.JedaiModule class JedaiReactNativePackage : ReactPackage { override fun createNativeModules(reactContext: ReactApplicationContext): List { EventEmitter.setContext(reactContext) HeadlessEmitter.setContext(reactContext) return listOf(JedaiModule(reactContext)) } override fun createViewManagers(reactContext: ReactApplicationContext): List> { return emptyList() } companion object { @JvmStatic fun attachHostApplication(context: ReactApplication){ context.reactNativeHost.reactInstanceManager.createReactContextInBackground() } @JvmStatic fun eventToNotificationPayload(userObject: Map) : NotificationPayload? { return JedaiUI.eventToNotificationPayload(userObject) } @JvmStatic fun hasInterstitialNotification(userObject: Map) : Boolean{ return JedaiUI.hasInterstitialNotificationPayload(userObject) } @JvmStatic fun hasLocalNotificationPayload(userObject: Map) : Boolean{ return JedaiUI.hasLocalNotificationPayload(userObject) } @JvmStatic fun setOnNotificationClickHandler(handler: PackageNotificationClickedHandler) { AnagogApi.setNotificationClickHandler { executed, action, payload -> handler.onNotificationClicked(executed, action, payload) } } @JvmStatic fun setNotificationApprovalHandler(handler: PackageNotificationApprovalHandler) { AnagogApi.setNotificationApprovalHandler { handler.onNotificationApproval(it) } } @JvmStatic fun setCampaignTriggeredHandler(handler: PackageCampaignTriggeredHandler) { AnagogApi.setCampaignTriggeredHandler {action, userObject -> // startHeadlessService(context, userObject["campaign_identifier"] as String?) val params = mutableMapOf() params.putAll(userObject) params["custom_data"] = JedaiUI.eventToNotificationPayload(userObject)?.customData handler.onCampaignTriggered(action, params) } } @JvmStatic fun setOnSnapshotReportHandler(handler: PackageReportSnapshotHandler) { AnagogApi.setReportSnapshotHandler { handler.onReportSnapshot(it) } } @JvmStatic fun setEncodedEnrichmentHandler(handler: PackageEncodedEnrichmentHandler){ AnagogApi.setEncodedEnrichmentHandler(object : EncodedEnrichmentReportHandler{ override fun onEncodedEnrichment(payload: Map>) { handler.onEncodedEnrichmentReport(payload) } }) } } }