diff --git a/src/main/kotlin/app/ErrorsManager.kt b/src/main/kotlin/app/ErrorsManager.kt index e1a8408..d03b35c 100644 --- a/src/main/kotlin/app/ErrorsManager.kt +++ b/src/main/kotlin/app/ErrorsManager.kt @@ -2,7 +2,9 @@ package app import app.di.TabScope import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.withContext import javax.inject.Inject @@ -13,16 +15,16 @@ class ErrorsManager @Inject constructor() { val errorsList: StateFlow> get() = _errorsList - private val _lastError = MutableStateFlow(null) - val lastError: StateFlow = _lastError + private val _error = MutableSharedFlow() + val error: SharedFlow = _error suspend fun addError(error: Error) = withContext(Dispatchers.IO) { _errorsList.value = _errorsList.value.toMutableList().apply { add(error) } - _lastError.value = error - println("LastError flow: ${_lastError.value}") + _error.emit(error) + println("LastError flow: $error") } fun removeError(error: Error) { diff --git a/src/main/kotlin/app/ui/AppTab.kt b/src/main/kotlin/app/ui/AppTab.kt index 042641b..619352c 100644 --- a/src/main/kotlin/app/ui/AppTab.kt +++ b/src/main/kotlin/app/ui/AppTab.kt @@ -34,14 +34,14 @@ fun AppTab( tabViewModel: TabViewModel, ) { val errorManager = tabViewModel.errorsManager - val lastError by errorManager.lastError.collectAsState() - var showError by remember { mutableStateOf(false) } + val lastError by errorManager.error.collectAsState(null) + val showError by tabViewModel.showError.collectAsState() if (lastError != null) { LaunchedEffect(lastError) { - showError = true + tabViewModel.showError.value = true delay(5000) - showError = false + tabViewModel.showError.value = false } } diff --git a/src/main/kotlin/app/viewmodels/TabViewModel.kt b/src/main/kotlin/app/viewmodels/TabViewModel.kt index 947dd5f..5c93450 100644 --- a/src/main/kotlin/app/viewmodels/TabViewModel.kt +++ b/src/main/kotlin/app/viewmodels/TabViewModel.kt @@ -70,6 +70,8 @@ class TabViewModel @Inject constructor( private val _repositoryState = MutableStateFlow(RepositoryState.SAFE) val repositoryState: StateFlow = _repositoryState + val showError = MutableStateFlow(false) + init { tabState.managerScope.launch { tabState.refreshData.collect { refreshType ->