From 75b566a38dcfbf4c095838bd2c1371e277799ab2 Mon Sep 17 00:00:00 2001 From: aminecmi Date: Wed, 24 Aug 2022 13:58:24 +0200 Subject: [PATCH] Some cleaning to handle actions on connection restore. --- .../apps/readerforselfossv2/android/MyApp.kt | 9 ++++++++- .../android/viewmodel/AppViewModel.kt | 18 ++++++++++-------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/MyApp.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/MyApp.kt index 887fc5a..3345124 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/MyApp.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/MyApp.kt @@ -69,7 +69,14 @@ class MyApp : MultiDexApplication(), DIAware { ProcessLifecycleOwner.get().lifecycle.addObserver(AppLifeCycleObserver(connectivityStatus, repository)) CoroutineScope(Dispatchers.Main).launch { - viewModel.toastMessageProvider.collect { toastMessage -> + viewModel.networkAvailableProvider.collect { networkAvailable -> + val toastMessage = if (networkAvailable) { + repository.handleDBActions() + R.string.network_connectivity_retrieved + } else { + R.string.network_connectivity_lost + } + Toast.makeText( applicationContext, toastMessage, diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/viewmodel/AppViewModel.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/viewmodel/AppViewModel.kt index 9320762..018900e 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/viewmodel/AppViewModel.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/viewmodel/AppViewModel.kt @@ -9,19 +9,21 @@ import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.launch class AppViewModel(private val repository: Repository) : ViewModel() { - private val _toastMessageProvider = MutableSharedFlow() - val toastMessageProvider = _toastMessageProvider.asSharedFlow() + private val _networkAvailableProvider = MutableSharedFlow() + val networkAvailableProvider = _networkAvailableProvider.asSharedFlow() private var wasConnected = true init { viewModelScope.launch { repository.isConnectionAvailable.collect { isConnected -> - if (isConnected && !wasConnected && repository.connectionMonitored) { - _toastMessageProvider.emit(R.string.network_connectivity_retrieved) - wasConnected = true - } else if (!isConnected && wasConnected && repository.connectionMonitored){ - _toastMessageProvider.emit(R.string.network_connectivity_lost) - wasConnected = false + if (repository.connectionMonitored) { + if (isConnected && !wasConnected && repository.connectionMonitored) { + _networkAvailableProvider.emit(true) + wasConnected = true + } else if (!isConnected && wasConnected && repository.connectionMonitored){ + _networkAvailableProvider.emit(false) + wasConnected = false + } } } }