DevicePoseProvider: improve getLocation() (#1454)
* Only take updated location when it is of better quality * Rename to AndroidLocation for clarification * be pedantic about licenses * fix race condition in DevicePoseProvider.kt * add possibility to explicitly skip cache upon requesting location updates for WeatherRepository.kt * LocationsRepository.kt: use getLocation() in combineTransform() to properly wait for & update on new locations * LocationItem.kt: fix getAzimuthDegrees() usage for userHeading
This commit is contained in:
@@ -288,7 +288,7 @@ class SearchVM : ViewModel(), KoinComponent {
|
||||
locationResults.mergeWith(
|
||||
results.locations?.filterNot { hiddenKeys.contains(it.key) }
|
||||
?.let { locations ->
|
||||
devicePoseProvider.lastLocation?.let {
|
||||
devicePoseProvider.lastCachedLocation?.let {
|
||||
locations.asSequence()
|
||||
.sortedWith { a, b ->
|
||||
a.distanceTo(it).compareTo(b.distanceTo(it))
|
||||
|
||||
@@ -167,7 +167,7 @@ fun LocationItem(
|
||||
|
||||
val userLocation by remember {
|
||||
viewModel.devicePoseProvider.getLocation()
|
||||
}.collectAsStateWithLifecycle(viewModel.devicePoseProvider.lastLocation)
|
||||
}.collectAsStateWithLifecycle(null)
|
||||
|
||||
val targetHeading by remember(userLocation, location) {
|
||||
if (userLocation != null) {
|
||||
@@ -180,9 +180,7 @@ fun LocationItem(
|
||||
}.collectAsStateWithLifecycle(null)
|
||||
|
||||
val userHeading by remember {
|
||||
if (userLocation != null) {
|
||||
viewModel.devicePoseProvider.getAzimuthDegrees()
|
||||
} else emptyFlow()
|
||||
viewModel.devicePoseProvider.getAzimuthDegrees()
|
||||
}.collectAsStateWithLifecycle(null)
|
||||
|
||||
val icon by viewModel.icon.collectAsStateWithLifecycle()
|
||||
|
||||
Reference in New Issue
Block a user