diff options
| author | saber safavi <saber.safavi@codic.se> | 2023-03-27 13:56:18 +0200 |
|---|---|---|
| committer | Albin <albin@mullvad.net> | 2023-04-11 11:14:10 +0200 |
| commit | 5bba60f78649ab38899c00515173196772c4676b (patch) | |
| tree | a49eff3d08bc581d5defadded3d4367c83baa213 | |
| parent | 84a6c1e5943d2b1b7fe9a5d69b713cd338cb2769 (diff) | |
| download | mullvadvpn-5bba60f78649ab38899c00515173196772c4676b.tar.xz mullvadvpn-5bba60f78649ab38899c00515173196772c4676b.zip | |
Add content blocker info dialogs
Co-authored-by: Albin <albin@mullvad.net>
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 { |
