aboutsummaryrefslogtreecommitdiff
path: root/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2021-12-30 22:05:55 -0600
committerIván Ávalos <avalos@disroot.org>2021-12-30 22:43:25 -0600
commit1c4c5128fac5b1b6c8d9de29bd1ccf6262c7894b (patch)
tree1468e72b8b6afdb1527c7092751f85605efc7e4e /androidApp/src/main/java/mx/trackermap/TrackerMap/android/units
parentc11d9d0aaa0428e93df978642a54ba466ccf4e93 (diff)
downloadetbsa-trackermap-mobile-1c4c5128fac5b1b6c8d9de29bd1ccf6262c7894b.tar.gz
etbsa-trackermap-mobile-1c4c5128fac5b1b6c8d9de29bd1ccf6262c7894b.tar.bz2
etbsa-trackermap-mobile-1c4c5128fac5b1b6c8d9de29bd1ccf6262c7894b.zip
- ViewModel LiveData no longer externally mutable.
- Observers in fragments now owned by viewLifecycleOwner. - Disabled center animation on MapFragment startup - Search filter now triggered automatically. - Case insensitive filter logic.
Diffstat (limited to 'androidApp/src/main/java/mx/trackermap/TrackerMap/android/units')
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsActivity.kt16
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsViewModel.kt30
2 files changed, 20 insertions, 26 deletions
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsActivity.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsActivity.kt
index ff8929e..8a6f699 100644
--- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsActivity.kt
+++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsActivity.kt
@@ -20,9 +20,6 @@ class UnitsActivity : AppCompatActivity() {
private val unitsViewModel: UnitsViewModel by viewModel()
- private val mapFragment = MapFragment()
- private val devicesFragment = DevicesFragment()
-
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -48,12 +45,7 @@ class UnitsActivity : AppCompatActivity() {
}
binding.searchInput.doAfterTextChanged {
Log.d("UnitsActivity", "Search changed to ${it.toString()}")
- unitsViewModel.searchQuery.value = it.toString()
- }
- binding.searchInput.setOnEditorActionListener { _, _, _ ->
- Log.d("UnitsActivity", "Search key tapped")
- unitsViewModel.search()
- true
+ unitsViewModel.search(it.toString())
}
}
@@ -76,9 +68,9 @@ class UnitsActivity : AppCompatActivity() {
val newFragment =
when (displayMode) {
- UnitsViewModel.UnitsDisplayMode.LIST -> devicesFragment
- UnitsViewModel.UnitsDisplayMode.MAP -> mapFragment
- else -> devicesFragment
+ UnitsViewModel.UnitsDisplayMode.LIST -> DevicesFragment()
+ UnitsViewModel.UnitsDisplayMode.MAP -> MapFragment()
+ else -> DevicesFragment()
}
supportFragmentManager.commit {
replace(R.id.displayContainer, newFragment)
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 bb4efde..d8d7ea1 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
@@ -1,10 +1,7 @@
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 androidx.lifecycle.*
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
@@ -24,10 +21,15 @@ class UnitsViewModel(
private val unitsController: UnitsController by inject()
- var searchQuery = savedStateHandle.getLiveData("searchQuery", "")
- var unitsDisplayMode = MutableLiveData(UnitsDisplayMode.LIST)
- var units = MutableLiveData<List<UnitInformation>>()
- var selectedUnit = MutableLiveData<UnitInformation?>()
+ private var _searchQuery = savedStateHandle.getLiveData("searchQuery", "")
+ private var _unitsDisplayMode = MutableLiveData(UnitsDisplayMode.LIST)
+ private var _units = MutableLiveData<List<UnitInformation>>()
+ private var _selectedUnit = MutableLiveData<UnitInformation?>()
+
+ val searchQuery: LiveData<String> get() = _searchQuery
+ val unitsDisplayMode: LiveData<UnitsDisplayMode> get() = _unitsDisplayMode
+ val units: LiveData<List<UnitInformation>> get() = _units
+ val selectedUnit: LiveData<UnitInformation?> get() = _selectedUnit
init {
Log.d("UnitsViewModel", "Initializing Units View Model")
@@ -39,19 +41,19 @@ class UnitsViewModel(
private suspend fun setupObservers() {
Log.d("UnitsViewModel", "Setup observers")
unitsController.displayedUnitsFlow.collect { units ->
- this.units.value = units
+ this._units.value = units
}
}
fun selectUnit(unit: UnitInformation) {
Log.d("UnitsViewModel", "Selecting unit ${unit.device.name}")
- selectedUnit.postValue(unit)
+ _selectedUnit.postValue(unit)
setDisplayMode(UnitsDisplayMode.MAP)
}
fun setDisplayMode(displayMode: UnitsDisplayMode) {
Log.d("UnitsViewModel", "Setting Display mode to $displayMode")
- unitsDisplayMode.postValue(displayMode)
+ _unitsDisplayMode.postValue(displayMode)
}
fun toggleDisplayMode() {
@@ -62,10 +64,10 @@ class UnitsViewModel(
} else {
UnitsDisplayMode.MAP
}
- unitsDisplayMode.postValue(newDisplayMode)
+ _unitsDisplayMode.postValue(newDisplayMode)
}
- fun search() {
- unitsController.search(searchQuery.value!!)
+ fun search(query: String) {
+ unitsController.search(query)
}
} \ No newline at end of file