UpdatesPreference: Hide frequency and restriction pref as needed

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2025-02-18 16:07:23 +08:00
parent 5c7289381f
commit 6aa94b2a81

View File

@@ -51,15 +51,12 @@ class UpdatesPreference : BasePreferenceFragment() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.preferences_updates, rootKey)
findPreference<ListPreference>(PREFERENCE_UPDATES_AUTO)?.setOnPreferenceChangeListener { _, newValue ->
val updateRestrictionsPref = findPreference<Preference>(PREFERENCES_UPDATES_RESTRICTIONS)
val updateCheckIntervalPref =
findPreference<SeekBarPreference>(PREFERENCE_UPDATES_CHECK_INTERVAL)
val updatesEnabled = Preferences.getInteger(requireContext(), PREFERENCE_UPDATES_AUTO) != 0
findPreference<ListPreference>(PREFERENCE_UPDATES_AUTO)?.setOnPreferenceChangeListener { _, newValue ->
when (UpdateMode.entries[newValue.toString().toInt()]) {
UpdateMode.DISABLED -> {
updateRestrictionsPref?.isEnabled = false
updateCheckIntervalPref?.isEnabled = false
handleAutoUpdateDependentPrefs(false)
viewModel.updateHelper.cancelAutomatedCheck()
requireContext().save(PREFERENCE_UPDATES_AUTO, 0)
true
@@ -67,15 +64,13 @@ class UpdatesPreference : BasePreferenceFragment() {
UpdateMode.CHECK_AND_NOTIFY -> {
if (permissionProvider.isGranted(PermissionType.POST_NOTIFICATIONS)) {
updateRestrictionsPref?.isEnabled = true
updateCheckIntervalPref?.isEnabled = true
handleAutoUpdateDependentPrefs(true)
viewModel.updateHelper.scheduleAutomatedCheck()
true
} else {
permissionProvider.request(PermissionType.POST_NOTIFICATIONS) {
if (it) {
updateRestrictionsPref?.isEnabled = true
updateCheckIntervalPref?.isEnabled = true
handleAutoUpdateDependentPrefs(true)
requireContext().save(PREFERENCE_UPDATES_AUTO, 1)
viewModel.updateHelper.scheduleAutomatedCheck()
activity?.recreate()
@@ -87,15 +82,13 @@ class UpdatesPreference : BasePreferenceFragment() {
UpdateMode.CHECK_AND_INSTALL -> {
if (permissionProvider.isGranted(PermissionType.DOZE_WHITELIST)) {
updateRestrictionsPref?.isEnabled = true
updateCheckIntervalPref?.isEnabled = true
handleAutoUpdateDependentPrefs(true)
viewModel.updateHelper.scheduleAutomatedCheck()
true
} else {
permissionProvider.request(PermissionType.DOZE_WHITELIST) {
if (it) {
updateRestrictionsPref?.isEnabled = true
updateCheckIntervalPref?.isEnabled = true
handleAutoUpdateDependentPrefs(true)
requireContext().save(PREFERENCE_UPDATES_AUTO, 2)
viewModel.updateHelper.scheduleAutomatedCheck()
activity?.recreate()
@@ -109,21 +102,7 @@ class UpdatesPreference : BasePreferenceFragment() {
}
}
findPreference<Preference>(PREFERENCES_UPDATES_RESTRICTIONS)?.apply {
isEnabled = Preferences.getInteger(requireContext(), PREFERENCE_UPDATES_AUTO) != 0
setOnPreferenceClickListener {
findNavController().navigate(R.id.updatesRestrictionsDialog)
true
}
}
findPreference<SeekBarPreference>(PREFERENCE_UPDATES_CHECK_INTERVAL)?.apply {
isEnabled = Preferences.getInteger(requireContext(), PREFERENCE_UPDATES_AUTO) != 0
setOnPreferenceChangeListener { _, _ ->
viewModel.updateHelper.updateAutomatedCheck()
true
}
}
handleAutoUpdateDependentPrefs(updatesEnabled)
findPreference<SwitchPreferenceCompat>(PREFERENCE_FILTER_AURORA_ONLY)
?.setOnPreferenceChangeListener { _, newValue ->
@@ -155,4 +134,24 @@ class UpdatesPreference : BasePreferenceFragment() {
setNavigationOnClickListener { findNavController().navigateUp() }
}
}
private fun handleAutoUpdateDependentPrefs(enabled: Boolean) {
findPreference<Preference>(PREFERENCES_UPDATES_RESTRICTIONS)?.apply {
isEnabled = enabled
isVisible = enabled
setOnPreferenceClickListener {
findNavController().navigate(R.id.updatesRestrictionsDialog)
true
}
}
findPreference<SeekBarPreference>(PREFERENCE_UPDATES_CHECK_INTERVAL)?.apply {
isEnabled = enabled
isVisible = enabled
setOnPreferenceChangeListener { _, _ ->
viewModel.updateHelper.updateAutomatedCheck()
true
}
}
}
}