Set preference visibility immediately (fixes #2965)

This commit is contained in:
arkon
2020-04-26 16:26:42 -04:00
parent 7fd547a2d6
commit 45b5c1c262
7 changed files with 39 additions and 24 deletions

View File

@@ -18,6 +18,7 @@ import eu.kanade.tachiyomi.data.backup.BackupCreatorJob
import eu.kanade.tachiyomi.data.backup.BackupRestoreService
import eu.kanade.tachiyomi.data.backup.models.Backup
import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
import eu.kanade.tachiyomi.data.preference.asImmediateFlow
import eu.kanade.tachiyomi.ui.base.controller.DialogController
import eu.kanade.tachiyomi.ui.base.controller.requestPermissionsSafe
import eu.kanade.tachiyomi.util.preference.defaultValue
@@ -101,7 +102,7 @@ class SettingsBackupController : SettingsController() {
true
}
}
val backupDir = preference {
preference {
key = Keys.backupDirectory
titleRes = R.string.pref_backup_directory
@@ -116,6 +117,9 @@ class SettingsBackupController : SettingsController() {
}
}
preferences.backupInterval().asImmediateFlow { isVisible = it > 0 }
.launchIn(scope)
preferences.backupsDirectory().asFlow()
.onEach { path ->
val dir = UniFile.fromUri(context, Uri.parse(path))
@@ -123,21 +127,17 @@ class SettingsBackupController : SettingsController() {
}
.launchIn(scope)
}
val backupNumber = intListPreference {
intListPreference {
key = Keys.numberOfBackups
titleRes = R.string.pref_backup_slots
entries = arrayOf("1", "2", "3", "4", "5")
entryValues = entries
defaultValue = "1"
summary = "%s"
}
preferences.backupInterval().asFlow()
.onEach {
backupDir.isVisible = it > 0
backupNumber.isVisible = it > 0
}
.launchIn(scope)
preferences.backupInterval().asImmediateFlow { isVisible = it > 0 }
.launchIn(scope)
}
}
}

View File

@@ -17,6 +17,7 @@ import eu.kanade.tachiyomi.data.database.DatabaseHelper
import eu.kanade.tachiyomi.data.database.models.Category
import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.asImmediateFlow
import eu.kanade.tachiyomi.ui.base.controller.DialogController
import eu.kanade.tachiyomi.util.preference.defaultValue
import eu.kanade.tachiyomi.util.preference.entriesRes
@@ -102,8 +103,7 @@ class SettingsDownloadController : SettingsController() {
entries = categories.map { it.name }.toTypedArray()
entryValues = categories.map { it.id.toString() }.toTypedArray()
preferences.downloadNew().asFlow()
.onEach { isVisible = it }
preferences.downloadNew().asImmediateFlow { isVisible = it }
.launchIn(scope)
preferences.downloadNewCategories().asFlow()

View File

@@ -7,6 +7,7 @@ import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
import eu.kanade.tachiyomi.data.preference.PreferenceValues as Values
import eu.kanade.tachiyomi.data.preference.asImmediateFlow
import eu.kanade.tachiyomi.util.preference.defaultValue
import eu.kanade.tachiyomi.util.preference.entriesRes
import eu.kanade.tachiyomi.util.preference.intListPreference
@@ -19,7 +20,6 @@ import eu.kanade.tachiyomi.util.preference.switchPreference
import eu.kanade.tachiyomi.util.preference.titleRes
import eu.kanade.tachiyomi.util.system.LocaleHelper
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
class SettingsGeneralController : SettingsController() {
@@ -151,9 +151,7 @@ class SettingsGeneralController : SettingsController() {
defaultValue = Values.THEME_LIGHT_DEFAULT
summary = "%s"
isVisible = preferences.themeMode().get() != Values.THEME_MODE_DARK
preferences.themeMode().asFlow()
.onEach { isVisible = it != Values.THEME_MODE_DARK }
preferences.themeMode().asImmediateFlow { isVisible = it != Values.THEME_MODE_DARK }
.launchIn(scope)
onChange {
@@ -179,9 +177,7 @@ class SettingsGeneralController : SettingsController() {
defaultValue = Values.THEME_DARK_DEFAULT
summary = "%s"
isVisible = preferences.themeMode().get() != Values.THEME_MODE_LIGHT
preferences.themeMode().asFlow()
.onEach { isVisible = it != Values.THEME_MODE_LIGHT }
preferences.themeMode().asImmediateFlow { isVisible = it != Values.THEME_MODE_LIGHT }
.launchIn(scope)
onChange {

View File

@@ -13,6 +13,7 @@ import eu.kanade.tachiyomi.data.database.models.Category
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.asImmediateFlow
import eu.kanade.tachiyomi.data.preference.getOrDefault
import eu.kanade.tachiyomi.ui.base.controller.DialogController
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
@@ -104,8 +105,7 @@ class SettingsLibraryController : SettingsController() {
entryValues = arrayOf("wifi", "ac")
summaryRes = R.string.pref_library_update_restriction_summary
preferences.libraryUpdateInterval().asFlow()
.onEach { isVisible = it > 0 }
preferences.libraryUpdateInterval().asImmediateFlow { isVisible = it > 0 }
.launchIn(scope)
onChange {

View File

@@ -4,13 +4,13 @@ import androidx.biometric.BiometricManager
import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
import eu.kanade.tachiyomi.data.preference.asImmediateFlow
import eu.kanade.tachiyomi.util.preference.defaultValue
import eu.kanade.tachiyomi.util.preference.intListPreference
import eu.kanade.tachiyomi.util.preference.summaryRes
import eu.kanade.tachiyomi.util.preference.switchPreference
import eu.kanade.tachiyomi.util.preference.titleRes
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
class SettingsSecurityController : SettingsController() {
@@ -38,9 +38,7 @@ class SettingsSecurityController : SettingsController() {
defaultValue = "0"
summary = "%s"
isVisible = preferences.useBiometricLock().get()
preferences.useBiometricLock().asFlow()
.onEach { isVisible = it }
preferences.useBiometricLock().asImmediateFlow { isVisible = it }
.launchIn(scope)
}
}