package com.vgmlr.wedge
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.unit.sp
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn
class MainViewModel(val dao: NoteDao, prefs: PreferenceManager) : ViewModel() {
val editorStyle = prefs.settings.map { settings ->
TextStyle(
fontSize = settings.editorFontSize.sp,
fontFamily = FontFamily.Monospace,
lineHeight = (settings.editorFontSize * settings.lineHeight).sp,
color = parseColor(settings.textColor)
)
}.stateIn(
viewModelScope,
SharingStarted.Eagerly,
TextStyle(
fontSize = WedgeConfig.FONT_SIZE_DEFAULT.sp,
fontFamily = FontFamily.Monospace,
lineHeight = (WedgeConfig.FONT_SIZE_DEFAULT * WedgeConfig.LINE_HEIGHT_DEFAULT).sp,
color = parseColor(WedgeConfig.TEXT_COLOR_DEFAULT)
)
)
}
class MainViewModelFactory(private val dao: NoteDao, private val prefs: PreferenceManager) : androidx.lifecycle.ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(modelClass: Class<T>): T {
return MainViewModel(dao, prefs) as T
}
}