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)