Gitnuro/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/SettingsViewModel.kt
2023-03-18 18:56:14 +01:00

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)
}
}
}