From 92ab928f9efd238be7232ee4ec5962bfbb5a0e12 Mon Sep 17 00:00:00 2001 From: Isidro Henoch Date: Mon, 31 Jan 2022 17:42:26 -0600 Subject: Tries to fix the units update issue --- .../main/java/mx/trackermap/TrackerMap/android/units/UnitsActivity.kt | 1 + .../java/mx/trackermap/TrackerMap/android/units/UnitsViewModel.kt | 4 ++++ 2 files changed, 5 insertions(+) (limited to 'androidApp/src/main/java/mx/trackermap/TrackerMap') 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) -- cgit v1.2.3 From 9d753c9fa9e93171206e6036c1889ea17cac9db6 Mon Sep 17 00:00:00 2001 From: Iván Ávalos Date: Mon, 31 Jan 2022 22:47:33 -0600 Subject: Attach tickerFlow to viewModelScope in an attempt to bind it to app lifecycle more effectively --- .../mx/trackermap/TrackerMap/android/units/UnitsActivity.kt | 1 - .../trackermap/TrackerMap/android/units/UnitsViewModel.kt | 5 +---- .../mx/trackermap/TrackerMap/controllers/UnitsController.kt | 13 ++----------- 3 files changed, 3 insertions(+), 16 deletions(-) (limited to 'androidApp/src/main/java/mx/trackermap/TrackerMap') 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 a327234..4371eed 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,7 +78,6 @@ 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 8401ee7..ba29090 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 @@ -69,6 +69,7 @@ class UnitsViewModel( init { Log.d("UnitsViewModel", "Initializing Units View Model") + unitsController.fetchUnits(viewModelScope) viewModelScope.launch { setupObservers() } @@ -90,10 +91,6 @@ 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 e74c7c4..a5d5bd7 100644 --- a/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/controllers/UnitsController.kt +++ b/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/controllers/UnitsController.kt @@ -48,19 +48,14 @@ class UnitsController( private val unitsFlow = MutableStateFlow>(emptyList()) private val queryFlow = MutableStateFlow("") - private var unitsUpdateJob: Job? = null - init { - GlobalScope.launch { - fetchUnits(this) - } GlobalScope.launch { setupFlows() } } - private suspend fun fetchUnits(scope: CoroutineScope) { - unitsUpdateJob = Coroutines.tickerFlow(UPDATE_TIME.seconds) + fun fetchUnits(scope: CoroutineScope) { + Coroutines.tickerFlow(UPDATE_TIME.seconds) .map { print("Fetching new positions...\n") positionsApi.positionsGet() @@ -90,10 +85,6 @@ class UnitsController( .launchIn(scope) } - fun stopUpdates() { - unitsUpdateJob?.cancel() - } - fun search(query: String) { queryFlow.value = query } -- cgit v1.2.3