From 596c579bbbdcd50da18faf0bd5cf5b7eb541f358 Mon Sep 17 00:00:00 2001 From: Tiger Oakes Date: Mon, 15 Jun 2020 11:24:14 -0700 Subject: [PATCH] Replace nullable findPreference --- .../fenix/settings/AccessibilityFragment.kt | 21 ++-- .../fenix/settings/DataChoicesFragment.kt | 6 +- .../fenix/settings/PrivateBrowsingFragment.kt | 8 +- .../fenix/settings/SettingsFragment.kt | 77 ++++++-------- .../account/AccountSettingsFragment.kt | 100 +++++++----------- .../DeleteBrowsingDataOnQuitFragment.kt | 10 +- .../logins/SavedLoginsAuthFragment.kt | 20 ++-- .../settings/search/SearchEngineFragment.kt | 40 +++---- 8 files changed, 118 insertions(+), 164 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/settings/AccessibilityFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/AccessibilityFragment.kt index 467b22134..a32872f62 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/AccessibilityFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/AccessibilityFragment.kt @@ -9,7 +9,6 @@ import androidx.preference.PreferenceFragmentCompat import androidx.preference.SwitchPreference import org.mozilla.fenix.R import org.mozilla.fenix.ext.components -import org.mozilla.fenix.ext.getPreferenceKey import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.showToolbar @@ -24,11 +23,11 @@ class AccessibilityFragment : PreferenceFragmentCompat() { super.onResume() showToolbar(getString(R.string.preferences_accessibility)) - val forceZoomPreference = findPreference( - getPreferenceKey(R.string.pref_key_accessibility_force_enable_zoom) + val forceZoomPreference = requirePreference( + R.string.pref_key_accessibility_force_enable_zoom ) - forceZoomPreference?.setOnPreferenceChangeListener { preference, shouldForce -> + forceZoomPreference.setOnPreferenceChangeListener { preference, shouldForce -> val settings = preference.context.settings() val components = preference.context.components @@ -38,10 +37,10 @@ class AccessibilityFragment : PreferenceFragmentCompat() { true } - val textSizePreference = findPreference( - getPreferenceKey(R.string.pref_key_accessibility_font_scale) + val textSizePreference = requirePreference( + R.string.pref_key_accessibility_font_scale ) - textSizePreference?.setOnPreferenceChangeListener { preference, newTextSize -> + textSizePreference.setOnPreferenceChangeListener { preference, newTextSize -> val settings = preference.context.settings() val components = preference.context.components @@ -56,11 +55,11 @@ class AccessibilityFragment : PreferenceFragmentCompat() { components.useCases.sessionUseCases.reload() true } - textSizePreference?.isVisible = !requireContext().settings().shouldUseAutoSize + textSizePreference.isVisible = !requireContext().settings().shouldUseAutoSize val useAutoSizePreference = - findPreference(getPreferenceKey(R.string.pref_key_accessibility_auto_size)) - useAutoSizePreference?.setOnPreferenceChangeListener { preference, useAutoSize -> + requirePreference(R.string.pref_key_accessibility_auto_size) + useAutoSizePreference.setOnPreferenceChangeListener { preference, useAutoSize -> val settings = preference.context.settings() val components = preference.context.components @@ -74,7 +73,7 @@ class AccessibilityFragment : PreferenceFragmentCompat() { components.core.engine.settings.fontSizeFactor = settings.fontSizeFactor } // Show the manual sizing controls if automatic sizing is turned off. - textSizePreference?.isVisible = !useAutoSize + textSizePreference.isVisible = !useAutoSize // Reload the current session to reflect the new text scale components.useCases.sessionUseCases.reload() diff --git a/app/src/main/java/org/mozilla/fenix/settings/DataChoicesFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/DataChoicesFragment.kt index d57cacd9e..0579c9b5f 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/DataChoicesFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/DataChoicesFragment.kt @@ -50,7 +50,7 @@ class DataChoicesFragment : PreferenceFragmentCompat() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.data_choices_preferences, rootKey) - findPreference(getPreferenceKey(R.string.pref_key_telemetry))?.apply { + requirePreference(R.string.pref_key_telemetry).apply { isChecked = context.settings().isTelemetryEnabled val appName = context.getString(R.string.app_name) @@ -59,7 +59,7 @@ class DataChoicesFragment : PreferenceFragmentCompat() { onPreferenceChangeListener = SharedPreferenceUpdater() } - findPreference(getPreferenceKey(R.string.pref_key_marketing_telemetry))?.apply { + requirePreference(R.string.pref_key_marketing_telemetry).apply { isChecked = context.settings().isMarketingTelemetryEnabled val appName = context.getString(R.string.app_name) @@ -68,7 +68,7 @@ class DataChoicesFragment : PreferenceFragmentCompat() { onPreferenceChangeListener = SharedPreferenceUpdater() } - findPreference(getPreferenceKey(R.string.pref_key_experimentation))?.apply { + requirePreference(R.string.pref_key_experimentation).apply { isChecked = context.settings().isExperimentationEnabled isVisible = Config.channel.isReleaseOrBeta onPreferenceChangeListener = SharedPreferenceUpdater() diff --git a/app/src/main/java/org/mozilla/fenix/settings/PrivateBrowsingFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/PrivateBrowsingFragment.kt index deaf0b67c..da2d9c2e4 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/PrivateBrowsingFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/PrivateBrowsingFragment.kt @@ -12,7 +12,6 @@ import org.mozilla.fenix.R import org.mozilla.fenix.components.PrivateShortcutCreateManager import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.ext.checkAndUpdateScreenshotPermission -import org.mozilla.fenix.ext.getPreferenceKey import org.mozilla.fenix.ext.metrics import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.showToolbar @@ -32,7 +31,7 @@ class PrivateBrowsingFragment : PreferenceFragmentCompat() { } private fun updatePreferences() { - findPreference(getPreferenceKey(R.string.pref_key_add_private_browsing_shortcut))?.apply { + requirePreference(R.string.pref_key_add_private_browsing_shortcut).apply { setOnPreferenceClickListener { requireContext().metrics.track(Event.PrivateBrowsingCreateShortcut) PrivateShortcutCreateManager.createPrivateShortcut(requireContext()) @@ -40,13 +39,12 @@ class PrivateBrowsingFragment : PreferenceFragmentCompat() { } } - findPreference(getPreferenceKey(R.string.pref_key_open_links_in_a_private_tab))?.apply { + requirePreference(R.string.pref_key_open_links_in_a_private_tab).apply { onPreferenceChangeListener = SharedPreferenceUpdater() isChecked = context.settings().openLinksInAPrivateTab } - findPreference(getPreferenceKey - (R.string.pref_key_allow_screenshots_in_private_mode))?.apply { + requirePreference(R.string.pref_key_allow_screenshots_in_private_mode).apply { onPreferenceChangeListener = object : SharedPreferenceUpdater() { override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean { return super.onPreferenceChange(preference, newValue).also { diff --git a/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt index a538938ff..1a1a2cc2f 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt @@ -17,7 +17,6 @@ import androidx.appcompat.content.res.AppCompatResources import androidx.lifecycle.lifecycleScope import androidx.navigation.NavDirections import androidx.navigation.findNavController -import androidx.navigation.fragment.findNavController import androidx.preference.Preference import androidx.preference.PreferenceCategory import androidx.preference.PreferenceFragmentCompat @@ -137,8 +136,8 @@ class SettingsFragment : PreferenceFragmentCompat() { private fun update(shouldUpdateAccountUIState: Boolean) { val trackingProtectionPreference = - findPreference(getPreferenceKey(R.string.pref_key_tracking_protection_settings)) - trackingProtectionPreference?.summary = context?.let { + requirePreference(R.string.pref_key_tracking_protection_settings) + trackingProtectionPreference.summary = context?.let { if (it.settings().shouldUseTrackingProtection) { getString(R.string.tracking_protection_on) } else { @@ -146,21 +145,13 @@ class SettingsFragment : PreferenceFragmentCompat() { } } - val toolbarPreference = - findPreference(getPreferenceKey(R.string.pref_key_toolbar)) - toolbarPreference?.summary = context?.settings()?.toolbarSettingString - - val aboutPreference = findPreference(getPreferenceKey(R.string.pref_key_about)) + val aboutPreference = requirePreference(R.string.pref_key_about) val appName = getString(R.string.app_name) - aboutPreference?.title = getString(R.string.preferences_about, appName) + aboutPreference.title = getString(R.string.preferences_about, appName) val deleteBrowsingDataPreference = - findPreference( - getPreferenceKey( - R.string.pref_key_delete_browsing_data_on_quit_preference - ) - ) - deleteBrowsingDataPreference?.summary = context?.let { + requirePreference(R.string.pref_key_delete_browsing_data_on_quit_preference) + deleteBrowsingDataPreference.summary = context?.let { if (it.settings().shouldDeleteBrowsingDataOnQuit) { getString(R.string.delete_browsing_data_quit_on) } else { @@ -291,11 +282,10 @@ class SettingsFragment : PreferenceFragmentCompat() { private fun setupPreferences() { val leakKey = getPreferenceKey(R.string.pref_key_leakcanary) val debuggingKey = getPreferenceKey(R.string.pref_key_remote_debugging) - val makeDefaultBrowserKey = getPreferenceKey(R.string.pref_key_make_default_browser) val preferenceLeakCanary = findPreference(leakKey) val preferenceRemoteDebugging = findPreference(debuggingKey) - val preferenceMakeDefaultBrowser = findPreference(makeDefaultBrowserKey) + val preferenceMakeDefaultBrowser = requirePreference(R.string.pref_key_make_default_browser) if (!Config.channel.isReleased) { preferenceLeakCanary?.setOnPreferenceChangeListener { _, newValue -> @@ -312,7 +302,7 @@ class SettingsFragment : PreferenceFragmentCompat() { true } - preferenceMakeDefaultBrowser?.onPreferenceClickListener = + preferenceMakeDefaultBrowser.onPreferenceClickListener = getClickListenerForMakeDefaultBrowser() val preferenceFxAOverride = @@ -365,8 +355,7 @@ class SettingsFragment : PreferenceFragmentCompat() { } private fun updateMakeDefaultBrowserPreference() { - findPreference(getPreferenceKey(R.string.pref_key_make_default_browser)) - ?.updateSwitch() + requirePreference(R.string.pref_key_make_default_browser).updateSwitch() } private fun navigateFromSettings(directions: NavDirections) { @@ -395,17 +384,13 @@ class SettingsFragment : PreferenceFragmentCompat() { */ private fun updateAccountUIState(context: Context, profile: Profile?) { val preferenceSignIn = - findPreference(context.getPreferenceKey(R.string.pref_key_sign_in)) + requirePreference(R.string.pref_key_sign_in) val preferenceFirefoxAccount = - findPreference(context.getPreferenceKey(R.string.pref_key_account)) + requirePreference(R.string.pref_key_account) val preferenceFirefoxAccountAuthError = - findPreference( - context.getPreferenceKey( - R.string.pref_key_account_auth_error - ) - ) + requirePreference(R.string.pref_key_account_auth_error) val accountPreferenceCategory = - findPreference(context.getPreferenceKey(R.string.pref_key_account_category)) + requirePreference(R.string.pref_key_account_category) val accountManager = requireComponents.backgroundServices.accountManager val account = accountManager.authenticatedAccount() @@ -414,44 +399,44 @@ class SettingsFragment : PreferenceFragmentCompat() { // Signed-in, no problems. if (account != null && !accountManager.accountNeedsReauth()) { - preferenceSignIn?.isVisible = false + preferenceSignIn.isVisible = false profile?.avatar?.url?.let { avatarUrl -> lifecycleScope.launch(Main) { val roundedDrawable = avatarUrl.toRoundedDrawable(context, requireComponents.core.client) - preferenceFirefoxAccount?.icon = + preferenceFirefoxAccount.icon = roundedDrawable ?: AppCompatResources.getDrawable( context, R.drawable.ic_account ) } } - preferenceSignIn?.onPreferenceClickListener = null - preferenceFirefoxAccountAuthError?.isVisible = false - preferenceFirefoxAccount?.isVisible = true - accountPreferenceCategory?.isVisible = true + preferenceSignIn.onPreferenceClickListener = null + preferenceFirefoxAccountAuthError.isVisible = false + preferenceFirefoxAccount.isVisible = true + accountPreferenceCategory.isVisible = true - preferenceFirefoxAccount?.displayName = profile?.displayName - preferenceFirefoxAccount?.email = profile?.email + preferenceFirefoxAccount.displayName = profile?.displayName + preferenceFirefoxAccount.email = profile?.email // Signed-in, need to re-authenticate. } else if (account != null && accountManager.accountNeedsReauth()) { - preferenceFirefoxAccount?.isVisible = false - preferenceFirefoxAccountAuthError?.isVisible = true - accountPreferenceCategory?.isVisible = true + preferenceFirefoxAccount.isVisible = false + preferenceFirefoxAccountAuthError.isVisible = true + accountPreferenceCategory.isVisible = true - preferenceSignIn?.isVisible = false - preferenceSignIn?.onPreferenceClickListener = null + preferenceSignIn.isVisible = false + preferenceSignIn.onPreferenceClickListener = null - preferenceFirefoxAccountAuthError?.email = profile?.email + preferenceFirefoxAccountAuthError.email = profile?.email // Signed-out. } else { - preferenceSignIn?.isVisible = true - preferenceFirefoxAccount?.isVisible = false - preferenceFirefoxAccountAuthError?.isVisible = false - accountPreferenceCategory?.isVisible = false + preferenceSignIn.isVisible = true + preferenceFirefoxAccount.isVisible = false + preferenceFirefoxAccountAuthError.isVisible = false + accountPreferenceCategory.isVisible = false } } diff --git a/app/src/main/java/org/mozilla/fenix/settings/account/AccountSettingsFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/account/AccountSettingsFragment.kt index 258756a99..320573e65 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/account/AccountSettingsFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/account/AccountSettingsFragment.kt @@ -46,6 +46,7 @@ import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.ext.secure import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.showToolbar +import org.mozilla.fenix.settings.requirePreference @SuppressWarnings("TooManyFunctions", "LargeClass") class AccountSettingsFragment : PreferenceFragmentCompat() { @@ -129,29 +130,26 @@ class AccountSettingsFragment : PreferenceFragmentCompat() { accountManager.register(accountStateObserver, this, true) // Sign out - val signOut = getPreferenceKey(R.string.pref_key_sign_out) - val preferenceSignOut = findPreference(signOut) - preferenceSignOut?.onPreferenceClickListener = getClickListenerForSignOut() + val preferenceSignOut = requirePreference(R.string.pref_key_sign_out) + preferenceSignOut.onPreferenceClickListener = getClickListenerForSignOut() // Sync now - val syncNow = getPreferenceKey(R.string.pref_key_sync_now) - val preferenceSyncNow = findPreference(syncNow) - preferenceSyncNow?.let { - it.onPreferenceClickListener = getClickListenerForSyncNow() + val preferenceSyncNow = requirePreference(R.string.pref_key_sync_now) + preferenceSyncNow.apply { + onPreferenceClickListener = getClickListenerForSyncNow() // Current sync state if (requireComponents.backgroundServices.accountManager.isSyncActive()) { - it.title = getString(R.string.sync_syncing_in_progress) - it.isEnabled = false + title = getString(R.string.sync_syncing_in_progress) + isEnabled = false } else { - it.isEnabled = true + isEnabled = true } } // Device Name val deviceConstellation = accountManager.authenticatedAccount()?.deviceConstellation() - val deviceNameKey = getPreferenceKey(R.string.pref_key_sync_device_name) - findPreference(deviceNameKey)?.apply { + requirePreference(R.string.pref_key_sync_device_name).apply { onPreferenceChangeListener = getChangeListenerForDeviceName() deviceConstellation?.state()?.currentDevice?.let { device -> summary = device.displayName @@ -168,8 +166,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat() { updateSyncEngineStates() setDisabledWhileSyncing(accountManager.isSyncActive()) - val historyNameKey = getPreferenceKey(R.string.pref_key_sync_history) - findPreference(historyNameKey)?.apply { + requirePreference(R.string.pref_key_sync_history).apply { setOnPreferenceChangeListener { _, newValue -> SyncEnginesStorage(context).setStatus(SyncEngine.History, newValue as Boolean) @Suppress("DeferredResultUnused") @@ -178,8 +175,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat() { } } - val bookmarksNameKey = getPreferenceKey(R.string.pref_key_sync_bookmarks) - findPreference(bookmarksNameKey)?.apply { + requirePreference(R.string.pref_key_sync_bookmarks).apply { setOnPreferenceChangeListener { _, newValue -> SyncEnginesStorage(context).setStatus(SyncEngine.Bookmarks, newValue as Boolean) @Suppress("DeferredResultUnused") @@ -188,8 +184,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat() { } } - val loginsNameKey = getPreferenceKey(R.string.pref_key_sync_logins) - findPreference(loginsNameKey)?.apply { + requirePreference(R.string.pref_key_sync_logins).apply { setOnPreferenceChangeListener { _, newValue -> val manager = activity?.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager @@ -207,8 +202,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat() { } } - val tabsNameKey = getPreferenceKey(R.string.pref_key_sync_tabs) - findPreference(tabsNameKey)?.apply { + requirePreference(R.string.pref_key_sync_tabs).apply { setOnPreferenceChangeListener { _, newValue -> SyncEnginesStorage(context).setStatus(SyncEngine.Tabs, newValue as Boolean) @Suppress("DeferredResultUnused") @@ -259,23 +253,19 @@ class AccountSettingsFragment : PreferenceFragmentCompat() { private fun updateSyncEngineStates() { val syncEnginesStatus = SyncEnginesStorage(requireContext()).getStatus() - val bookmarksNameKey = getPreferenceKey(R.string.pref_key_sync_bookmarks) - findPreference(bookmarksNameKey)?.apply { + requirePreference(R.string.pref_key_sync_bookmarks).apply { isEnabled = syncEnginesStatus.containsKey(SyncEngine.Bookmarks) isChecked = syncEnginesStatus.getOrElse(SyncEngine.Bookmarks) { true } } - val historyNameKey = getPreferenceKey(R.string.pref_key_sync_history) - findPreference(historyNameKey)?.apply { + requirePreference(R.string.pref_key_sync_history).apply { isEnabled = syncEnginesStatus.containsKey(SyncEngine.History) isChecked = syncEnginesStatus.getOrElse(SyncEngine.History) { true } } - val loginsNameKey = getPreferenceKey(R.string.pref_key_sync_logins) - findPreference(loginsNameKey)?.apply { + requirePreference(R.string.pref_key_sync_logins).apply { isEnabled = syncEnginesStatus.containsKey(SyncEngine.Passwords) isChecked = syncEnginesStatus.getOrElse(SyncEngine.Passwords) { true } } - val tabsNameKey = getPreferenceKey(R.string.pref_key_sync_tabs) - findPreference(tabsNameKey)?.apply { + requirePreference(R.string.pref_key_sync_tabs).apply { isVisible = FeatureFlags.syncedTabs isEnabled = syncEnginesStatus.containsKey(SyncEngine.Tabs) isChecked = syncEnginesStatus.getOrElse(SyncEngine.Tabs) { FeatureFlags.syncedTabs } @@ -342,22 +332,18 @@ class AccountSettingsFragment : PreferenceFragmentCompat() { } private fun setDisabledWhileSyncing(isSyncing: Boolean) { - findPreference( - getPreferenceKey(R.string.preferences_sync_category) - )?.isEnabled = !isSyncing - - findPreference( - getPreferenceKey(R.string.pref_key_sync_device_name) - )?.isEnabled = !isSyncing + requirePreference(R.string.preferences_sync_category).isEnabled = !isSyncing + requirePreference(R.string.pref_key_sync_device_name).isEnabled = !isSyncing } private val syncStatusObserver = object : SyncStatusObserver { + private val pref by lazy { requirePreference(R.string.pref_key_sync_now) } + override fun onStarted() { viewLifecycleOwner.lifecycleScope.launch { - val pref = findPreference(getPreferenceKey(R.string.pref_key_sync_now)) view?.announceForAccessibility(getString(R.string.sync_syncing_in_progress)) - pref?.title = getString(R.string.sync_syncing_in_progress) - pref?.isEnabled = false + pref.title = getString(R.string.sync_syncing_in_progress) + pref.isEnabled = false setDisabledWhileSyncing(true) } } @@ -365,14 +351,11 @@ class AccountSettingsFragment : PreferenceFragmentCompat() { // Sync stopped successfully. override fun onIdle() { viewLifecycleOwner.lifecycleScope.launch { - val pref = findPreference(getPreferenceKey(R.string.pref_key_sync_now)) - pref?.let { - pref.title = getString(R.string.preferences_sync_now) - pref.isEnabled = true + pref.title = getString(R.string.preferences_sync_now) + pref.isEnabled = true - val time = getLastSynced(requireContext()) - accountSettingsStore.dispatch(AccountSettingsFragmentAction.SyncEnded(time)) - } + val time = getLastSynced(requireContext()) + accountSettingsStore.dispatch(AccountSettingsFragmentAction.SyncEnded(time)) // Make sure out sync engine checkboxes are up-to-date. updateSyncEngineStates() setDisabledWhileSyncing(false) @@ -382,19 +365,16 @@ class AccountSettingsFragment : PreferenceFragmentCompat() { // Sync stopped after encountering a problem. override fun onError(error: Exception?) { viewLifecycleOwner.lifecycleScope.launch { - val pref = findPreference(getPreferenceKey(R.string.pref_key_sync_now)) - pref?.let { - pref.title = getString(R.string.preferences_sync_now) - // We want to only enable the sync button, and not the checkboxes here - pref.isEnabled = true + pref.title = getString(R.string.preferences_sync_now) + // We want to only enable the sync button, and not the checkboxes here + pref.isEnabled = true - val failedTime = getLastSynced(requireContext()) - accountSettingsStore.dispatch( - AccountSettingsFragmentAction.SyncFailed( - failedTime - ) + val failedTime = getLastSynced(requireContext()) + accountSettingsStore.dispatch( + AccountSettingsFragmentAction.SyncFailed( + failedTime ) - } + ) } } } @@ -408,9 +388,8 @@ class AccountSettingsFragment : PreferenceFragmentCompat() { } private fun updateDeviceName(state: AccountSettingsFragmentState) { - val deviceNameKey = getPreferenceKey(R.string.pref_key_sync_device_name) - val preferenceDeviceName = findPreference(deviceNameKey) - preferenceDeviceName?.summary = state.deviceName + val preferenceDeviceName = requirePreference(R.string.pref_key_sync_device_name) + preferenceDeviceName.summary = state.deviceName } private fun updateLastSyncTimePref(state: AccountSettingsFragmentState) { @@ -432,8 +411,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat() { ) } - val syncNow = getPreferenceKey(R.string.pref_key_sync_now) - findPreference(syncNow)?.summary = value + requirePreference(R.string.pref_key_sync_now).summary = value } companion object { diff --git a/app/src/main/java/org/mozilla/fenix/settings/deletebrowsingdata/DeleteBrowsingDataOnQuitFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/deletebrowsingdata/DeleteBrowsingDataOnQuitFragment.kt index f6a14e274..85d91dc33 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/deletebrowsingdata/DeleteBrowsingDataOnQuitFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/deletebrowsingdata/DeleteBrowsingDataOnQuitFragment.kt @@ -10,10 +10,10 @@ import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat import androidx.preference.SwitchPreference import org.mozilla.fenix.R -import org.mozilla.fenix.ext.getPreferenceKey import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.showToolbar import org.mozilla.fenix.settings.SharedPreferenceUpdater +import org.mozilla.fenix.settings.requirePreference class DeleteBrowsingDataOnQuitFragment : PreferenceFragmentCompat() { @@ -39,10 +39,10 @@ class DeleteBrowsingDataOnQuitFragment : PreferenceFragmentCompat() { showToolbar(getString(R.string.preferences_delete_browsing_data_on_quit)) // Delete Browsing Data on Quit Switch - val deleteOnQuitPref = findPreference( - getPreferenceKey(R.string.pref_key_delete_browsing_data_on_quit) + val deleteOnQuitPref = requirePreference( + R.string.pref_key_delete_browsing_data_on_quit ) - deleteOnQuitPref?.apply { + deleteOnQuitPref.apply { onPreferenceChangeListener = object : SharedPreferenceUpdater() { override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean { setAllCheckboxes(newValue as Boolean) @@ -58,7 +58,7 @@ class DeleteBrowsingDataOnQuitFragment : PreferenceFragmentCompat() { val settings = preference.context.settings() if (!settings.shouldDeleteAnyDataOnQuit()) { - deleteOnQuitPref?.isChecked = false + deleteOnQuitPref.isChecked = false settings.shouldDeleteBrowsingDataOnQuit = false } return true diff --git a/app/src/main/java/org/mozilla/fenix/settings/logins/SavedLoginsAuthFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/logins/SavedLoginsAuthFragment.kt index e5ecffb07..3c7584c2a 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/logins/SavedLoginsAuthFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/logins/SavedLoginsAuthFragment.kt @@ -34,12 +34,12 @@ import org.mozilla.fenix.Config import org.mozilla.fenix.R import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.ext.components -import org.mozilla.fenix.ext.getPreferenceKey import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.ext.secure import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.showToolbar import org.mozilla.fenix.settings.SharedPreferenceUpdater +import org.mozilla.fenix.settings.requirePreference import java.util.concurrent.Executors @Suppress("TooManyFunctions", "LargeClass") @@ -98,8 +98,7 @@ class SavedLoginsAuthFragment : PreferenceFragmentCompat(), AccountObserver { super.onResume() showToolbar(getString(R.string.preferences_passwords_logins_and_passwords)) - val saveLoginsSettingKey = getPreferenceKey(R.string.pref_key_save_logins_settings) - findPreference(saveLoginsSettingKey)?.apply { + requirePreference(R.string.pref_key_save_logins_settings).apply { summary = getString( if (context.settings().shouldPromptToSaveLogins) R.string.preferences_passwords_save_logins_ask_to_save else @@ -111,8 +110,7 @@ class SavedLoginsAuthFragment : PreferenceFragmentCompat(), AccountObserver { } } - val autofillPreferenceKey = getPreferenceKey(R.string.pref_key_autofill_logins) - findPreference(autofillPreferenceKey)?.apply { + requirePreference(R.string.pref_key_autofill_logins).apply { // The ability to toggle autofill on the engine is only available in Nightly currently // See https://github.com/mozilla-mobile/fenix/issues/11320 isVisible = Config.channel.isNightlyOrDebug @@ -126,8 +124,7 @@ class SavedLoginsAuthFragment : PreferenceFragmentCompat(), AccountObserver { } } - val savedLoginsKey = getPreferenceKey(R.string.pref_key_saved_logins) - findPreference(savedLoginsKey)?.setOnPreferenceClickListener { + requirePreference(R.string.pref_key_saved_logins).setOnPreferenceClickListener { if (Build.VERSION.SDK_INT >= M && isHardwareAvailable && hasBiometricEnrolled) { biometricPrompt.authenticate(promptInfo) } else { @@ -181,8 +178,7 @@ class SavedLoginsAuthFragment : PreferenceFragmentCompat(), AccountObserver { } private fun updateSyncPreferenceStatus() { - val syncLogins = getPreferenceKey(R.string.pref_key_password_sync_logins) - findPreference(syncLogins)?.apply { + requirePreference(R.string.pref_key_password_sync_logins).apply { val syncEnginesStatus = SyncEnginesStorage(requireContext()).getStatus() val loginsSyncStatus = syncEnginesStatus.getOrElse(SyncEngine.Passwords) { false } summary = getString( @@ -197,8 +193,7 @@ class SavedLoginsAuthFragment : PreferenceFragmentCompat(), AccountObserver { } private fun updateSyncPreferenceNeedsLogin() { - val syncLogins = getPreferenceKey(R.string.pref_key_password_sync_logins) - findPreference(syncLogins)?.apply { + requirePreference(R.string.pref_key_password_sync_logins).apply { summary = getString(R.string.preferences_passwords_sync_logins_sign_in) setOnPreferenceClickListener { navigateToTurnOnSyncFragment() @@ -208,8 +203,7 @@ class SavedLoginsAuthFragment : PreferenceFragmentCompat(), AccountObserver { } private fun updateSyncPreferenceNeedsReauth() { - val syncLogins = getPreferenceKey(R.string.pref_key_password_sync_logins) - findPreference(syncLogins)?.apply { + requirePreference(R.string.pref_key_password_sync_logins).apply { summary = getString(R.string.preferences_passwords_sync_logins_reconnect) setOnPreferenceClickListener { navigateToAccountProblemFragment() diff --git a/app/src/main/java/org/mozilla/fenix/settings/search/SearchEngineFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/search/SearchEngineFragment.kt index 3b2b7ebfa..954e31658 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/search/SearchEngineFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/search/SearchEngineFragment.kt @@ -15,6 +15,7 @@ import org.mozilla.fenix.ext.getPreferenceKey import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.showToolbar import org.mozilla.fenix.settings.SharedPreferenceUpdater +import org.mozilla.fenix.settings.requirePreference class SearchEngineFragment : PreferenceFragmentCompat() { @@ -27,57 +28,56 @@ class SearchEngineFragment : PreferenceFragmentCompat() { showToolbar(getString(R.string.preferences_search)) val searchSuggestionsPreference = - findPreference(getPreferenceKey(R.string.pref_key_show_search_suggestions))?.apply { + requirePreference(R.string.pref_key_show_search_suggestions).apply { isChecked = context.settings().shouldShowSearchSuggestions } val searchSuggestionsInPrivatePreference = - findPreference(getPreferenceKey(R.string.pref_key_show_search_suggestions_in_private)) - ?.apply { + requirePreference(R.string.pref_key_show_search_suggestions_in_private).apply { isChecked = context.settings().shouldShowSearchSuggestionsInPrivate } val showSearchShortcuts = - findPreference(getPreferenceKey(R.string.pref_key_show_search_shortcuts))?.apply { + requirePreference(R.string.pref_key_show_search_shortcuts).apply { isChecked = context.settings().shouldShowSearchShortcuts } val showHistorySuggestions = - findPreference(getPreferenceKey(R.string.pref_key_search_browsing_history))?.apply { + requirePreference(R.string.pref_key_search_browsing_history).apply { isChecked = context.settings().shouldShowHistorySuggestions } val showBookmarkSuggestions = - findPreference(getPreferenceKey(R.string.pref_key_search_bookmarks))?.apply { + requirePreference(R.string.pref_key_search_bookmarks).apply { isChecked = context.settings().shouldShowBookmarkSuggestions } val showClipboardSuggestions = - findPreference(getPreferenceKey(R.string.pref_key_show_clipboard_suggestions))?.apply { + requirePreference(R.string.pref_key_show_clipboard_suggestions).apply { isChecked = context.settings().shouldShowClipboardSuggestions } val searchEngineListPreference = - findPreference(getPreferenceKey(R.string.pref_key_search_engine_list)) + requirePreference(R.string.pref_key_search_engine_list) val showVoiceSearchPreference = - findPreference(getPreferenceKey(R.string.pref_key_show_voice_search))?.apply { + requirePreference(R.string.pref_key_show_voice_search).apply { isChecked = context.settings().shouldShowVoiceSearch } - searchEngineListPreference?.reload(requireContext()) - searchSuggestionsPreference?.onPreferenceChangeListener = SharedPreferenceUpdater() - showSearchShortcuts?.onPreferenceChangeListener = SharedPreferenceUpdater() - showHistorySuggestions?.onPreferenceChangeListener = SharedPreferenceUpdater() - showBookmarkSuggestions?.onPreferenceChangeListener = SharedPreferenceUpdater() - showClipboardSuggestions?.onPreferenceChangeListener = SharedPreferenceUpdater() - searchSuggestionsInPrivatePreference?.onPreferenceChangeListener = SharedPreferenceUpdater() - showVoiceSearchPreference?.onPreferenceChangeListener = SharedPreferenceUpdater() + searchEngineListPreference.reload(requireContext()) + searchSuggestionsPreference.onPreferenceChangeListener = SharedPreferenceUpdater() + showSearchShortcuts.onPreferenceChangeListener = SharedPreferenceUpdater() + showHistorySuggestions.onPreferenceChangeListener = SharedPreferenceUpdater() + showBookmarkSuggestions.onPreferenceChangeListener = SharedPreferenceUpdater() + showClipboardSuggestions.onPreferenceChangeListener = SharedPreferenceUpdater() + searchSuggestionsInPrivatePreference.onPreferenceChangeListener = SharedPreferenceUpdater() + showVoiceSearchPreference.onPreferenceChangeListener = SharedPreferenceUpdater() - searchSuggestionsPreference?.setOnPreferenceClickListener { + searchSuggestionsPreference.setOnPreferenceClickListener { if (!searchSuggestionsPreference.isChecked) { - searchSuggestionsInPrivatePreference?.isChecked = false - searchSuggestionsInPrivatePreference?.callChangeListener(false) + searchSuggestionsInPrivatePreference.isChecked = false + searchSuggestionsInPrivatePreference.callChangeListener(false) } true }