From ddaab42e455eeb568fd39e6b168effacaafb4938 Mon Sep 17 00:00:00 2001 From: johan12345 Date: Mon, 1 Nov 2021 10:37:46 +0100 Subject: [PATCH] update filteredConnectors before chargepoints fixes incorrect marker colors --- .../vonforst/evmap/viewmodel/MapViewModel.kt | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/net/vonforst/evmap/viewmodel/MapViewModel.kt b/app/src/main/java/net/vonforst/evmap/viewmodel/MapViewModel.kt index 4db9e3a1..833e99fb 100644 --- a/app/src/main/java/net/vonforst/evmap/viewmodel/MapViewModel.kt +++ b/app/src/main/java/net/vonforst/evmap/viewmodel/MapViewModel.kt @@ -297,9 +297,6 @@ class MapViewModel(application: Application) : AndroidViewModel(application) { viewModelScope ) { data: Triple -> chargepoints.value = Resource.loading(chargepoints.value?.data) - filteredConnectors.value = null - filteredMinPower.value = null - filteredChargeCards.value = null val mapPosition = data.first val filters = data.second @@ -320,17 +317,13 @@ class MapViewModel(application: Application) : AndroidViewModel(application) { clusterDistance?.let { chargers = cluster(chargers, mapPosition.zoom, clusterDistance) } + filteredConnectors.value = null + filteredMinPower.value = null + filteredChargeCards.value = null chargepoints.value = Resource.success(chargers) return@throttleLatest } - var result = api.getChargepoints(refData, mapPosition.bounds, mapPosition.zoom, filters) - if (result.status == Status.ERROR && result.data == null) { - // keep old results if new data could not be loaded - result = Resource.error(result.message, chargepoints.value?.data) - } - chargepoints.value = result - if (api is GoingElectricApiWrapper) { val chargeCardsVal = filters.getMultipleChoiceValue("chargecards")!! filteredChargeCards.value = @@ -353,7 +346,19 @@ class MapViewModel(application: Application) : AndroidViewModel(application) { ) }.toSet() filteredMinPower.value = filters.getSliderValue("minPower") + } else { + filteredConnectors.value = null + filteredMinPower.value = null + filteredChargeCards.value = null } + + var result = api.getChargepoints(refData, mapPosition.bounds, mapPosition.zoom, filters) + if (result.status == Status.ERROR && result.data == null) { + // keep old results if new data could not be loaded + result = Resource.error(result.message, chargepoints.value?.data) + } + + chargepoints.value = result } private suspend fun loadAvailability(charger: ChargeLocation) {