package com.deeplinkingwidget import android.appwidget.AppWidgetManager import android.content.ComponentName import android.content.Context import android.content.Intent import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.bridge.ReactContextBaseJavaModule import com.facebook.react.bridge.ReactMethod import com.facebook.react.bridge.Promise import com.facebook.react.bridge.ReadableMap class DeeplinkingWidgetModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) { override fun getName(): String { return NAME } // Example method // See https://reactnative.dev/docs/native-modules-android @ReactMethod fun multiply(a: Double, b: Double, promise: Promise) { promise.resolve(a * b) } companion object { const val NAME = "DeeplinkingWidget" } @ReactMethod fun onUpdate(data: ReadableMap) { // Handle widget update from JS // You might want to save data to SharedPreferences // and trigger a widget update val context = reactApplicationContext val prefs = context.getSharedPreferences("WidgetPrefs", Context.MODE_PRIVATE) val editor = prefs.edit() val dataMap = data.toHashMap() editor.putString("widgetData", dataMap.toString()) editor.apply() val appWidgetManager = AppWidgetManager.getInstance(context) val widgetIds = appWidgetManager.getAppWidgetIds( ComponentName(context, NewAppWidget::class.java) ) val updateIntent = Intent(context, NewAppWidget::class.java) updateIntent.action = AppWidgetManager.ACTION_APPWIDGET_UPDATE updateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, widgetIds) context.sendBroadcast(updateIntent) } // @ReactMethod // fun setWidgetUrl(url: String) { // val prefs = reactApplicationContext.getSharedPreferences("WidgetPrefs", Context.MODE_PRIVATE) // prefs.edit().putString("widgetUrl", url).apply() // triggerWidgetUpdate() // } // private fun triggerWidgetUpdate() { // val context = reactApplicationContext // val appWidgetManager = AppWidgetManager.getInstance(context) // val widgetIds = appWidgetManager.getAppWidgetIds( // ComponentName(context, NewAppWidget::class.java) // ) // val updateIntent = Intent(context, NewAppWidget::class.java) // updateIntent.action = AppWidgetManager.ACTION_APPWIDGET_UPDATE // updateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, widgetIds) // context.sendBroadcast(updateIntent) // } }