diff options
Diffstat (limited to 'app/src/main/java/foundation/e/advancedprivacy/domain/usecases/FakeLocationStateUseCase.kt')
-rw-r--r-- | app/src/main/java/foundation/e/advancedprivacy/domain/usecases/FakeLocationStateUseCase.kt | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/app/src/main/java/foundation/e/advancedprivacy/domain/usecases/FakeLocationStateUseCase.kt b/app/src/main/java/foundation/e/advancedprivacy/domain/usecases/FakeLocationStateUseCase.kt index 5a16308..8831fff 100644 --- a/app/src/main/java/foundation/e/advancedprivacy/domain/usecases/FakeLocationStateUseCase.kt +++ b/app/src/main/java/foundation/e/advancedprivacy/domain/usecases/FakeLocationStateUseCase.kt @@ -25,7 +25,6 @@ import android.location.Location import android.location.LocationListener import android.location.LocationManager import android.os.Bundle -import android.util.Log import foundation.e.advancedprivacy.data.repositories.LocalStateRepository import foundation.e.advancedprivacy.domain.entities.LocationMode import foundation.e.advancedprivacy.dummy.CityDataSource @@ -38,6 +37,7 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch +import timber.log.Timber import kotlin.random.Random class FakeLocationStateUseCase( @@ -134,15 +134,7 @@ class FakeLocationStateUseCase( private var localListener = object : LocationListener { override fun onLocationChanged(location: Location) { - currentLocation.update { previous -> - if ((previous?.time ?: 0) + 1800 < location.time || - (previous?.accuracy ?: Float.MAX_VALUE) > location.accuracy - ) { - location - } else { - previous - } - } + currentLocation.update { location } } @Deprecated("Deprecated since API 29, never called.") @@ -198,13 +190,19 @@ class FakeLocationStateUseCase( ) } - networkProvider?.let { locationManager.getLastKnownLocation(it) } - ?: gpsProvider?.let { locationManager.getLastKnownLocation(it) } - ?.let { - localListener.onLocationChanged(it) - } + var lastKnownLocation = networkProvider?.let { + locationManager.getLastKnownLocation(it) + } + + if (lastKnownLocation == null) { + lastKnownLocation = gpsProvider?.let { + locationManager.getLastKnownLocation(it) + } + } + + lastKnownLocation?.let { localListener.onLocationChanged(it) } } catch (se: SecurityException) { - Log.e(TAG, "Missing permission", se) + Timber.e("Missing permission", se) } } } |