Using Duration to have clearer syntax
This commit is contained in:
parent
0944b2ff39
commit
49ad37a7f6
@ -22,5 +22,3 @@ const val DEFAULT_PIN_ID = "DEFAULT_PIN_ID"
|
|||||||
|
|
||||||
const val INITIAL_MAP_ZOOM_IN_PREVIEW = 15.0
|
const val INITIAL_MAP_ZOOM_IN_PREVIEW = 15.0
|
||||||
const val INITIAL_MAP_ZOOM_IN_TIMELINE = 17.0
|
const val INITIAL_MAP_ZOOM_IN_TIMELINE = 17.0
|
||||||
const val MIN_TIME_TO_UPDATE_LOCATION_MILLIS = 5 * 1_000L // every 5 seconds
|
|
||||||
const val MIN_DISTANCE_TO_UPDATE_LOCATION_METERS = 10f
|
|
||||||
|
@ -36,6 +36,10 @@ import kotlinx.coroutines.launch
|
|||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import javax.inject.Singleton
|
import javax.inject.Singleton
|
||||||
|
import kotlin.time.Duration.Companion.seconds
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
const val MIN_DISTANCE_TO_UPDATE_LOCATION_METERS = 10f
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
class LocationTracker @Inject constructor(
|
class LocationTracker @Inject constructor(
|
||||||
@ -64,6 +68,9 @@ class LocationTracker @Inject constructor(
|
|||||||
private var firstLocationHandled = false
|
private var firstLocationHandled = false
|
||||||
private val _locations = MutableSharedFlow<Location>(replay = 1)
|
private val _locations = MutableSharedFlow<Location>(replay = 1)
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
val minDurationToUpdateLocationMillis = 5.seconds.inWholeMilliseconds
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SharedFlow to collect location updates.
|
* SharedFlow to collect location updates.
|
||||||
*/
|
*/
|
||||||
@ -71,7 +78,7 @@ class LocationTracker @Inject constructor(
|
|||||||
.onEach { Timber.d("new location emitted") }
|
.onEach { Timber.d("new location emitted") }
|
||||||
.debounce {
|
.debounce {
|
||||||
if (firstLocationHandled) {
|
if (firstLocationHandled) {
|
||||||
MIN_TIME_TO_UPDATE_LOCATION_MILLIS
|
minDurationToUpdateLocationMillis
|
||||||
} else {
|
} else {
|
||||||
firstLocationHandled = true
|
firstLocationHandled = true
|
||||||
0
|
0
|
||||||
@ -103,7 +110,7 @@ class LocationTracker @Inject constructor(
|
|||||||
|
|
||||||
locationManager.requestLocationUpdates(
|
locationManager.requestLocationUpdates(
|
||||||
provider,
|
provider,
|
||||||
MIN_TIME_TO_UPDATE_LOCATION_MILLIS,
|
minDurationToUpdateLocationMillis,
|
||||||
MIN_DISTANCE_TO_UPDATE_LOCATION_METERS,
|
MIN_DISTANCE_TO_UPDATE_LOCATION_METERS,
|
||||||
this
|
this
|
||||||
)
|
)
|
||||||
|
@ -75,19 +75,19 @@ class LocationTrackerTest {
|
|||||||
verifyOrder {
|
verifyOrder {
|
||||||
fakeLocationManager.instance.requestLocationUpdates(
|
fakeLocationManager.instance.requestLocationUpdates(
|
||||||
LocationManager.FUSED_PROVIDER,
|
LocationManager.FUSED_PROVIDER,
|
||||||
MIN_TIME_TO_UPDATE_LOCATION_MILLIS,
|
locationTracker.minDurationToUpdateLocationMillis,
|
||||||
MIN_DISTANCE_TO_UPDATE_LOCATION_METERS,
|
MIN_DISTANCE_TO_UPDATE_LOCATION_METERS,
|
||||||
locationTracker
|
locationTracker
|
||||||
)
|
)
|
||||||
fakeLocationManager.instance.requestLocationUpdates(
|
fakeLocationManager.instance.requestLocationUpdates(
|
||||||
LocationManager.GPS_PROVIDER,
|
LocationManager.GPS_PROVIDER,
|
||||||
MIN_TIME_TO_UPDATE_LOCATION_MILLIS,
|
locationTracker.minDurationToUpdateLocationMillis,
|
||||||
MIN_DISTANCE_TO_UPDATE_LOCATION_METERS,
|
MIN_DISTANCE_TO_UPDATE_LOCATION_METERS,
|
||||||
locationTracker
|
locationTracker
|
||||||
)
|
)
|
||||||
fakeLocationManager.instance.requestLocationUpdates(
|
fakeLocationManager.instance.requestLocationUpdates(
|
||||||
LocationManager.NETWORK_PROVIDER,
|
LocationManager.NETWORK_PROVIDER,
|
||||||
MIN_TIME_TO_UPDATE_LOCATION_MILLIS,
|
locationTracker.minDurationToUpdateLocationMillis,
|
||||||
MIN_DISTANCE_TO_UPDATE_LOCATION_METERS,
|
MIN_DISTANCE_TO_UPDATE_LOCATION_METERS,
|
||||||
locationTracker
|
locationTracker
|
||||||
)
|
)
|
||||||
@ -154,7 +154,7 @@ class LocationTrackerTest {
|
|||||||
locationTracker.onLocationChanged(fusedLocation)
|
locationTracker.onLocationChanged(fusedLocation)
|
||||||
locationTracker.onLocationChanged(gpsLocation)
|
locationTracker.onLocationChanged(gpsLocation)
|
||||||
locationTracker.onLocationChanged(networkLocation)
|
locationTracker.onLocationChanged(networkLocation)
|
||||||
advanceTimeBy(MIN_TIME_TO_UPDATE_LOCATION_MILLIS + 1)
|
advanceTimeBy(locationTracker.minDurationToUpdateLocationMillis + 1)
|
||||||
|
|
||||||
val expectedLocationData = LocationData(
|
val expectedLocationData = LocationData(
|
||||||
latitude = 1.0,
|
latitude = 1.0,
|
||||||
@ -188,7 +188,7 @@ class LocationTrackerTest {
|
|||||||
|
|
||||||
locationTracker.onLocationChanged(gpsLocation)
|
locationTracker.onLocationChanged(gpsLocation)
|
||||||
locationTracker.onLocationChanged(networkLocation)
|
locationTracker.onLocationChanged(networkLocation)
|
||||||
advanceTimeBy(MIN_TIME_TO_UPDATE_LOCATION_MILLIS + 1)
|
advanceTimeBy(locationTracker.minDurationToUpdateLocationMillis + 1)
|
||||||
|
|
||||||
val expectedLocationData = LocationData(
|
val expectedLocationData = LocationData(
|
||||||
latitude = 1.0,
|
latitude = 1.0,
|
||||||
@ -217,7 +217,7 @@ class LocationTrackerTest {
|
|||||||
val resultUpdates = locationTracker.locations.test(this)
|
val resultUpdates = locationTracker.locations.test(this)
|
||||||
|
|
||||||
locationTracker.onLocationChanged(networkLocation)
|
locationTracker.onLocationChanged(networkLocation)
|
||||||
advanceTimeBy(MIN_TIME_TO_UPDATE_LOCATION_MILLIS + 1)
|
advanceTimeBy(locationTracker.minDurationToUpdateLocationMillis + 1)
|
||||||
|
|
||||||
val expectedLocationData = LocationData(
|
val expectedLocationData = LocationData(
|
||||||
latitude = 1.0,
|
latitude = 1.0,
|
||||||
@ -243,7 +243,7 @@ class LocationTrackerTest {
|
|||||||
val resultUpdates = locationTracker.locations.test(this)
|
val resultUpdates = locationTracker.locations.test(this)
|
||||||
|
|
||||||
locationTracker.requestLastKnownLocation()
|
locationTracker.requestLastKnownLocation()
|
||||||
advanceTimeBy(MIN_TIME_TO_UPDATE_LOCATION_MILLIS + 1)
|
advanceTimeBy(locationTracker.minDurationToUpdateLocationMillis + 1)
|
||||||
|
|
||||||
val expectedLocationData = LocationData(
|
val expectedLocationData = LocationData(
|
||||||
latitude = A_LATITUDE,
|
latitude = A_LATITUDE,
|
||||||
|
Loading…
Reference in New Issue
Block a user