From a2ed03f60dae797a1d1788af5a67decdf290aff4 Mon Sep 17 00:00:00 2001 From: gladius Date: Mon, 7 Apr 2025 20:55:18 +0200 Subject: [PATCH] fix: missing check before unregistering receiver --- .../ConfigurationChangedBroadcastReceiver.kt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/orientationdirector/implementation/ConfigurationChangedBroadcastReceiver.kt b/android/src/main/java/com/orientationdirector/implementation/ConfigurationChangedBroadcastReceiver.kt index 1b6061e..ce94aa7 100644 --- a/android/src/main/java/com/orientationdirector/implementation/ConfigurationChangedBroadcastReceiver.kt +++ b/android/src/main/java/com/orientationdirector/implementation/ConfigurationChangedBroadcastReceiver.kt @@ -17,6 +17,8 @@ import com.facebook.react.bridge.ReactApplicationContext class ConfigurationChangedBroadcastReceiver internal constructor(private val context: ReactApplicationContext) : BroadcastReceiver() { + private var isRegistered = false + private var onReceiveCallback: ((intent: Intent?) -> Unit)? = null override fun onReceive(context: Context?, intent: Intent?) { @@ -40,10 +42,21 @@ class ConfigurationChangedBroadcastReceiver internal constructor(private val con } else { context.registerReceiver(this, filter) } + + isRegistered = true } fun unregister() { - context.unregisterReceiver(this) + if (!isRegistered) { + return + } + + try { + context.unregisterReceiver(this) + } catch(_: IllegalArgumentException) { + } finally { + isRegistered = false + } } companion object {