From edbd2c7713a0ba4e7e7a3ba6d59d16861ea4eb23 Mon Sep 17 00:00:00 2001 From: Iván Ávalos Date: Sun, 17 Sep 2023 21:56:55 -0600 Subject: - [shared] Implement network state monitoring - [android] UI reacts to network state - [ios] UI reacts to network state --- .../trackermap/TrackerMap/android/units/UnitsViewModel.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsViewModel.kt') diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsViewModel.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsViewModel.kt index b5ed78d..05962e9 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsViewModel.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsViewModel.kt @@ -27,6 +27,7 @@ import mx.trackermap.TrackerMap.client.models.Geofence import mx.trackermap.TrackerMap.client.models.MapLayer import mx.trackermap.TrackerMap.client.models.UnitInformation import mx.trackermap.TrackerMap.controllers.GeofencesController +import mx.trackermap.TrackerMap.controllers.NetworkController import mx.trackermap.TrackerMap.controllers.UnitsController import org.koin.core.component.KoinComponent import org.koin.core.component.inject @@ -48,9 +49,11 @@ class UnitsViewModel( val animated: Boolean, ) + private val networkController: NetworkController by inject() private val unitsController: UnitsController by inject() private val geofenceController: GeofencesController by inject() + private var _networkAvailable = MutableLiveData() private var _searchQuery = savedStateHandle.getLiveData("searchQuery", "") private var _unitsDisplayMode = MutableLiveData(UnitsDisplayMode.MAP) private var _units = MutableLiveData>() @@ -61,6 +64,7 @@ class UnitsViewModel( private var _geofences = MutableLiveData>() private val _camera = MutableLiveData() + val networkAvailable: LiveData get() = _networkAvailable val searchQuery: LiveData get() = _searchQuery val unitsDisplayMode: LiveData get() = _unitsDisplayMode val units: LiveData> get() = _units @@ -74,6 +78,9 @@ class UnitsViewModel( init { Log.d("UnitsViewModel", "Initializing Units View Model") unitsController.fetchUnits(viewModelScope) + viewModelScope.launch { + setupNetworkObserver() + } viewModelScope.launch { setupUnitsObserver() } @@ -86,6 +93,13 @@ class UnitsViewModel( } } + private suspend fun setupNetworkObserver() { + networkController.networkAvailable.collect { available -> + Log.d("UnitsViewModel", "Collecting network state") + _networkAvailable.value = available + } + } + private suspend fun setupUnitsObserver() { (unitsController.displayedUnitsFlow as StateFlow>).collect { units -> Log.d("UnitsViewModel", "Collecting units") -- cgit v1.2.3