refactor preferences

This commit is contained in:
X1nto 2021-11-10 18:55:30 +04:00
parent f3ebe85e30
commit f93210b62b
15 changed files with 63 additions and 76 deletions

View File

@ -14,22 +14,19 @@ class MusicDownloader(
private val context: Context,
) : AppDownloader() {
private val version by musicVersionPref
private val variant by managerVariantPref
private lateinit var absoluteVersion: String
override suspend fun download(
appVersions: List<String>?,
onStatus: (DownloadStatus) -> Unit
) {
absoluteVersion = getLatestOrProvidedAppVersion(version, appVersions)
absoluteVersion = getLatestOrProvidedAppVersion(musicVersionPref, appVersions)
downloadFiles(
downloadFiles = arrayOf(DownloadFile(
call = musicAPI.getFiles(
version = absoluteVersion,
variant = variant,
variant = managerVariantPref,
),
fileName = "music.apk"
)),
@ -53,7 +50,7 @@ class MusicDownloader(
override fun getSavedFilePath(): String {
val directory =
File(context.getExternalFilesDir("vancedmusic")!!.path + "$absoluteVersion/$variant")
File(context.getExternalFilesDir("vancedmusic")!!.path + "$absoluteVersion/$managerVariantPref")
if (!directory.exists())
directory.mkdirs()

View File

@ -17,29 +17,24 @@ class VancedDownloader(
private val context: Context,
) : AppDownloader() {
private val theme by vancedThemePref
private val version by vancedVersionPref
private val variant by managerVariantPref
private val languages by vancedLanguagesPref
private lateinit var absoluteVersion: String
override suspend fun download(
appVersions: List<String>?,
onStatus: (DownloadStatus) -> Unit
) {
absoluteVersion = getLatestOrProvidedAppVersion(version, appVersions)
absoluteVersion = getLatestOrProvidedAppVersion(vancedVersionPref, appVersions)
val files = arrayOf(
getFile(
type = "Theme",
apkName = "$theme.apk",
apkName = "$vancedThemePref.apk",
),
getFile(
type = "Arch",
apkName = "split_config.$arch.apk",
)
) + languages.map { language ->
) + vancedLanguagesPref.map { language ->
getFile(
type = "Language",
apkName = "split_config.$language.apk",
@ -68,7 +63,7 @@ class VancedDownloader(
override fun getSavedFilePath(): String {
val directory =
File(context.getExternalFilesDir("vanced")!!.path + "/$absoluteVersion/$variant")
File(context.getExternalFilesDir("vanced")!!.path + "/$absoluteVersion/$managerVariantPref")
if (!directory.exists())
directory.mkdirs()
@ -82,7 +77,7 @@ class VancedDownloader(
) = DownloadFile(
call = vancedAPI.getFiles(
version = absoluteVersion,
variant = variant,
variant = managerVariantPref,
type = type,
apkName = apkName
),

View File

@ -12,10 +12,9 @@ class MusicInstaller(
) : AppInstaller() {
override fun install(appVersions: List<String>?) {
val version by musicVersionPref
val variant by managerVariantPref
val musicApk = File(context.getExternalFilesDir("music/$version/$variant/music.apk")!!.path)
val musicApk = File(
context.getExternalFilesDir("music/$musicVersionPref/$managerVariantPref/music.apk")!!.path
)
installApp(musicApk, context)
}

View File

@ -12,13 +12,10 @@ class VancedInstaller(
) : AppInstaller() {
override fun install(appVersions: List<String>?) {
val version by vancedVersionPref
val variant by managerVariantPref
val absoluteVersion = getLatestOrProvidedAppVersion(version, appVersions)
val absoluteVersion = getLatestOrProvidedAppVersion(vancedVersionPref, appVersions)
val apks = context
.getExternalFilesDir("vanced/$absoluteVersion/$variant")!!
.getExternalFilesDir("vanced/$absoluteVersion/$managerVariantPref")!!
.listFiles { file ->
file.extension == "apk"
}

View File

@ -6,18 +6,17 @@ import com.vanced.manager.core.preferences.managerStringPreference
import com.vanced.manager.core.preferences.managerStringSetPreference
import com.vanced.manager.ui.theme.defAccentColor
val useCustomTabsPref = managerBooleanPreference(USE_CUSTOM_TABS_KEY)
val managerVariantPref = managerStringPreference(MANAGER_VARIANT_KEY, MANAGER_VARIANT_DEFAULT_VALUE)
var useCustomTabsPref by managerBooleanPreference(USE_CUSTOM_TABS_KEY)
var managerVariantPref by managerStringPreference(MANAGER_VARIANT_KEY, MANAGER_VARIANT_DEFAULT_VALUE)
val managerThemePref = managerStringPreference(MANAGER_THEME_KEY, MANAGER_THEME_DEFAULT_VALUE)
val managerAccentColorPref = managerLongPreference(MANAGER_ACCENT_COLOR_KEY, defAccentColor)
var managerThemePref by managerStringPreference(MANAGER_THEME_KEY, MANAGER_THEME_DEFAULT_VALUE)
var managerAccentColorPref by managerLongPreference(MANAGER_ACCENT_COLOR_KEY, defAccentColor)
val vancedThemePref = managerStringPreference(APP_VANCED_THEME_KEY, VANCED_THEME_DEFAULT_VALUE)
val vancedVersionPref = managerStringPreference(APP_VANCED_VERSION_KEY, APP_VERSION_DEFAULT_VALUE)
val vancedLanguagesPref =
managerStringSetPreference(APP_VANCED_LANGUAGE_KEY, VANCED_LANGUAGE_DEFAULT_VALUE)
var vancedThemePref by managerStringPreference(APP_VANCED_THEME_KEY, VANCED_THEME_DEFAULT_VALUE)
var vancedVersionPref by managerStringPreference(APP_VANCED_VERSION_KEY, APP_VERSION_DEFAULT_VALUE)
var vancedLanguagesPref by managerStringSetPreference(APP_VANCED_LANGUAGE_KEY, VANCED_LANGUAGE_DEFAULT_VALUE)
val musicVersionPref = managerStringPreference(APP_MUSIC_VERSION_KEY, APP_VERSION_DEFAULT_VALUE)
var musicVersionPref by managerStringPreference(APP_MUSIC_VERSION_KEY, APP_VERSION_DEFAULT_VALUE)
val vancedEnabled = managerBooleanPreference(VANCED_ENABLED_KEY, APP_ENABLED_DEFAULT_VALUE)
val musicEnabled = managerBooleanPreference(MUSIC_ENABLED_KEY, APP_ENABLED_DEFAULT_VALUE)
var vancedEnabled by managerBooleanPreference(VANCED_ENABLED_KEY, APP_ENABLED_DEFAULT_VALUE)
var musicEnabled by managerBooleanPreference(MUSIC_ENABLED_KEY, APP_ENABLED_DEFAULT_VALUE)

View File

@ -77,9 +77,9 @@ class AppDtoMapper(
VANCED_NAME -> listOf(
InstallationOption.SingleSelect(
titleId = R.string.app_installation_options_theme,
getOption = { vancedThemePref.value.value },
getOption = { vancedThemePref },
setOption = {
vancedThemePref.save(it)
vancedThemePref = it
},
items = appThemes?.map { theme ->
InstallationOptionItem(
@ -94,9 +94,9 @@ class AppDtoMapper(
),
InstallationOption.SingleSelect(
titleId = R.string.app_installation_options_version,
getOption = { vancedVersionPref.value.value },
getOption = { vancedVersionPref },
setOption = {
vancedVersionPref.save(it)
vancedVersionPref = it
},
items = appVersions?.map { version ->
InstallationOptionItem(
@ -107,12 +107,12 @@ class AppDtoMapper(
),
InstallationOption.MultiSelect(
titleId = R.string.app_installation_options_language,
getOption = { vancedLanguagesPref.value.value },
getOption = { vancedLanguagesPref },
addOption = {
vancedLanguagesPref.save(vancedLanguagesPref.value.value + it)
vancedLanguagesPref = vancedLanguagesPref + it
},
removeOption = {
vancedLanguagesPref.save(vancedLanguagesPref.value.value - it)
vancedLanguagesPref = vancedLanguagesPref - it
},
items = appLanguages?.map { language ->
InstallationOptionItem(
@ -128,9 +128,9 @@ class AppDtoMapper(
MUSIC_NAME -> listOf(
InstallationOption.SingleSelect(
titleId = R.string.app_installation_options_version,
getOption = { musicVersionPref.value.value },
getOption = { musicVersionPref },
setOption = {
musicVersionPref.save(it)
musicVersionPref = it
},
items = appVersions?.map { version ->
InstallationOptionItem(

View File

@ -19,12 +19,11 @@ fun ManagerLinkCard(
val customTabs = remember { CustomTabsIntent.Builder().build() }
val uri = remember { Uri.parse(link) }
val intent = remember { Intent(Intent.ACTION_VIEW, uri) }
val useCustomTabs by useCustomTabsPref
ManagerItemCard(
title = title,
icon = icon
) {
if (useCustomTabs) {
if (useCustomTabsPref) {
customTabs.launchUrl(context, uri)
} else {
context.startActivity(intent)

View File

@ -17,8 +17,7 @@ fun contentColorForColor(color: Color) =
@Composable
fun managerAccentColor(): Color {
val accentColor by managerAccentColorPref
return Color(accentColor)
return Color(managerAccentColorPref)
}
@Composable

View File

@ -11,18 +11,13 @@ import kotlinx.coroutines.launch
fun CheckboxPreference(
preferenceTitle: String,
preferenceDescription: String? = null,
preference: ManagerPreference<Boolean>,
isChecked: Boolean,
onCheckedChange: (isChecked: Boolean) -> Unit = {}
) {
var isChecked by preference
val coroutineScope = rememberCoroutineScope()
val onClick: () -> Unit = {
coroutineScope.launch {
isChecked = !isChecked
onCheckedChange(isChecked)
}
onCheckedChange(!isChecked)
}
Preference(
preferenceTitle = preferenceTitle,
preferenceDescription = preferenceDescription,

View File

@ -72,7 +72,7 @@ private val DarkThemeColors = darkColorScheme(
)
@Composable
fun isDark(): Boolean = when (managerThemePref.value.value) {
fun isDark(): Boolean = when (managerThemePref) {
"Dark" -> true
"Light" -> false
"System Default" -> isSystemInDarkTheme()

View File

@ -32,9 +32,9 @@ class MainViewModel(
fun fetch() {
viewModelScope.launch {
val vancedEnabled = vancedEnabled.value.value
val musicEnabled = musicEnabled.value.value
val isNonroot = managerVariantPref.value.value == "nonroot"
val vancedEnabled = vancedEnabled
val musicEnabled = musicEnabled
val isNonroot = managerVariantPref == "nonroot"
var appsCount = 0

View File

@ -11,6 +11,9 @@ fun SettingsCustomTabsItem() {
CheckboxPreference(
preferenceTitle = stringResource(id = R.string.settings_preference_use_custom_tabs_title),
preferenceDescription = stringResource(id = R.string.settings_preference_use_custom_tabs_summary),
preference = useCustomTabsPref
isChecked = useCustomTabsPref,
onCheckedChange = {
useCustomTabsPref = it
}
)
}

View File

@ -10,12 +10,12 @@ import com.vanced.manager.ui.resources.managerString
@Composable
fun SettingsManagerVariantItem() {
var showDialog by remember { mutableStateOf(false) }
var selectedKey by remember { mutableStateOf(managerVariantPref.value.value) }
var selectedKey by remember { mutableStateOf(managerVariantPref) }
RadiobuttonDialogPreference(
preferenceTitle = managerString(
stringId = R.string.settings_preference_variant_title
),
preferenceDescription = managerVariantPref.value.value,
preferenceDescription = managerVariantPref,
isDialogVisible = showDialog,
currentSelectedKey = selectedKey,
buttons = listOf(
@ -33,13 +33,13 @@ fun SettingsManagerVariantItem() {
},
onDismissRequest = {
showDialog = false
selectedKey = managerVariantPref.value.value
selectedKey = managerVariantPref
},
onItemClick = {
selectedKey = it
},
onSave = {
managerVariantPref.save(selectedKey)
managerVariantPref = selectedKey
showDialog = false
}
)

View File

@ -7,15 +7,19 @@ import com.vanced.manager.ui.component.preference.CheckboxPreference
@Composable
fun SettingsNotificationsItem() {
notificationApps.forEach {
with(it) {
notificationApps.forEach { notificationApp ->
with(notificationApp) {
var appNotificationsPref by managerBooleanPreference(
key = "${prefKey}_notifications",
defaultValue = true
)
CheckboxPreference(
preferenceTitle = "$app Push Notifications",
preferenceDescription = "Receive push notifications when an update for $app is released",
preference = managerBooleanPreference(
key = "${prefKey}_notifications",
defaultValue = true
)
isChecked = appNotificationsPref,
onCheckedChange = {
appNotificationsPref = it
}
)
}
}

View File

@ -10,10 +10,10 @@ import com.vanced.manager.ui.resources.managerString
@Composable
fun ThemeSettingsItem() {
var showDialog by remember { mutableStateOf(false) }
var selectedKey by remember { mutableStateOf(managerThemePref.value.value) }
var selectedKey by remember { mutableStateOf(managerThemePref) }
RadiobuttonDialogPreference(
preferenceTitle = managerString(stringId = R.string.settings_preference_theme_title),
preferenceDescription = managerThemePref.value.value,
preferenceDescription = managerThemePref,
isDialogVisible = showDialog,
currentSelectedKey = selectedKey,
buttons = listOf(
@ -35,13 +35,13 @@ fun ThemeSettingsItem() {
},
onDismissRequest = {
showDialog = false
selectedKey = managerThemePref.value.value
selectedKey = managerThemePref
},
onItemClick = {
selectedKey = it
},
onSave = {
managerThemePref.save(selectedKey)
managerThemePref = selectedKey
showDialog = false
}
)