70 lines
1.9 KiB
Kotlin
70 lines
1.9 KiB
Kotlin
package com.jetpackduba.gitnuro.viewmodels
|
|
|
|
import com.jetpackduba.gitnuro.di.qualifiers.AppCoroutineScope
|
|
import com.jetpackduba.gitnuro.preferences.AppSettings
|
|
import com.jetpackduba.gitnuro.theme.Theme
|
|
import kotlinx.coroutines.CoroutineScope
|
|
import kotlinx.coroutines.launch
|
|
import javax.inject.Inject
|
|
import javax.inject.Singleton
|
|
|
|
@Singleton
|
|
class SettingsViewModel @Inject constructor(
|
|
private val appSettings: AppSettings,
|
|
@AppCoroutineScope private val appScope: CoroutineScope,
|
|
) {
|
|
// Temporary values to detect changed variables
|
|
var commitsLimit: Int = -1
|
|
|
|
val themeState = appSettings.themeState
|
|
val ffMergeFlow = appSettings.ffMergeFlow
|
|
val pullRebaseFlow = appSettings.pullRebaseFlow
|
|
val commitsLimitEnabledFlow = appSettings.commitsLimitEnabledFlow
|
|
|
|
var scaleUi: Float
|
|
get() = appSettings.scaleUi
|
|
set(value) {
|
|
appSettings.scaleUi = value
|
|
}
|
|
|
|
var commitsLimitEnabled: Boolean
|
|
get() = appSettings.commitsLimitEnabled
|
|
set(value) {
|
|
appSettings.commitsLimitEnabled = value
|
|
}
|
|
|
|
var ffMerge: Boolean
|
|
get() = appSettings.ffMerge
|
|
set(value) {
|
|
appSettings.ffMerge = value
|
|
}
|
|
|
|
var pullRebase: Boolean
|
|
get() = appSettings.pullRebase
|
|
set(value) {
|
|
appSettings.pullRebase = value
|
|
}
|
|
|
|
var theme: Theme
|
|
get() = appSettings.theme
|
|
set(value) {
|
|
appSettings.theme = value
|
|
}
|
|
|
|
fun saveCustomTheme(filePath: String) {
|
|
appSettings.saveCustomTheme(filePath)
|
|
}
|
|
|
|
|
|
fun resetInfo() {
|
|
commitsLimit = appSettings.commitsLimit
|
|
}
|
|
|
|
fun savePendingChanges() = appScope.launch {
|
|
val commitsLimit = this@SettingsViewModel.commitsLimit
|
|
|
|
if (appSettings.commitsLimit != commitsLimit) {
|
|
appSettings.setCommitsLimit(commitsLimit)
|
|
}
|
|
}
|
|
} |