From ec157026deea7b72ff233a20c0ed40fa548f75d6 Mon Sep 17 00:00:00 2001 From: Iván Ávalos Date: Fri, 20 May 2022 23:21:37 -0500 Subject: - [shared] unitsFlow exposed to allow access to unfiltered units. - [android] Improved memory usage by using unitsFlow in map. - [ios] Not rewritten yet, filter won't work. --- .../TrackerMap/android/units/UnitsViewModel.kt | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (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 174d55e..b537c0b 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 @@ -54,6 +54,7 @@ class UnitsViewModel( private var _searchQuery = savedStateHandle.getLiveData("searchQuery", "") private var _unitsDisplayMode = MutableLiveData(UnitsDisplayMode.MAP) private var _units = MutableLiveData>() + private var _displayedUnits = MutableLiveData>() private var _oldSelectedUnit = MutableLiveData() private var _selectedUnit = MutableLiveData() private var _mapLayerType = MutableLiveData() @@ -63,6 +64,7 @@ class UnitsViewModel( val searchQuery: LiveData get() = _searchQuery val unitsDisplayMode: LiveData get() = _unitsDisplayMode val units: LiveData> get() = _units + val displayedUnits: LiveData> get() = _displayedUnits val oldSelectedUnit: LiveData get() = _oldSelectedUnit val selectedUnit: LiveData get() = _selectedUnit val mapLayerType: LiveData get() = _mapLayerType @@ -73,16 +75,27 @@ class UnitsViewModel( Log.d("UnitsViewModel", "Initializing Units View Model") unitsController.fetchUnits(viewModelScope) viewModelScope.launch { - setupObservers() + setupUnitsObserver() } + viewModelScope.launch { + setupDisplayedUnitsObserver() + } + viewModelScope.launch { setupGeofenceObserver() } } - private suspend fun setupObservers() { - Log.d("UnitsViewModel", "Setup observers") + private suspend fun setupUnitsObserver() { unitsController.displayedUnitsFlow.collect { units -> + Log.d("UnitsViewModel", "Collecting units") + this._displayedUnits.value = units + } + } + + private suspend fun setupDisplayedUnitsObserver() { + unitsController.unitsFlow.collect { units -> + Log.d("UnitsViewModel", "Collecting displayed units") this._units.value = units updateSelectedUnit() } @@ -90,6 +103,7 @@ class UnitsViewModel( private suspend fun setupGeofenceObserver() { geofenceController.geofencesFlow.collect { + Log.d("UnitsViewModel", "Collecting geofences") this._geofences.postValue(it) } } -- cgit v1.2.3