diff options
Diffstat (limited to 'app/src/main/java/foundation/e/advancedprivacy/domain')
2 files changed, 27 insertions, 8 deletions
diff --git a/app/src/main/java/foundation/e/advancedprivacy/domain/usecases/GetQuickPrivacyStateUseCase.kt b/app/src/main/java/foundation/e/advancedprivacy/domain/usecases/GetQuickPrivacyStateUseCase.kt index 475c05d..b82918e 100644 --- a/app/src/main/java/foundation/e/advancedprivacy/domain/usecases/GetQuickPrivacyStateUseCase.kt +++ b/app/src/main/java/foundation/e/advancedprivacy/domain/usecases/GetQuickPrivacyStateUseCase.kt @@ -73,16 +73,25 @@ class GetQuickPrivacyStateUseCase( val ipScramblingMode: Flow<InternetPrivacyMode> = localStateRepository.internetPrivacyMode - fun toggleTrackers() { - localStateRepository.setBlockTrackers(!localStateRepository.blockTrackers.value) + fun toggleTrackers(enabled: Boolean?) { + val value = enabled ?: !localStateRepository.blockTrackers.value + if (value != localStateRepository.blockTrackers.value) { + localStateRepository.setBlockTrackers(value) + } } - fun toggleLocation() { - localStateRepository.setFakeLocationEnabled(!localStateRepository.fakeLocationEnabled.value) + fun toggleLocation(enabled: Boolean?) { + val value = enabled ?: !localStateRepository.fakeLocationEnabled.value + if (value != localStateRepository.fakeLocationEnabled.value) { + localStateRepository.setFakeLocationEnabled(value) + } } - fun toggleIpScrambling() { - localStateRepository.setIpScramblingSetting(!localStateRepository.ipScramblingSetting.value) + fun toggleIpScrambling(enabled: Boolean?) { + val value = enabled ?: !localStateRepository.ipScramblingSetting.value + if (value != localStateRepository.ipScramblingSetting.value) { + localStateRepository.setIpScramblingSetting(value) + } } val otherVpnRunning: SharedFlow<ApplicationDescription> = localStateRepository.otherVpnRunning diff --git a/app/src/main/java/foundation/e/advancedprivacy/domain/usecases/IpScramblingStateUseCase.kt b/app/src/main/java/foundation/e/advancedprivacy/domain/usecases/IpScramblingStateUseCase.kt index 8c94602..6ae0746 100644 --- a/app/src/main/java/foundation/e/advancedprivacy/domain/usecases/IpScramblingStateUseCase.kt +++ b/app/src/main/java/foundation/e/advancedprivacy/domain/usecases/IpScramblingStateUseCase.kt @@ -30,6 +30,7 @@ import foundation.e.privacymodules.permissions.data.ApplicationDescription import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.channels.awaitClose +import kotlinx.coroutines.delay import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.callbackFlow @@ -75,8 +76,17 @@ class IpScramblingStateUseCase( } } - coroutineScope.launch { - internetPrivacyMode.collect { localStateRepository.internetPrivacyMode.value = it } + coroutineScope.launch(Dispatchers.IO) { + internetPrivacyMode.collect { + if ( + it == REAL_IP && + localStateRepository.internetPrivacyMode.value == REAL_IP_LOADING + ) { + // Wait for orbot to relax before allowing user to reactivate it. + delay(1000) + } + localStateRepository.internetPrivacyMode.value = it + } } } |