Sudarshan
08/27/2025, 10:05 AMSudarshan
08/27/2025, 10:19 AMviewmodel
which should be able to change the locale in real-time based on the events it received from the composable.
// Viewmodel
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import compose.app.shared.util.LocaleManager
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import legalbot.user.onboarding.domain.model.language.Language
import legalbot.user.onboarding.domain.useCase.language.LanguageUseCase
internal class LanguagePageViewModel(
private val languageUseCase: LanguageUseCase,
private val localeManager: LocaleManager
) : ViewModel() {
var uiState = MutableStateFlow(value = LanguagePageUiState())
private set
init {
viewModelScope.launch {
languageUseCase.getLanguages().collect { languages ->
uiState.update { value ->
value.copy(languages = languages)
}
}
}
}
fun updateSelectedLanguage(language: Language) {
languageUseCase.updateSelectedLanguage(language = language)
localeManager.setLocale(locale = language.locale)
}
}
Sudarshan
08/27/2025, 10:20 AM// Locale manager class
@Suppress("EXPECT_ACTUAL_CLASSIFIERS_ARE_IN_BETA_WARNING")
expect class LocaleManager {
fun setLocale(locale: String)
}
Konstantin Tskhovrebov
08/27/2025, 10:49 AMPavel Habžanský
08/27/2025, 10:59 AMSudarshan
08/27/2025, 11:01 AMOrlando
08/27/2025, 6:41 PM