aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIsidro Henoch <imhenoch@protonmail.com>2022-01-31 17:42:26 -0600
committerIsidro Henoch <imhenoch@protonmail.com>2022-01-31 17:42:26 -0600
commit92ab928f9efd238be7232ee4ec5962bfbb5a0e12 (patch)
tree3dcca296c05f575f0673bf4028907126134d9670
parent7f1388bc554a3ee68a1865d2a219395805a79575 (diff)
downloadetbsa-trackermap-mobile-92ab928f9efd238be7232ee4ec5962bfbb5a0e12.tar.gz
etbsa-trackermap-mobile-92ab928f9efd238be7232ee4ec5962bfbb5a0e12.tar.bz2
etbsa-trackermap-mobile-92ab928f9efd238be7232ee4ec5962bfbb5a0e12.zip
Tries to fix the units update issue
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsActivity.kt1
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsViewModel.kt4
-rw-r--r--shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/controllers/UnitsController.kt9
3 files changed, 13 insertions, 1 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 4371eed..a327234 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
@@ -78,6 +78,7 @@ class UnitsActivity : AppCompatActivity() {
override fun onDestroy() {
super.onDestroy()
_binding = null
+ unitsViewModel.stopUpdates()
}
private fun setupViews() {
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 d7b6db1..8401ee7 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
@@ -90,6 +90,10 @@ class UnitsViewModel(
}
}
+ fun stopUpdates() {
+ unitsController.stopUpdates()
+ }
+
fun selectUnit(unit: UnitInformation) {
Log.d("UnitsViewModel", "Selecting unit ${unit.device.name}")
_selectedUnit.postValue(unit)
diff --git a/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/controllers/UnitsController.kt b/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/controllers/UnitsController.kt
index b282a34..e74c7c4 100644
--- a/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/controllers/UnitsController.kt
+++ b/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/controllers/UnitsController.kt
@@ -32,6 +32,7 @@ import mx.trackermap.TrackerMap.client.models.UnitInformation
import mx.trackermap.TrackerMap.utils.Coroutines
import kotlin.time.Duration.Companion.seconds
import kotlin.time.ExperimentalTime
+import kotlinx.coroutines.Job
@DelicateCoroutinesApi
@ExperimentalTime
@@ -47,6 +48,8 @@ class UnitsController(
private val unitsFlow = MutableStateFlow<List<UnitInformation>>(emptyList())
private val queryFlow = MutableStateFlow("")
+ private var unitsUpdateJob: Job? = null
+
init {
GlobalScope.launch {
fetchUnits(this)
@@ -57,7 +60,7 @@ class UnitsController(
}
private suspend fun fetchUnits(scope: CoroutineScope) {
- Coroutines.tickerFlow(UPDATE_TIME.seconds)
+ unitsUpdateJob = Coroutines.tickerFlow(UPDATE_TIME.seconds)
.map {
print("Fetching new positions...\n")
positionsApi.positionsGet()
@@ -87,6 +90,10 @@ class UnitsController(
.launchIn(scope)
}
+ fun stopUpdates() {
+ unitsUpdateJob?.cancel()
+ }
+
fun search(query: String) {
queryFlow.value = query
}