Gitnuro/src/main/kotlin/com/jetpackduba/gitnuro/viewmodels/SignOffDialogViewModel.kt
Abdelilah El Aissaoui ddc198a0d7
Added option to sign off commits
Fixes #60
2023-05-01 16:20:11 +02:00

40 lines
1.5 KiB
Kotlin

package com.jetpackduba.gitnuro.viewmodels
import com.jetpackduba.gitnuro.git.RefreshType
import com.jetpackduba.gitnuro.git.TabState
import com.jetpackduba.gitnuro.git.config.LoadSignOffConfigUseCase
import com.jetpackduba.gitnuro.git.config.SaveLocalRepositoryConfigUseCase
import com.jetpackduba.gitnuro.models.SignOffConfig
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import javax.inject.Inject
class SignOffDialogViewModel @Inject constructor(
private val tabState: TabState,
private val loadSignOffConfigUseCase: LoadSignOffConfigUseCase,
private val saveLocalRepositoryConfigUseCase: SaveLocalRepositoryConfigUseCase,
) {
private val _state = MutableStateFlow<SignOffState>(SignOffState.Loading)
val state = _state.asStateFlow()
fun loadSignOffFormat() = tabState.runOperation(
showError = true,
refreshType = RefreshType.NONE,
) { git ->
val signOffConfig = loadSignOffConfigUseCase(git.repository)
_state.value = SignOffState.Loaded(signOffConfig)
}
fun saveSignOffFormat(newIsEnabled: Boolean, newFormat: String) = tabState.runOperation(
showError = true,
refreshType = RefreshType.NONE,
) { git ->
saveLocalRepositoryConfigUseCase(git.repository, SignOffConfig(newIsEnabled, newFormat))
}
}
sealed interface SignOffState {
object Loading : SignOffState
data class Loaded(val signOffConfig: SignOffConfig) : SignOffState
}