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 | 29 |
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 ) } |