From c5538ea3d64ecdae0f1b2f47d11ca2c296e7b599 Mon Sep 17 00:00:00 2001 From: Acclorite <140836141+Acclorite@users.noreply.github.com> Date: Sun, 20 Oct 2024 10:52:52 +0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=9B=A0=EF=B8=8F=20Change=20datastore=20ca?= =?UTF-8?q?lls=20to=20Main=20dispatcher?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Changed every call to Main dispatcher --- .../presentation/data/MainViewModel.kt | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/data/MainViewModel.kt b/app/src/main/java/ua/acclorite/book_story/presentation/data/MainViewModel.kt index 56d71bff..b07a5434 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/data/MainViewModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/data/MainViewModel.kt @@ -13,6 +13,7 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import ua.acclorite.book_story.domain.use_case.data_store.ChangeLanguage import ua.acclorite.book_story.domain.use_case.data_store.GetAllSettings import ua.acclorite.book_story.domain.use_case.data_store.SetDatastore @@ -395,7 +396,7 @@ class MainViewModel @Inject constructor( isSettingsReady.update { true } } - viewModelScope.launch(Dispatchers.IO) { + viewModelScope.launch(Dispatchers.Main) { combine( event.libraryViewModelReady, event.settingsViewModelReady @@ -415,7 +416,7 @@ class MainViewModel @Inject constructor( values.all { it } } - viewModelScope.launch(Dispatchers.IO) { + viewModelScope.launch(Dispatchers.Main) { isReady.first { bool -> if (bool) { _isReady.update { @@ -428,7 +429,7 @@ class MainViewModel @Inject constructor( } private fun handleLanguageUpdate(event: MainEvent.OnChangeLanguage) { - viewModelScope.launch(Dispatchers.Main) { + viewModelScope.launch(Dispatchers.Main.immediate) { changeLanguage.execute(event.value) updateStateWithSavedHandle { it.copy(language = event.value) @@ -460,7 +461,7 @@ class MainViewModel @Inject constructor( value: V, updateState: V.(MainState) -> MainState ) { - viewModelScope.launch(Dispatchers.IO) { + viewModelScope.launch(Dispatchers.Main.immediate) { setDatastore.execute(key = key, value = value) updateStateWithSavedHandle { value.updateState(it) @@ -471,12 +472,14 @@ class MainViewModel @Inject constructor( /** * Updates [MainState] along with [SavedStateHandle]. */ - private fun updateStateWithSavedHandle( + private suspend fun updateStateWithSavedHandle( function: (MainState) -> MainState ) { - _state.update { - stateHandle[Constants.provideMainState()] = function(it) - function(it) + withContext(Dispatchers.Main.immediate) { + _state.update { + stateHandle[Constants.provideMainState()] = function(it) + function(it) + } } } } \ No newline at end of file