aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/foundation/e/advancedprivacy/domain
diff options
context:
space:
mode:
authorGuillaume Jacquart <guillaume.jacquart@hoodbrains.com>2023-05-11 11:29:14 +0000
committerGuillaume Jacquart <guillaume.jacquart@hoodbrains.com>2023-05-11 11:29:14 +0000
commitc0596ecc6236594d7a008219e978c9220984176b (patch)
tree8bf557691e803a529fc3671e2b44fc0348013c9e /app/src/main/java/foundation/e/advancedprivacy/domain
parent5a432ecde520ee039786848296e5227571404158 (diff)
parentd94e8043e82b3402689c229acef8d8ccf2959c36 (diff)
downloadadvanced-privacy-c0596ecc6236594d7a008219e978c9220984176b.tar.gz
Merge branch '1222-features_switch_wrong_state' into 'main'
1222: tight toggle feature to UI switch state. See merge request e/os/advanced-privacy!132
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
+ }
}
}