diff options
| author | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2025-02-04 22:45:33 +0100 |
|---|---|---|
| committer | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2025-02-06 14:35:37 +0100 |
| commit | cb9ab4e67aa974aced5b626999aded509b5802a9 (patch) | |
| tree | 149c4ab0acb38dc8503ca18a5cec76cd9554477c /android | |
| parent | d5ff4cd33db419e07ef44dfcb253a3c1927022c8 (diff) | |
| download | mullvadvpn-cb9ab4e67aa974aced5b626999aded509b5802a9.tar.xz mullvadvpn-cb9ab4e67aa974aced5b626999aded509b5802a9.zip | |
Disable wireguard port setting if obfuscation is set
Diffstat (limited to 'android')
4 files changed, 50 insertions, 18 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/CustomPortCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/CustomPortCell.kt index 0ea351e8b1..bc6aebe5d0 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/CustomPortCell.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/CustomPortCell.kt @@ -12,9 +12,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.wrapContentWidth -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Check -import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -30,7 +27,7 @@ import net.mullvad.mullvadvpn.compose.component.SpacedColumn import net.mullvad.mullvadvpn.lib.model.Port import net.mullvad.mullvadvpn.lib.theme.AppTheme import net.mullvad.mullvadvpn.lib.theme.Dimens -import net.mullvad.mullvadvpn.lib.theme.color.AlphaInvisible +import net.mullvad.mullvadvpn.lib.theme.color.AlphaDisabled import net.mullvad.mullvadvpn.lib.theme.color.AlphaVisible import net.mullvad.mullvadvpn.lib.theme.color.onSelected import net.mullvad.mullvadvpn.lib.theme.color.selected @@ -65,6 +62,7 @@ fun CustomPortCell( port: Port?, mainTestTag: String = "", numberTestTag: String = "", + isEnabled: Boolean = true, onMainCellClicked: () -> Unit, onPortCellClicked: () -> Unit, ) { @@ -77,7 +75,7 @@ fun CustomPortCell( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start, modifier = - Modifier.clickable { onMainCellClicked() } + Modifier.clickable(enabled = isEnabled) { onMainCellClicked() } .height(Dimens.cellHeight) .weight(1f) .background( @@ -90,13 +88,10 @@ fun CustomPortCell( .padding(start = Dimens.cellStartPadding) .testTag(mainTestTag), ) { - Icon( - imageVector = Icons.Default.Check, - contentDescription = null, - tint = MaterialTheme.colorScheme.onSelected, - modifier = - Modifier.padding(end = Dimens.selectableCellTextMargin) - .alpha(if (isSelected) AlphaVisible else AlphaInvisible), + SelectableIcon( + isSelected = isSelected, + iconContentDescription = null, + isEnabled = isEnabled, ) BaseCellTitle( title = title, @@ -104,16 +99,17 @@ fun CustomPortCell( textAlign = TextAlign.Start, textColor = if (isSelected) { - MaterialTheme.colorScheme.onSelected - } else { - MaterialTheme.colorScheme.onSurface - }, + MaterialTheme.colorScheme.onSelected + } else { + MaterialTheme.colorScheme.onSurface + } + .copy(alpha = if (isEnabled) AlphaVisible else AlphaDisabled), ) } Spacer(modifier = Modifier.width(Dimens.verticalSpacer)) Box( modifier = - Modifier.clickable { onPortCellClicked() } + Modifier.clickable(enabled = isEnabled) { onPortCellClicked() } .height(Dimens.cellHeight) .wrapContentWidth() .defaultMinSize(minWidth = Dimens.customPortBoxMinWidth) @@ -122,7 +118,15 @@ fun CustomPortCell( ) { Text( text = port?.value?.toString() ?: stringResource(id = R.string.port), - color = MaterialTheme.colorScheme.onPrimary, + color = + MaterialTheme.colorScheme.onPrimary.copy( + alpha = + if (isEnabled) { + AlphaVisible + } else { + AlphaDisabled + } + ), modifier = Modifier.align(Alignment.Center), ) } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt index 0de30c408a..de8b7d289a 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt @@ -507,6 +507,7 @@ fun VpnSettingsScreen( title = stringResource(id = R.string.wireguard_port_title), onInfoClicked = { navigateToWireguardPortInfo(state.availablePortRanges) }, onCellClicked = { navigateToWireguardPortInfo(state.availablePortRanges) }, + isEnabled = state.isWireguardPortEnabled, ) } @@ -515,6 +516,7 @@ fun VpnSettingsScreen( title = stringResource(id = R.string.automatic), isSelected = state.selectedWireguardPort == Constraint.Any, onCellClicked = { onWireguardPortSelected(Constraint.Any) }, + isEnabled = state.isWireguardPortEnabled, ) } @@ -530,6 +532,7 @@ fun VpnSettingsScreen( ), isSelected = state.selectedWireguardPort.getOrNull() == port, onCellClicked = { onWireguardPortSelected(Constraint.Only(port)) }, + isEnabled = state.isWireguardPortEnabled, ) } } @@ -547,11 +550,32 @@ fun VpnSettingsScreen( } }, onPortCellClicked = navigateToWireguardPortDialog, + isEnabled = state.isWireguardPortEnabled, mainTestTag = LAZY_LIST_WIREGUARD_CUSTOM_PORT_TEXT_TEST_TAG, numberTestTag = LAZY_LIST_WIREGUARD_CUSTOM_PORT_NUMBER_TEST_TAG, ) } + if (!state.isWireguardPortEnabled) { + item { + Text( + text = + stringResource( + id = R.string.wg_port_subtitle, + stringResource(R.string.wireguard), + ), + style = MaterialTheme.typography.labelMedium, + color = MaterialTheme.colorScheme.onSurfaceVariant, + modifier = + Modifier.padding( + start = Dimens.cellStartPadding, + top = topPadding, + end = Dimens.cellEndPadding, + ), + ) + } + } + itemWithDivider { Spacer(modifier = Modifier.height(Dimens.cellLabelVerticalPadding)) InformationComposeCell( diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/VpnSettingsUiState.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/VpnSettingsUiState.kt index 49d0ebd4aa..c9fd0257c0 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/VpnSettingsUiState.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/VpnSettingsUiState.kt @@ -29,6 +29,9 @@ data class VpnSettingsUiState( selectedWireguardPort is Constraint.Only && selectedWireguardPort.value == customWireguardPort + val isWireguardPortEnabled = + obfuscationMode == ObfuscationMode.Auto || obfuscationMode == ObfuscationMode.Off + companion object { fun createDefault( mtu: Mtu? = null, diff --git a/android/lib/resource/src/main/res/values/strings.xml b/android/lib/resource/src/main/res/values/strings.xml index 6af8e233ba..567c7fde99 100644 --- a/android/lib/resource/src/main/res/values/strings.xml +++ b/android/lib/resource/src/main/res/values/strings.xml @@ -408,4 +408,5 @@ <string name="obfuscation_info_shadowsocks_batteryusage">Attention: Shadowsocks can increase battery consumption depending on data usage, such as streaming a video.</string> <string name="see_full_changelog">See full changelog</string> <string name="changelog_empty">No changelog was added for this version</string> + <string name="wg_port_subtitle">Set %s obfuscation to \"Automatic\" or \"Off\" below to activate this setting.</string> </resources> |
