From ee78ca31feb3bb9a76dd469ee69befe33c305a7b Mon Sep 17 00:00:00 2001 From: Johan von Forstner Date: Sat, 16 May 2020 17:06:39 +0200 Subject: [PATCH] fix race condition when loading chargepoints on app start --- .../main/java/net/vonforst/evmap/viewmodel/MapViewModel.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 7afc530f..9166d15b 100644 --- a/app/src/main/java/net/vonforst/evmap/viewmodel/MapViewModel.kt +++ b/app/src/main/java/net/vonforst/evmap/viewmodel/MapViewModel.kt @@ -3,6 +3,7 @@ package net.vonforst.evmap.viewmodel import android.app.Application import androidx.lifecycle.* import com.google.android.gms.maps.model.LatLngBounds +import kotlinx.coroutines.Job import kotlinx.coroutines.launch import net.vonforst.evmap.api.availability.ChargeLocationStatus import net.vonforst.evmap.api.availability.getAvailability @@ -24,6 +25,7 @@ class MapViewModel(application: Application, geApiKey: String) : AndroidViewMode private var api = GoingElectricApi.create(geApiKey, context = application) private var db = AppDatabase.getInstance(application) private var prefs = PreferenceDataSource(application) + private var chargepointLoader: Job? = null val bottomSheetState: MutableLiveData by lazy { MutableLiveData() @@ -120,10 +122,12 @@ class MapViewModel(application: Application, geApiKey: String) : AndroidViewMode mapPosition: MapPosition, filters: List> ) { + chargepointLoader?.cancel() + chargepoints.value = Resource.loading(chargepoints.value?.data) val bounds = mapPosition.bounds val zoom = mapPosition.zoom - viewModelScope.launch { + chargepointLoader = viewModelScope.launch { chargepoints.value = getChargepointsWithFilters(bounds, zoom, filters) } }