summaryrefslogtreecommitdiff
path: root/app/src/main/java/foundation/e/advancedprivacy/domain/usecases/FakeLocationStateUseCase.kt
diff options
context:
space:
mode:
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.kt29
1 files changed, 21 insertions, 8 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 282116e..8cf5f43 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
@@ -32,6 +32,7 @@ import foundation.e.advancedprivacy.domain.repositories.LocalStateRepository
import foundation.e.advancedprivacy.dummy.CityDataSource
import foundation.e.advancedprivacy.externalinterfaces.permissions.IPermissionsPrivacyModule
import foundation.e.advancedprivacy.fakelocation.domain.usecases.FakeLocationModule
+import foundation.e.advancedprivacy.features.location.FakeLocationState
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
@@ -49,11 +50,11 @@ class FakeLocationStateUseCase(
private val appContext: Context,
coroutineScope: CoroutineScope
) {
- private val _configuredLocationMode = MutableStateFlow<Triple<LocationMode, Float?, Float?>>(
- Triple(LocationMode.REAL_LOCATION, null, null)
+ private val _configuredLocationMode = MutableStateFlow<FakeLocationState>(
+ FakeLocationState(LocationMode.REAL_LOCATION, null, null, null, null, false, null, null, false)
)
- val configuredLocationMode: StateFlow<Triple<LocationMode, Float?, Float?>> = _configuredLocationMode
+ val configuredLocationMode: StateFlow<FakeLocationState> = _configuredLocationMode
init {
coroutineScope.launch {
@@ -76,8 +77,8 @@ class FakeLocationStateUseCase(
if (isEnabled && hasAcquireMockLocationPermission()) {
fakeLocationModule.startFakeLocation()
- fakeLocationModule.setFakeLocation(fakeLocation.first.toDouble(), fakeLocation.second.toDouble())
- localStateRepository.locationMode.value = configuredLocationMode.value.first
+ fakeLocationModule.setFakeLocation(localStateRepository.fakeAltitude.toDouble(), localStateRepository.fakeSpeed, localStateRepository.fakeJitter, fakeLocation.first.toDouble(), fakeLocation.second.toDouble())
+ localStateRepository.locationMode.value = configuredLocationMode.value.mode
} else {
fakeLocationModule.stopFakeLocation()
localStateRepository.locationMode.value = LocationMode.REAL_LOCATION
@@ -89,6 +90,12 @@ class FakeLocationStateUseCase(
permissionsModule.setAppOpMode(appDesc, AppOpsManager.OPSTR_MOCK_LOCATION, AppOpModes.ALLOWED)
}
+ fun setFakeLocationParameters(altitude: Float, speed: Float, jitter: Float) {
+ localStateRepository.fakeAltitude = altitude
+ localStateRepository.fakeSpeed = speed
+ localStateRepository.fakeJitter = jitter
+ }
+
fun setSpecificLocation(latitude: Float, longitude: Float) {
setFakeLocation(latitude to longitude, true)
}
@@ -115,16 +122,22 @@ class FakeLocationStateUseCase(
isFakeLocationEnabled: Boolean,
fakeLocation: Pair<Float, Float>,
isSpecificLocation: Boolean = false,
- ): Triple<LocationMode, Float?, Float?> {
- return Triple(
+ ): FakeLocationState {
+ return FakeLocationState(
when {
!isFakeLocationEnabled -> LocationMode.REAL_LOCATION
(fakeLocation in citiesRepository.citiesLocationsList && !isSpecificLocation) ->
LocationMode.RANDOM_LOCATION
else -> LocationMode.SPECIFIC_LOCATION
},
+ null,
+ null,
+ null,
+ null,
+ false,
fakeLocation.first,
- fakeLocation.second
+ fakeLocation.second,
+ false
)
}