aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/foundation/e/advancedprivacy/domain
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/foundation/e/advancedprivacy/domain')
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/domain/usecases/GetQuickPrivacyStateUseCase.kt21
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/domain/usecases/IpScramblingStateUseCase.kt14
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
+ }
}
}