From 73b638115181a7738bc99bbdea26c4f582240053 Mon Sep 17 00:00:00 2001
From: mcarare <48995920+mcarare@users.noreply.github.com>
Date: Tue, 2 May 2023 15:41:11 +0300
Subject: [PATCH] Bug 1830874 - Update onSharedPreferenceChanged method
signature.
onSharedPreferenceChanged now allows a nullable key String.
---
.../fenix/settings/OnSharedPreferenceChangeListener.kt | 10 +++++++---
.../settings/OnSharedPreferenceChangeListenerTest.kt | 2 +-
detekt-baseline.xml | 1 -
3 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/app/src/main/java/org/mozilla/fenix/settings/OnSharedPreferenceChangeListener.kt b/app/src/main/java/org/mozilla/fenix/settings/OnSharedPreferenceChangeListener.kt
index f57e9cb86..8c15aeb9b 100644
--- a/app/src/main/java/org/mozilla/fenix/settings/OnSharedPreferenceChangeListener.kt
+++ b/app/src/main/java/org/mozilla/fenix/settings/OnSharedPreferenceChangeListener.kt
@@ -6,11 +6,12 @@ package org.mozilla.fenix.settings
import android.content.SharedPreferences
import androidx.lifecycle.DefaultLifecycleObserver
+import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.LifecycleOwner
class OnSharedPreferenceChangeListener(
private val sharedPreferences: SharedPreferences,
- private val listener: (SharedPreferences, String) -> Unit,
+ private val listener: (SharedPreferences, String?) -> Unit,
) : SharedPreferences.OnSharedPreferenceChangeListener, DefaultLifecycleObserver {
override fun onCreate(owner: LifecycleOwner) {
@@ -21,14 +22,17 @@ class OnSharedPreferenceChangeListener(
sharedPreferences.unregisterOnSharedPreferenceChangeListener(this)
}
- override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String) {
+ override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String?) {
listener(sharedPreferences, key)
}
}
+/**
+ * Registers a [OnSharedPreferenceChangeListener] as a [LifecycleObserver] for a preference.
+ */
fun SharedPreferences.registerOnSharedPreferenceChangeListener(
owner: LifecycleOwner,
- listener: (SharedPreferences, String) -> Unit,
+ listener: (SharedPreferences, String?) -> Unit,
) {
owner.lifecycle.addObserver(OnSharedPreferenceChangeListener(this, listener))
}
diff --git a/app/src/test/java/org/mozilla/fenix/settings/OnSharedPreferenceChangeListenerTest.kt b/app/src/test/java/org/mozilla/fenix/settings/OnSharedPreferenceChangeListenerTest.kt
index 3276c9b53..2a52e1edd 100644
--- a/app/src/test/java/org/mozilla/fenix/settings/OnSharedPreferenceChangeListenerTest.kt
+++ b/app/src/test/java/org/mozilla/fenix/settings/OnSharedPreferenceChangeListenerTest.kt
@@ -20,7 +20,7 @@ import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
class OnSharedPreferenceChangeListenerTest {
private lateinit var sharedPrefs: SharedPreferences
- private lateinit var listener: (SharedPreferences, String) -> Unit
+ private lateinit var listener: (SharedPreferences, String?) -> Unit
private lateinit var owner: LifecycleOwner
private lateinit var lifecycleRegistry: LifecycleRegistry
diff --git a/detekt-baseline.xml b/detekt-baseline.xml
index ec1719a4b..eebc47d7e 100644
--- a/detekt-baseline.xml
+++ b/detekt-baseline.xml
@@ -721,7 +721,6 @@
UndocumentedPublicFunction:NavController.kt$fun NavController.navigateSafe( @IdRes resId: Int, directions: NavDirections, )
UndocumentedPublicFunction:NimbusBranchesView.kt$NimbusBranchesView$fun update(state: NimbusBranchesState)
UndocumentedPublicFunction:NotificationManager.kt$NotificationManager$fun showReceivedTabs(context: Context, device: Device?, tabs: List<TabData>)
- UndocumentedPublicFunction:OnSharedPreferenceChangeListener.kt$fun SharedPreferences.registerOnSharedPreferenceChangeListener( owner: LifecycleOwner, listener: (SharedPreferences, String) -> Unit, )
UndocumentedPublicFunction:OnboardingRadioButton.kt$OnboardingRadioButton$fun addIllustration(illustration: ImageView)
UndocumentedPublicFunction:OnboardingRadioButton.kt$OnboardingRadioButton$fun onClickListener(listener: () -> Unit)
UndocumentedPublicFunction:OnboardingSectionHeaderViewHolder.kt$OnboardingSectionHeaderViewHolder$fun bind(labelBuilder: (Context) -> String)