1
0
Fork 0

Clean up settings fragments

master
Tiger Oakes 2019-12-07 20:25:32 -08:00 committed by Jeff Boek
parent 43354489a1
commit b85673acac
7 changed files with 145 additions and 273 deletions

View File

@ -4,7 +4,6 @@
package org.mozilla.fenix.settings
import android.content.SharedPreferences
import android.os.Bundle
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.SwitchPreference
@ -20,23 +19,18 @@ import org.mozilla.fenix.ext.showToolbar
*/
class DataChoicesFragment : PreferenceFragmentCompat() {
private val preferenceChangeListener =
SharedPreferences.OnSharedPreferenceChangeListener { sharedPreferences, key ->
when (key) {
getPreferenceKey(R.string.pref_key_telemetry) -> {
if (sharedPreferences.getBoolean(key, requireContext().settings().isTelemetryEnabled)) {
context?.components?.analytics?.metrics?.start()
} else {
context?.components?.analytics?.metrics?.stop()
}
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
context?.let {
preferenceManager.sharedPreferences.registerOnSharedPreferenceChangeListener(preferenceChangeListener)
val context = requireContext()
preferenceManager.sharedPreferences.registerOnSharedPreferenceChangeListener(this) { sharedPreferences, key ->
if (key == getPreferenceKey(R.string.pref_key_telemetry)) {
if (sharedPreferences.getBoolean(key, context.settings().isTelemetryEnabled)) {
context.components.analytics.metrics.start()
} else {
context.components.analytics.metrics.stop()
}
}
}
}
@ -45,13 +39,6 @@ class DataChoicesFragment : PreferenceFragmentCompat() {
showToolbar(getString(R.string.preferences_data_collection))
}
override fun onDestroy() {
context?.let {
preferenceManager.sharedPreferences.unregisterOnSharedPreferenceChangeListener(preferenceChangeListener)
}
super.onDestroy()
}
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.data_choices_preferences, rootKey)

View File

@ -5,7 +5,6 @@
package org.mozilla.fenix.settings
import android.content.Intent
import android.content.SharedPreferences
import android.os.Build
import android.os.Build.VERSION.SDK_INT
import android.os.Bundle
@ -17,7 +16,6 @@ import mozilla.components.support.utils.Browsers
import org.mozilla.fenix.BrowserDirection
import org.mozilla.fenix.HomeActivity
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
@ -27,30 +25,8 @@ import org.mozilla.fenix.ext.showToolbar
*/
class DefaultBrowserSettingsFragment : PreferenceFragmentCompat() {
private val preferenceChangeListener =
SharedPreferences.OnSharedPreferenceChangeListener { sharedPreferences, key ->
when (key) {
getPreferenceKey(R.string.pref_key_telemetry) -> {
if (sharedPreferences.getBoolean(
key,
requireContext().settings().isTelemetryEnabled
)
) {
context?.components?.analytics?.metrics?.start()
} else {
context?.components?.analytics?.metrics?.stop()
}
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
context?.let {
preferenceManager.sharedPreferences.registerOnSharedPreferenceChangeListener(
preferenceChangeListener
)
}
val makeDefaultBrowserKey = getPreferenceKey(R.string.pref_key_make_default_browser)
val preferenceMakeDefaultBrowser = findPreference<Preference>(makeDefaultBrowserKey)
@ -66,15 +42,6 @@ class DefaultBrowserSettingsFragment : PreferenceFragmentCompat() {
updatePreferences()
}
override fun onDestroy() {
context?.let {
preferenceManager.sharedPreferences.unregisterOnSharedPreferenceChangeListener(
preferenceChangeListener
)
}
super.onDestroy()
}
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.default_browser_preferences, rootKey)
updatePreferences()
@ -94,9 +61,7 @@ class DefaultBrowserSettingsFragment : PreferenceFragmentCompat() {
private fun getClickListenerForMakeDefaultBrowser(): Preference.OnPreferenceClickListener {
return if (SDK_INT >= Build.VERSION_CODES.N) {
Preference.OnPreferenceClickListener {
val intent = Intent(
ACTION_MANAGE_DEFAULT_APPS_SETTINGS
)
val intent = Intent(ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
startActivity(intent)
true
}
@ -104,7 +69,7 @@ class DefaultBrowserSettingsFragment : PreferenceFragmentCompat() {
Preference.OnPreferenceClickListener {
(activity as HomeActivity).openToBrowserAndLoad(
searchTermOrURL = SupportUtils.getSumoURLForTopic(
context!!,
requireContext(),
SupportUtils.SumoTopic.SET_AS_DEFAULT_BROWSER
),
newTab = true,

View File

@ -0,0 +1,39 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.fenix.settings
import android.content.SharedPreferences
import androidx.lifecycle.Lifecycle.Event.ON_CREATE
import androidx.lifecycle.Lifecycle.Event.ON_DESTROY
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.OnLifecycleEvent
class OnSharedPreferenceChangeListener(
private val sharedPreferences: SharedPreferences,
private val listener: (SharedPreferences, String) -> Unit
) : SharedPreferences.OnSharedPreferenceChangeListener, LifecycleObserver {
@OnLifecycleEvent(ON_CREATE)
fun onCreate() {
sharedPreferences.registerOnSharedPreferenceChangeListener(this)
}
@OnLifecycleEvent(ON_DESTROY)
fun onDestroy() {
sharedPreferences.unregisterOnSharedPreferenceChangeListener(this)
}
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String) {
listener(sharedPreferences, key)
}
}
fun SharedPreferences.registerOnSharedPreferenceChangeListener(
owner: LifecycleOwner,
listener: (SharedPreferences, String) -> Unit
) {
owner.lifecycle.addObserver(OnSharedPreferenceChangeListener(this, listener))
}

View File

@ -7,12 +7,11 @@ package org.mozilla.fenix.settings
import android.content.ActivityNotFoundException
import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
import android.net.Uri
import android.os.Bundle
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavDirections
import androidx.navigation.Navigation
import androidx.navigation.findNavController
import androidx.navigation.fragment.findNavController
import androidx.preference.Preference
import androidx.preference.Preference.OnPreferenceClickListener
@ -65,30 +64,32 @@ import org.mozilla.fenix.settings.account.AccountAuthErrorPreference
import org.mozilla.fenix.settings.account.AccountPreference
import org.mozilla.fenix.utils.ItsNotBrokenSnack
@SuppressWarnings("TooManyFunctions", "LargeClass")
class SettingsFragment : PreferenceFragmentCompat(), AccountObserver {
private val preferenceChangeListener =
SharedPreferences.OnSharedPreferenceChangeListener { sharedPreferences, key ->
try {
context?.let {
it.components.analytics.metrics.track(
Event.PreferenceToggled
(key, sharedPreferences.getBoolean(key, false), it)
)
}
} catch (e: IllegalArgumentException) {
// The event is not tracked
} catch (e: ClassCastException) {
// The setting is not a boolean, not tracked
@Suppress("LargeClass")
class SettingsFragment : PreferenceFragmentCompat() {
private val accountObserver = object : AccountObserver {
private fun updateAccountUi(profile: Profile? = null) {
val context = context ?: return
lifecycleScope.launch {
updateAccountUIState(
context = context,
profile = profile ?: context.components.backgroundServices.accountManager.accountProfile()
)
}
}
override fun onAuthenticated(account: OAuthAccount, authType: AuthType) = updateAccountUi()
override fun onLoggedOut() = updateAccountUi()
override fun onProfileUpdated(profile: Profile) = updateAccountUi(profile)
override fun onAuthenticationProblems() = updateAccountUi()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Observe account changes to keep the UI up-to-date.
requireComponents.backgroundServices.accountManager.register(
this,
accountObserver,
owner = this,
autoPause = true
)
@ -102,9 +103,20 @@ class SettingsFragment : PreferenceFragmentCompat(), AccountObserver {
requireComponents.backgroundServices.accountManager.accountProfile()
)
preferenceManager.sharedPreferences.registerOnSharedPreferenceChangeListener(
preferenceChangeListener
)
preferenceManager.sharedPreferences
.registerOnSharedPreferenceChangeListener(this) { sharedPreferences, key ->
try {
context?.let { context ->
context.components.analytics.metrics.track(
Event.PreferenceToggled(key, sharedPreferences.getBoolean(key, false), context)
)
}
} catch (e: IllegalArgumentException) {
// The event is not tracked
} catch (e: ClassCastException) {
// The setting is not a boolean, not tracked
}
}
}
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
@ -178,33 +190,35 @@ class SettingsFragment : PreferenceFragmentCompat(), AccountObserver {
@Suppress("ComplexMethod", "LongMethod")
override fun onPreferenceTreeClick(preference: Preference): Boolean {
when (preference.key) {
val directions: NavDirections? = when (preference.key) {
resources.getString(pref_key_search_settings) -> {
navigateToSearchEngineSettings()
SettingsFragmentDirections.actionSettingsFragmentToSearchEngineFragment()
}
resources.getString(pref_key_tracking_protection_settings) -> {
requireContext().metrics.track(Event.TrackingProtectionSettings)
navigateToTrackingProtectionSettings()
SettingsFragmentDirections.actionSettingsFragmentToTrackingProtectionFragment()
}
resources.getString(pref_key_site_permissions) -> {
navigateToSitePermissions()
SettingsFragmentDirections.actionSettingsFragmentToSitePermissionsFragment()
}
resources.getString(pref_key_add_private_browsing_shortcut) -> {
requireContext().metrics.track(Event.PrivateBrowsingCreateShortcut)
PrivateShortcutCreateManager.createPrivateShortcut(requireContext())
null
}
resources.getString(pref_key_accessibility) -> {
navigateToAccessibility()
SettingsFragmentDirections.actionSettingsFragmentToAccessibilityFragment()
}
resources.getString(pref_key_language) -> {
// TODO #220
ItsNotBrokenSnack(context!!).showSnackbar(issueNumber = "220")
ItsNotBrokenSnack(requireContext()).showSnackbar(issueNumber = "220")
null
}
resources.getString(pref_key_make_default_browser) -> {
navigateToDefaultBrowserSettingsFragment()
SettingsFragmentDirections.actionSettingsFragmentToDefaultBrowserSettingsFragment()
}
resources.getString(pref_key_data_choices) -> {
navigateToDataChoices()
SettingsFragmentDirections.actionSettingsFragmentToDataChoicesFragment()
}
resources.getString(pref_key_help) -> {
(activity as HomeActivity).openToBrowserAndLoad(
@ -215,6 +229,7 @@ class SettingsFragment : PreferenceFragmentCompat(), AccountObserver {
newTab = true,
from = BrowserDirection.FromSettings
)
null
}
resources.getString(pref_key_rate) -> {
try {
@ -228,60 +243,55 @@ class SettingsFragment : PreferenceFragmentCompat(), AccountObserver {
from = BrowserDirection.FromSettings
)
}
null
}
resources.getString(pref_key_passwords) -> {
navigateToLoginsSettingsFragment()
SettingsFragmentDirections.actionSettingsFragmentToLoginsFragment()
}
resources.getString(pref_key_about) -> {
navigateToAbout()
SettingsFragmentDirections.actionSettingsFragmentToAboutFragment()
}
resources.getString(pref_key_account) -> {
navigateToAccountSettings()
SettingsFragmentDirections.actionSettingsFragmentToAccountSettingsFragment()
}
resources.getString(pref_key_account_auth_error) -> {
navigateToAccountProblem()
SettingsFragmentDirections.actionSettingsFragmentToAccountProblemFragment()
}
resources.getString(pref_key_delete_browsing_data) -> {
navigateToDeleteBrowsingData()
SettingsFragmentDirections.actionSettingsFragmentToDeleteBrowsingDataFragment()
}
resources.getString(pref_key_delete_browsing_data_on_quit_preference) -> {
navigateToDeleteBrowsingDataOnQuit()
SettingsFragmentDirections.actionSettingsFragmentToDeleteBrowsingDataOnQuitFragment()
}
resources.getString(pref_key_theme) -> {
navigateToThemeSettings()
SettingsFragmentDirections.actionSettingsFragmentToThemeFragment()
}
resources.getString(pref_key_toolbar) -> {
navigateToToolbarSettings()
SettingsFragmentDirections.actionSettingsFragmentToToolbarSettingsFragment()
}
resources.getString(pref_key_privacy_link) -> {
requireContext().let { context ->
val intent = SupportUtils.createCustomTabIntent(
context,
SupportUtils.getPrivacyNoticeUrl()
)
startActivity(intent)
}
val intent = SupportUtils.createCustomTabIntent(
requireContext(),
SupportUtils.getPrivacyNoticeUrl()
)
startActivity(intent)
null
}
resources.getString(pref_key_your_rights) -> {
requireContext().let { context ->
val intent = SupportUtils.createCustomTabIntent(
context,
SupportUtils.getSumoURLForTopic(context, SupportUtils.SumoTopic.YOUR_RIGHTS)
)
startActivity(intent)
}
val context = requireContext()
val intent = SupportUtils.createCustomTabIntent(
context,
SupportUtils.getSumoURLForTopic(context, SupportUtils.SumoTopic.YOUR_RIGHTS)
)
startActivity(intent)
null
}
else -> null
}
directions?.let { navigateFromSettings(directions) }
return super.onPreferenceTreeClick(preference)
}
override fun onDestroy() {
super.onDestroy()
preferenceManager.sharedPreferences.unregisterOnSharedPreferenceChangeListener(
preferenceChangeListener
)
}
private fun getClickListenerForSignIn(): OnPreferenceClickListener {
return OnPreferenceClickListener {
context!!.components.services.launchPairingSignIn(context!!, findNavController())
@ -313,132 +323,13 @@ class SettingsFragment : PreferenceFragmentCompat(), AccountObserver {
}
private fun navigateFromSettings(directions: NavDirections) {
view?.let {
val navController = Navigation.findNavController(it)
view?.findNavController()?.let { navController ->
if (navController.currentDestination?.id == R.id.settingsFragment) {
navController.navigate(directions)
}
}
}
private fun navigateToLoginsSettingsFragment() {
val directions = SettingsFragmentDirections.actionSettingsFragmentToLoginsFragment()
navigateFromSettings(directions)
}
private fun navigateToSearchEngineSettings() {
val directions = SettingsFragmentDirections.actionSettingsFragmentToSearchEngineFragment()
navigateFromSettings(directions)
}
private fun navigateToTrackingProtectionSettings() {
val directions =
SettingsFragmentDirections.actionSettingsFragmentToTrackingProtectionFragment()
navigateFromSettings(directions)
}
private fun navigateToThemeSettings() {
val directions = SettingsFragmentDirections.actionSettingsFragmentToThemeFragment()
navigateFromSettings(directions)
}
private fun navigateToToolbarSettings() {
val directions =
SettingsFragmentDirections.actionSettingsFragmentToToolbarSettingsFragment()
navigateFromSettings(directions)
}
private fun navigateToSitePermissions() {
val directions =
SettingsFragmentDirections.actionSettingsFragmentToSitePermissionsFragment()
navigateFromSettings(directions)
}
private fun navigateToAccessibility() {
val directions = SettingsFragmentDirections.actionSettingsFragmentToAccessibilityFragment()
navigateFromSettings(directions)
}
private fun navigateToDefaultBrowserSettingsFragment() {
val directions =
SettingsFragmentDirections.actionSettingsFragmentToDefaultBrowserSettingsFragment()
navigateFromSettings(directions)
}
private fun navigateToDataChoices() {
val directions = SettingsFragmentDirections.actionSettingsFragmentToDataChoicesFragment()
navigateFromSettings(directions)
}
private fun navigateToAbout() {
val directions = SettingsFragmentDirections.actionSettingsFragmentToAboutFragment()
navigateFromSettings(directions)
}
private fun navigateToAccountProblem() {
val directions = SettingsFragmentDirections.actionSettingsFragmentToAccountProblemFragment()
navigateFromSettings(directions)
}
private fun navigateToAccountSettings() {
val directions =
SettingsFragmentDirections.actionSettingsFragmentToAccountSettingsFragment()
navigateFromSettings(directions)
}
private fun navigateToDeleteBrowsingData() {
val directions =
SettingsFragmentDirections.actionSettingsFragmentToDeleteBrowsingDataFragment()
navigateFromSettings(directions)
}
private fun navigateToDeleteBrowsingDataOnQuit() {
val directions =
SettingsFragmentDirections.actionSettingsFragmentToDeleteBrowsingDataOnQuitFragment()
navigateFromSettings(directions)
}
override fun onAuthenticated(account: OAuthAccount, authType: AuthType) {
lifecycleScope.launch {
context?.let {
updateAccountUIState(
it,
it.components.backgroundServices.accountManager.accountProfile()
)
}
}
}
override fun onLoggedOut() {
lifecycleScope.launch {
context?.let {
updateAccountUIState(
it,
it.components.backgroundServices.accountManager.accountProfile()
)
}
}
}
override fun onProfileUpdated(profile: Profile) {
lifecycleScope.launch {
context?.let {
updateAccountUIState(it, profile)
}
}
}
override fun onAuthenticationProblems() {
lifecycleScope.launch {
context?.let {
updateAccountUIState(
it,
it.components.backgroundServices.accountManager.accountProfile()
)
}
}
}
/**
* Updates the UI to reflect current account state.
* Possible conditions are logged-in without problems, logged-out, and logged-in but needs to re-authenticate.

View File

@ -5,16 +5,17 @@
package org.mozilla.fenix.settings
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.preference.PreferenceFragmentCompat
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.showToolbar
/**
* Settings to adjust the position of the browser toolbar.
*/
class ToolbarSettingsFragment : PreferenceFragmentCompat() {
private lateinit var topPreference: RadioButtonPreference
private lateinit var bottomPreference: RadioButtonPreference
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.toolbar_preferences, rootKey)
@ -22,16 +23,14 @@ class ToolbarSettingsFragment : PreferenceFragmentCompat() {
override fun onResume() {
super.onResume()
(activity as AppCompatActivity).title = getString(R.string.preferences_toolbar)
(activity as AppCompatActivity).supportActionBar?.show()
showToolbar(getString(R.string.preferences_toolbar))
setupClickListeners()
setupRadioGroups()
setupPreferences()
}
private fun setupClickListeners() {
private fun setupPreferences() {
val keyToolbarTop = getPreferenceKey(R.string.pref_key_toolbar_top)
topPreference = requireNotNull(findPreference(keyToolbarTop))
val topPreference = requireNotNull(findPreference<RadioButtonPreference>(keyToolbarTop))
topPreference.onClickListener {
requireContext().components.analytics.metrics.track(Event.ToolbarPositionChanged(
Event.ToolbarPositionChanged.Position.TOP
@ -39,15 +38,13 @@ class ToolbarSettingsFragment : PreferenceFragmentCompat() {
}
val keyToolbarBottom = getPreferenceKey(R.string.pref_key_toolbar_bottom)
bottomPreference = requireNotNull(findPreference(keyToolbarBottom))
val bottomPreference = requireNotNull(findPreference<RadioButtonPreference>(keyToolbarBottom))
bottomPreference.onClickListener {
requireContext().components.analytics.metrics.track(Event.ToolbarPositionChanged(
Event.ToolbarPositionChanged.Position.BOTTOM
))
}
}
private fun setupRadioGroups() {
topPreference.addToRadioGroup(bottomPreference)
bottomPreference.addToRadioGroup(topPreference)
}

View File

@ -6,15 +6,13 @@ package org.mozilla.fenix.settings.search
import android.net.Uri
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import kotlinx.android.synthetic.main.custom_search_engine.*
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.Dispatchers.Main
@ -26,12 +24,13 @@ import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.components.searchengine.CustomSearchEngineStore
import org.mozilla.fenix.ext.increaseTapArea
import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.ext.showToolbar
import org.mozilla.fenix.settings.SupportUtils
import java.util.Locale
class EditCustomSearchEngineFragment : Fragment(R.layout.fragment_add_search_engine) {
private val engineIdentifier: String by lazy {
navArgs<EditCustomSearchEngineFragmentArgs>().value.searchEngineIdentifier
EditCustomSearchEngineFragmentArgs.fromBundle(requireArguments()).searchEngineIdentifier
}
private lateinit var searchEngine: SearchEngine
@ -68,8 +67,7 @@ class EditCustomSearchEngineFragment : Fragment(R.layout.fragment_add_search_eng
override fun onResume() {
super.onResume()
(activity as AppCompatActivity).title = getString(R.string.search_engine_edit_custom_search_engine_title)
(activity as AppCompatActivity).supportActionBar?.show()
showToolbar(getString(R.string.search_engine_edit_custom_search_engine_title))
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {

View File

@ -8,12 +8,13 @@ import android.content.DialogInterface
import android.os.Bundle
import androidx.appcompat.app.AlertDialog
import androidx.lifecycle.lifecycleScope
import androidx.navigation.Navigation
import androidx.navigation.findNavController
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.Dispatchers.Main
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import mozilla.components.feature.sitepermissions.SitePermissions
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.components
@ -47,28 +48,22 @@ class SitePermissionsDetailsExceptionsFragment : PreferenceFragmentCompat() {
val context = requireContext()
sitePermissions =
requireNotNull(context.components.core.permissionStorage.findSitePermissionsBy(sitePermissions.origin))
launch(Main) {
withContext(Main) {
bindCategoryPhoneFeatures()
}
}
}
private fun bindCategoryPhoneFeatures() {
val context = requireContext()
val cameraAction = CAMERA.getActionLabel(context, sitePermissions)
val locationAction = LOCATION.getActionLabel(context, sitePermissions)
val microphoneAction = MICROPHONE.getActionLabel(context, sitePermissions)
val notificationAction = NOTIFICATION.getActionLabel(context, sitePermissions)
initPhoneFeature(CAMERA, cameraAction)
initPhoneFeature(LOCATION, locationAction)
initPhoneFeature(MICROPHONE, microphoneAction)
initPhoneFeature(NOTIFICATION, notificationAction)
initPhoneFeature(CAMERA)
initPhoneFeature(LOCATION)
initPhoneFeature(MICROPHONE)
initPhoneFeature(NOTIFICATION)
bindClearPermissionsButton()
}
private fun initPhoneFeature(phoneFeature: PhoneFeature, summary: String) {
private fun initPhoneFeature(phoneFeature: PhoneFeature) {
val summary = phoneFeature.getActionLabel(requireContext(), sitePermissions)
val keyPreference = phoneFeature.getPreferenceKey(requireContext())
val cameraPhoneFeatures: Preference = requireNotNull(findPreference(keyPreference))
cameraPhoneFeatures.summary = summary
@ -103,8 +98,8 @@ class SitePermissionsDetailsExceptionsFragment : PreferenceFragmentCompat() {
private fun clearSitePermissions() {
lifecycleScope.launch(IO) {
requireContext().components.core.permissionStorage.deleteSitePermissions(sitePermissions)
launch(Main) {
Navigation.findNavController(requireNotNull(view)).popBackStack()
withContext(Main) {
requireView().findNavController().popBackStack()
}
}
}
@ -115,6 +110,6 @@ class SitePermissionsDetailsExceptionsFragment : PreferenceFragmentCompat() {
phoneFeatureId = phoneFeature.id,
sitePermissions = sitePermissions
)
Navigation.findNavController(view!!).navigate(directions)
requireView().findNavController().navigate(directions)
}
}