diff options
author | Guillaume Jacquart <guillaume.jacquart@hoodbrains.com> | 2023-05-10 23:02:11 +0200 |
---|---|---|
committer | Guillaume Jacquart <guillaume.jacquart@hoodbrains.com> | 2023-05-10 23:02:11 +0200 |
commit | d94e8043e82b3402689c229acef8d8ccf2959c36 (patch) | |
tree | 8bf557691e803a529fc3671e2b44fc0348013c9e /app/src/main/java/foundation/e/advancedprivacy/features | |
parent | 5a432ecde520ee039786848296e5227571404158 (diff) | |
download | advanced-privacy-d94e8043e82b3402689c229acef8d8ccf2959c36.tar.gz |
1222: tight toggle feature to UI switch state.
Diffstat (limited to 'app/src/main/java/foundation/e/advancedprivacy/features')
-rw-r--r-- | app/src/main/java/foundation/e/advancedprivacy/features/dashboard/DashboardFragment.kt | 21 | ||||
-rw-r--r-- | app/src/main/java/foundation/e/advancedprivacy/features/dashboard/DashboardViewModel.kt | 13 |
2 files changed, 25 insertions, 9 deletions
diff --git a/app/src/main/java/foundation/e/advancedprivacy/features/dashboard/DashboardFragment.kt b/app/src/main/java/foundation/e/advancedprivacy/features/dashboard/DashboardFragment.kt index b30935c..02fd1ad 100644 --- a/app/src/main/java/foundation/e/advancedprivacy/features/dashboard/DashboardFragment.kt +++ b/app/src/main/java/foundation/e/advancedprivacy/features/dashboard/DashboardFragment.kt @@ -89,13 +89,25 @@ class DashboardFragment : NavToolbarFragment(R.layout.fragment_dashboard) { viewModel.submitAction(Action.ShowMostLeakedApp) } binding.toggleTrackers.setOnClickListener { - viewModel.submitAction(Action.ToggleTrackers) + viewModel.submitAction( + Action.ToggleTrackers( + enabled = binding.toggleTrackers.isChecked + ) + ) } binding.toggleLocation.setOnClickListener { - viewModel.submitAction(Action.ToggleLocation) + viewModel.submitAction( + Action.ToggleLocation( + enabled = binding.toggleLocation.isChecked + ) + ) } binding.toggleIpscrambling.setOnClickListener { - viewModel.submitAction(Action.ToggleIpScrambling) + viewModel.submitAction( + Action.ToggleIpScrambling( + enabled = binding.toggleIpscrambling.isChecked + ) + ) } binding.myLocation.container.setOnClickListener { viewModel.submitAction(Action.ShowFakeMyLocationAction) @@ -230,6 +242,9 @@ class DashboardFragment : NavToolbarFragment(R.layout.fragment_dashboard) { binding.toggleIpscrambling.isChecked = state.ipScramblingMode.isChecked val isLoading = state.ipScramblingMode.isLoading + binding.toggleIpscrambling.isEnabled = ( + state.ipScramblingMode != InternetPrivacyMode.REAL_IP_LOADING + ) binding.stateIpAddress.text = getString( if (state.ipScramblingMode == InternetPrivacyMode.HIDE_IP) R.string.dashboard_state_ipaddress_on diff --git a/app/src/main/java/foundation/e/advancedprivacy/features/dashboard/DashboardViewModel.kt b/app/src/main/java/foundation/e/advancedprivacy/features/dashboard/DashboardViewModel.kt index d82b073..cc1263b 100644 --- a/app/src/main/java/foundation/e/advancedprivacy/features/dashboard/DashboardViewModel.kt +++ b/app/src/main/java/foundation/e/advancedprivacy/features/dashboard/DashboardViewModel.kt @@ -89,13 +89,14 @@ class DashboardViewModel( fun submitAction(action: Action) = viewModelScope.launch { when (action) { is Action.ToggleTrackers -> { - getPrivacyStateUseCase.toggleTrackers() + getPrivacyStateUseCase.toggleTrackers(action.enabled) // Add delay here to prevent race condition with trackers state. delay(200) fetchStatistics().first() } - is Action.ToggleLocation -> getPrivacyStateUseCase.toggleLocation() - is Action.ToggleIpScrambling -> getPrivacyStateUseCase.toggleIpScrambling() + is Action.ToggleLocation -> getPrivacyStateUseCase.toggleLocation(action.enabled) + is Action.ToggleIpScrambling -> + getPrivacyStateUseCase.toggleIpScrambling(action.enabled) is Action.ShowFakeMyLocationAction -> _singleEvents.emit(SingleEvent.NavigateToLocationSingleEvent) is Action.ShowAppsPermissions -> @@ -146,9 +147,9 @@ class DashboardViewModel( } sealed class Action { - object ToggleTrackers : Action() - object ToggleLocation : Action() - object ToggleIpScrambling : Action() + data class ToggleTrackers(val enabled: Boolean) : Action() + data class ToggleLocation(val enabled: Boolean) : Action() + data class ToggleIpScrambling(val enabled: Boolean) : Action() object ShowFakeMyLocationAction : Action() object ShowInternetActivityPrivacyAction : Action() object ShowAppsPermissions : Action() |