summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorsaber safavi <saber.safavi@codic.se>2023-03-27 13:56:18 +0200
committerAlbin <albin@mullvad.net>2023-04-11 11:14:10 +0200
commit5bba60f78649ab38899c00515173196772c4676b (patch)
treea49eff3d08bc581d5defadded3d4367c83baa213
parent84a6c1e5943d2b1b7fe9a5d69b713cd338cb2769 (diff)
downloadmullvadvpn-5bba60f78649ab38899c00515173196772c4676b.tar.xz
mullvadvpn-5bba60f78649ab38899c00515173196772c4676b.zip
Add content blocker info dialogs
Co-authored-by: Albin <albin@mullvad.net>
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingScreen.kt19
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/AdvancedSettingsUiState.kt16
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/AdvancedFragment.kt3
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AdvancedSettingsViewModel.kt16
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AdvancedSettingsViewModelState.kt18
5 files changed, 66 insertions, 6 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingScreen.kt
index 73a3c8af82..2f918a2647 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingScreen.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingScreen.kt
@@ -41,7 +41,9 @@ import net.mullvad.mullvadvpn.compose.cell.SwitchComposeCell
import net.mullvad.mullvadvpn.compose.component.CollapsableAwareToolbarScaffold
import net.mullvad.mullvadvpn.compose.component.CollapsingTopBar
import net.mullvad.mullvadvpn.compose.component.drawVerticalScrollbar
+import net.mullvad.mullvadvpn.compose.dialog.ContentBlockersInfoDialog
import net.mullvad.mullvadvpn.compose.dialog.DnsDialog
+import net.mullvad.mullvadvpn.compose.dialog.MalwareInfoDialog
import net.mullvad.mullvadvpn.compose.dialog.MtuDialog
import net.mullvad.mullvadvpn.compose.extensions.itemWithDivider
import net.mullvad.mullvadvpn.compose.state.AdvancedSettingsUiState
@@ -73,6 +75,9 @@ private fun PreviewAdvancedSettings() {
onSaveDnsClick = {},
onRemoveDnsClick = {},
onCancelDnsDialogClick = {},
+ onContentsBlockerInfoClicked = {},
+ onMalwareInfoClicked = {},
+ onDismissInfoClicked = {},
onBackClick = {}
)
}
@@ -94,6 +99,9 @@ fun AdvancedSettingScreen(
onSaveDnsClick: () -> Unit = {},
onRemoveDnsClick: () -> Unit = {},
onCancelDnsDialogClick: () -> Unit = {},
+ onContentsBlockerInfoClicked: () -> Unit = {},
+ onMalwareInfoClicked: () -> Unit = {},
+ onDismissInfoClicked: () -> Unit = {},
onBackClick: () -> Unit = {}
) {
val cellVerticalSpacing = dimensionResource(id = R.dimen.cell_label_vertical_padding)
@@ -119,6 +127,12 @@ fun AdvancedSettingScreen(
onDismiss = { onCancelDnsDialogClick() }
)
}
+ is AdvancedSettingsUiState.ContentBlockersInfoDialogUiState -> {
+ ContentBlockersInfoDialog(onDismissInfoClicked)
+ }
+ is AdvancedSettingsUiState.MalwareInfoDialogUiState -> {
+ MalwareInfoDialog(onDismissInfoClicked)
+ }
else -> {
// NOOP
}
@@ -128,7 +142,6 @@ fun AdvancedSettingScreen(
var expandContentBlockersState by remember { mutableStateOf(false) }
val biggerPadding = 54.dp
val topPadding = 6.dp
-
CollapsingToolbarTheme {
val state = rememberCollapsingToolbarScaffoldState()
val progress = state.toolbarState.progress
@@ -176,7 +189,7 @@ fun AdvancedSettingScreen(
ExpandableComposeCell(
title = stringResource(R.string.dns_content_blockers_title),
isExpanded = !expandContentBlockersState,
- onInfoClicked = {},
+ onInfoClicked = { onContentsBlockerInfoClicked() },
onCellClicked = { expandContentBlockersState = !expandContentBlockersState }
)
}
@@ -206,7 +219,7 @@ fun AdvancedSettingScreen(
isEnabled = true,
isToggled = false,
onCellClicked = {},
- onInfoClicked = {},
+ onInfoClicked = { onMalwareInfoClicked() },
background = MullvadBlue20
)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/AdvancedSettingsUiState.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/AdvancedSettingsUiState.kt
index 59c3551eb3..659559f887 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/AdvancedSettingsUiState.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/AdvancedSettingsUiState.kt
@@ -29,6 +29,20 @@ sealed interface AdvancedSettingsUiState {
override val isCustomDnsEnabled: Boolean = false,
override val isAllowLanEnabled: Boolean = false,
override val customDnsItems: List<CustomDnsItem> = listOf(),
- val stagedDns: StagedDns,
+ val stagedDns: StagedDns
+ ) : AdvancedSettingsUiState
+
+ data class ContentBlockersInfoDialogUiState(
+ override val mtu: String = "",
+ override val isCustomDnsEnabled: Boolean = false,
+ override val isAllowLanEnabled: Boolean = false,
+ override val customDnsItems: List<CustomDnsItem> = listOf()
+ ) : AdvancedSettingsUiState
+
+ data class MalwareInfoDialogUiState(
+ override val mtu: String = "",
+ override val isCustomDnsEnabled: Boolean = false,
+ override val isAllowLanEnabled: Boolean = false,
+ override val customDnsItems: List<CustomDnsItem> = listOf()
) : AdvancedSettingsUiState
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/AdvancedFragment.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/AdvancedFragment.kt
index 018aa2fc6d..069f041a86 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/AdvancedFragment.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/AdvancedFragment.kt
@@ -38,6 +38,9 @@ class AdvancedFragment : BaseFragment() {
onSaveDnsClick = vm::onSaveDnsClick,
onRemoveDnsClick = vm::onRemoveDnsClick,
onCancelDnsDialogClick = vm::onCancelDialogClick,
+ onContentsBlockerInfoClicked = vm::onContentsBlockerInfoClicked,
+ onMalwareInfoClicked = vm::onMalwareInfoClicked,
+ onDismissInfoClicked = vm::onDismissInfoClicked,
onBackClick = { activity?.onBackPressed() }
)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AdvancedSettingsViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AdvancedSettingsViewModel.kt
index c29573e819..4a04a5af5a 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AdvancedSettingsViewModel.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AdvancedSettingsViewModel.kt
@@ -30,13 +30,13 @@ class AdvancedSettingsViewModel(
MutableStateFlow<AdvancedSettingsDialogState>(AdvancedSettingsDialogState.NoDialog)
private val vmState =
- combine(repository.settingsUpdates, dialogState) { settings, interaction ->
+ combine(repository.settingsUpdates, dialogState) { settings, dialogState ->
AdvancedSettingsViewModelState(
mtuValue = settings?.mtuString() ?: "",
isCustomDnsEnabled = settings?.isCustomDnsEnabled() ?: false,
customDnsList = settings?.addresses()?.asStringAddressList() ?: listOf(),
isAllowLanEnabled = settings?.allowLan ?: false,
- dialogState = interaction
+ dialogState = dialogState
)
}
.stateIn(
@@ -83,6 +83,18 @@ class AdvancedSettingsViewModel(
hideDialog()
}
+ fun onContentsBlockerInfoClicked() {
+ dialogState.update { AdvancedSettingsDialogState.ContentBlockersInfoDialog }
+ }
+
+ fun onMalwareInfoClicked() {
+ dialogState.update { AdvancedSettingsDialogState.MalwareInfoDialog }
+ }
+
+ fun onDismissInfoClicked() {
+ hideDialog()
+ }
+
fun onDnsClick(index: Int? = null) {
val stagedDns =
if (index == null) {
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AdvancedSettingsViewModelState.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AdvancedSettingsViewModelState.kt
index 002d478b8f..5f5171584d 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AdvancedSettingsViewModelState.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AdvancedSettingsViewModelState.kt
@@ -27,6 +27,20 @@ data class AdvancedSettingsViewModelState(
customDnsItems = customDnsList,
stagedDns = dialogState.stagedDns,
)
+ is AdvancedSettingsDialogState.ContentBlockersInfoDialog ->
+ AdvancedSettingsUiState.ContentBlockersInfoDialogUiState(
+ mtu = mtuValue,
+ isCustomDnsEnabled = isCustomDnsEnabled,
+ isAllowLanEnabled = isAllowLanEnabled,
+ customDnsItems = customDnsList
+ )
+ is AdvancedSettingsDialogState.MalwareInfoDialog ->
+ AdvancedSettingsUiState.MalwareInfoDialogUiState(
+ mtu = mtuValue,
+ isCustomDnsEnabled = isCustomDnsEnabled,
+ isAllowLanEnabled = isAllowLanEnabled,
+ customDnsItems = customDnsList
+ )
else ->
AdvancedSettingsUiState.DefaultUiState(
mtu = mtuValue,
@@ -57,6 +71,10 @@ sealed class AdvancedSettingsDialogState {
data class MtuDialog(val mtuEditValue: String) : AdvancedSettingsDialogState()
data class DnsDialog(val stagedDns: StagedDns) : AdvancedSettingsDialogState()
+
+ object ContentBlockersInfoDialog : AdvancedSettingsDialogState()
+
+ object MalwareInfoDialog : AdvancedSettingsDialogState()
}
sealed interface StagedDns {