Some cleaning to handle actions on connection restore.

This commit is contained in:
aminecmi 2022-08-24 13:58:24 +02:00
parent fb572dbb27
commit 75b566a38d
2 changed files with 18 additions and 9 deletions

View File

@ -69,7 +69,14 @@ class MyApp : MultiDexApplication(), DIAware {
ProcessLifecycleOwner.get().lifecycle.addObserver(AppLifeCycleObserver(connectivityStatus, repository)) ProcessLifecycleOwner.get().lifecycle.addObserver(AppLifeCycleObserver(connectivityStatus, repository))
CoroutineScope(Dispatchers.Main).launch { 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( Toast.makeText(
applicationContext, applicationContext,
toastMessage, toastMessage,

View File

@ -9,19 +9,21 @@ import kotlinx.coroutines.flow.asSharedFlow
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
class AppViewModel(private val repository: Repository) : ViewModel() { class AppViewModel(private val repository: Repository) : ViewModel() {
private val _toastMessageProvider = MutableSharedFlow<Int>() private val _networkAvailableProvider = MutableSharedFlow<Boolean>()
val toastMessageProvider = _toastMessageProvider.asSharedFlow() val networkAvailableProvider = _networkAvailableProvider.asSharedFlow()
private var wasConnected = true private var wasConnected = true
init { init {
viewModelScope.launch { viewModelScope.launch {
repository.isConnectionAvailable.collect { isConnected -> repository.isConnectionAvailable.collect { isConnected ->
if (isConnected && !wasConnected && repository.connectionMonitored) { if (repository.connectionMonitored) {
_toastMessageProvider.emit(R.string.network_connectivity_retrieved) if (isConnected && !wasConnected && repository.connectionMonitored) {
wasConnected = true _networkAvailableProvider.emit(true)
} else if (!isConnected && wasConnected && repository.connectionMonitored){ wasConnected = true
_toastMessageProvider.emit(R.string.network_connectivity_lost) } else if (!isConnected && wasConnected && repository.connectionMonitored){
wasConnected = false _networkAvailableProvider.emit(false)
wasConnected = false
}
} }
} }
} }