diff options
| author | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2025-02-06 14:36:04 +0100 |
|---|---|---|
| committer | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2025-02-06 14:36:04 +0100 |
| commit | 32f552330021d165b79ef043df8ee8d0979372da (patch) | |
| tree | 9d22beefe2a483641e42127cc6d842be41da8714 | |
| parent | d5ff4cd33db419e07ef44dfcb253a3c1927022c8 (diff) | |
| parent | a3e51910f4d270366b2bc7e4de6d82f88e5ae874 (diff) | |
| download | mullvadvpn-32f552330021d165b79ef043df8ee8d0979372da.tar.xz mullvadvpn-32f552330021d165b79ef043df8ee8d0979372da.zip | |
Merge branch 'disable-wg-port-when-obfuscation-is-used-droid-1482'
8 files changed, 67 insertions, 34 deletions
diff --git a/android/CHANGELOG.md b/android/CHANGELOG.md index f03a161797..ef57ebdef7 100644 --- a/android/CHANGELOG.md +++ b/android/CHANGELOG.md @@ -22,9 +22,14 @@ Line wrap the file at 100 chars. Th * **Security**: in case of vulnerabilities. ## [Unreleased] +### Changed +- Disable Wireguard port setting when a obfuscation is selected since it is not used when an + obfuscation is applied. + ### Removed - Remove Google's resolvers from encrypted DNS proxy. + ## [android/2024.10-beta2] - 2024-12-20 ### Fixed diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/BaseCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/BaseCell.kt index 17c4d24460..8e22be8b7e 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/BaseCell.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/BaseCell.kt @@ -148,7 +148,7 @@ fun BaseSubtitleCell( start = Dimens.cellStartPadding, top = Dimens.cellFooterTopPadding, end = Dimens.cellEndPadding, - bottom = Dimens.cellLabelVerticalPadding, + bottom = Dimens.cellVerticalSpacing, ) .fillMaxWidth() .wrapContentHeight(), 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..779b4792b4 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 @@ -320,7 +320,6 @@ fun VpnSettingsScreen( ) { if (state.systemVpnSettingsAvailable) { item { - Spacer(modifier = Modifier.height(Dimens.cellLabelVerticalPadding)) NavigationComposeCell( title = stringResource(id = R.string.auto_connect_and_lockdown_mode), onClick = { navigateToAutoConnectScreen() }, @@ -333,7 +332,6 @@ fun VpnSettingsScreen( } } else { item { - Spacer(modifier = Modifier.height(Dimens.cellLabelVerticalPadding)) HeaderSwitchComposeCell( title = stringResource(R.string.connect_on_start), isToggled = state.autoStartAndConnectOnBoot, @@ -350,7 +348,6 @@ fun VpnSettingsScreen( } item { - Spacer(modifier = Modifier.height(Dimens.cellLabelVerticalPadding)) HeaderSwitchComposeCell( title = stringResource(R.string.local_network_sharing), isToggled = state.isLocalNetworkSharingEnabled, @@ -358,7 +355,7 @@ fun VpnSettingsScreen( onCellClicked = { newValue -> onToggleLocalNetworkSharing(newValue) }, onInfoClicked = navigateToLocalNetworkSharingInfo, ) - Spacer(modifier = Modifier.height(Dimens.cellLabelVerticalPadding)) + Spacer(modifier = Modifier.height(Dimens.cellVerticalSpacing)) } itemWithDivider { @@ -443,7 +440,7 @@ fun VpnSettingsScreen( start = Dimens.cellStartPadding, top = topPadding, end = Dimens.cellEndPadding, - bottom = Dimens.cellLabelVerticalPadding, + bottom = Dimens.cellVerticalSpacing, ) ) } @@ -497,7 +494,7 @@ fun VpnSettingsScreen( start = Dimens.cellStartPadding, top = topPadding, end = Dimens.cellEndPadding, - bottom = Dimens.cellLabelVerticalPadding, + bottom = Dimens.cellVerticalSpacing, ), ) } @@ -507,6 +504,7 @@ fun VpnSettingsScreen( title = stringResource(id = R.string.wireguard_port_title), onInfoClicked = { navigateToWireguardPortInfo(state.availablePortRanges) }, onCellClicked = { navigateToWireguardPortInfo(state.availablePortRanges) }, + isEnabled = state.isWireguardPortEnabled, ) } @@ -515,6 +513,7 @@ fun VpnSettingsScreen( title = stringResource(id = R.string.automatic), isSelected = state.selectedWireguardPort == Constraint.Any, onCellClicked = { onWireguardPortSelected(Constraint.Any) }, + isEnabled = state.isWireguardPortEnabled, ) } @@ -530,6 +529,7 @@ fun VpnSettingsScreen( ), isSelected = state.selectedWireguardPort.getOrNull() == port, onCellClicked = { onWireguardPortSelected(Constraint.Only(port)) }, + isEnabled = state.isWireguardPortEnabled, ) } } @@ -547,13 +547,34 @@ 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)) + Spacer(modifier = Modifier.height(Dimens.cellVerticalSpacing)) InformationComposeCell( title = stringResource(R.string.obfuscation_title), onInfoClicked = navigateToObfuscationInfo, @@ -598,7 +619,7 @@ fun VpnSettingsScreen( } itemWithDivider { - Spacer(modifier = Modifier.height(Dimens.cellLabelVerticalPadding)) + Spacer(modifier = Modifier.height(Dimens.cellVerticalSpacing)) InformationComposeCell( title = stringResource(R.string.quantum_resistant_title), onInfoClicked = navigateToQuantumResistanceInfo, @@ -627,16 +648,13 @@ fun VpnSettingsScreen( isSelected = state.quantumResistant == QuantumResistantState.Off, onCellClicked = { onSelectQuantumResistanceSetting(QuantumResistantState.Off) }, ) - Spacer(modifier = Modifier.height(Dimens.cellLabelVerticalPadding)) + Spacer(modifier = Modifier.height(Dimens.cellVerticalSpacing)) } item { MtuComposeCell(mtuValue = state.mtu, onEditMtu = { navigateToMtuDialog(state.mtu) }) } - item { - MtuSubtitle(modifier = Modifier.testTag(LAZY_LIST_LAST_ITEM_TEST_TAG)) - Spacer(modifier = Modifier.height(Dimens.cellLabelVerticalPadding)) - } + item { MtuSubtitle(modifier = Modifier.testTag(LAZY_LIST_LAST_ITEM_TEST_TAG)) } item { ServerIpOverrides(navigateToServerIpOverrides) } } 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> diff --git a/android/lib/theme/src/main/kotlin/net/mullvad/mullvadvpn/lib/theme/dimensions/Dimensions.kt b/android/lib/theme/src/main/kotlin/net/mullvad/mullvadvpn/lib/theme/dimensions/Dimensions.kt index 6a5da5c18d..51b4f5efb8 100644 --- a/android/lib/theme/src/main/kotlin/net/mullvad/mullvadvpn/lib/theme/dimensions/Dimensions.kt +++ b/android/lib/theme/src/main/kotlin/net/mullvad/mullvadvpn/lib/theme/dimensions/Dimensions.kt @@ -16,10 +16,9 @@ data class Dimensions( val cellFooterTopPadding: Dp = 6.dp, val cellHeight: Dp = 56.dp, val cellHeightTwoRows: Dp = 72.dp, - val cellLabelVerticalPadding: Dp = 14.dp, val cellStartPadding: Dp = 14.dp, val cellTopPadding: Dp = 6.dp, - val cellVerticalSpacing: Dp = 14.dp, + val cellVerticalSpacing: Dp = 24.dp, val chipSpace: Dp = 8.dp, val chipVerticalPadding: Dp = 4.dp, val circularProgressBarLargeSize: Dp = 44.dp, diff --git a/desktop/packages/mullvad-vpn/locales/messages.pot b/desktop/packages/mullvad-vpn/locales/messages.pot index dd5747d6ad..0157e0c32f 100644 --- a/desktop/packages/mullvad-vpn/locales/messages.pot +++ b/desktop/packages/mullvad-vpn/locales/messages.pot @@ -2638,6 +2638,9 @@ msgstr "" msgid "See full changelog" msgstr "" +msgid "Set %s obfuscation to \"Automatic\" or \"Off\" below to activate this setting." +msgstr "" + msgid "Set WireGuard MTU value. Valid range: %d - %d." msgstr "" |
