From 04c2889895483f5925c90ed7a856d38391fcab45 Mon Sep 17 00:00:00 2001 From: Isidro Henoch Date: Wed, 8 Dec 2021 04:28:51 -0600 Subject: WIP: Implements the basic structure for the units list/map - Updates the Devices and Positions APIs to properly construct the Url's query when there are null values - Adds a units controller to the shared module - Adds a devices and map fragment that each print the fetched units on the console - Adds a units view model to connect previously mentioned fragments with the units controller --- .../TrackerMap/android/units/UnitsViewModel.kt | 37 ++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) (limited to 'androidApp/src/main/java/mx/trackermap/TrackerMap/android/units') 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 11df89b..7ac6e28 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 @@ -2,15 +2,44 @@ package mx.trackermap.TrackerMap.android.units import android.util.Log import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import kotlinx.coroutines.DelicateCoroutinesApi +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.launch +import mx.trackermap.TrackerMap.client.models.UnitInformation +import mx.trackermap.TrackerMap.controllers.UnitsController +import org.koin.core.component.KoinComponent +import org.koin.core.component.inject -class UnitsViewModel : ViewModel() { +@DelicateCoroutinesApi +class UnitsViewModel( + private val savedStateHandle: SavedStateHandle +) : ViewModel(), KoinComponent { enum class UnitsDisplayMode { MAP, LIST } - var unitsDisplayMode = MutableLiveData(UnitsDisplayMode.MAP) + private val unitsController: UnitsController by inject() + + var unitsDisplayMode = MutableLiveData(UnitsDisplayMode.MAP) + var units = MutableLiveData>() + + init { + Log.d("UnitsViewModel", "Initializing Units View Model") + viewModelScope.launch { + setupObservers() + } + } + + private suspend fun setupObservers() { + Log.d("UnitsViewModel", "Setup observers") + unitsController.displayedUnitsFlow.collect { units -> + this.units.value = units + } + } fun toggleDisplayMode() { Log.d("UnitsViewModel", "Toggling Display mode") @@ -22,4 +51,8 @@ class UnitsViewModel : ViewModel() { } unitsDisplayMode.postValue(newDisplayMode) } + + fun search(query: String) { + unitsController.search(query) + } } \ No newline at end of file -- cgit v1.2.3