Skip to content

Commit cd1eb8a

Browse files
committed
Rename selected obfuscation and fix tests
1 parent 0341d75 commit cd1eb8a

File tree

15 files changed

+88
-87
lines changed

15 files changed

+88
-87
lines changed

android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ class VpnSettingsScreenTest {
316316
VpnSettingsScreen(
317317
state =
318318
VpnSettingsUiState.createDefault(
319-
customWireguardPort = Constraint.Only(Port(4000))
319+
customWireguardPort = Port(4000)
320320
)
321321
)
322322
}
@@ -339,7 +339,7 @@ class VpnSettingsScreenTest {
339339
state =
340340
VpnSettingsUiState.createDefault(
341341
selectedWireguardPort = Constraint.Only(Port(4000)),
342-
customWireguardPort = Constraint.Only(Port(4000)),
342+
customWireguardPort = Port(4000),
343343
),
344344
onWireguardPortSelected = onWireguardPortSelected,
345345
)

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SelectObfuscationCell.kt android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/ObfuscationModeCell.kt

+15-15
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ import androidx.compose.ui.tooling.preview.PreviewParameter
2121
import net.mullvad.mullvadvpn.R
2222
import net.mullvad.mullvadvpn.compose.preview.SelectObfuscationCellPreviewParameterProvider
2323
import net.mullvad.mullvadvpn.lib.model.Constraint
24+
import net.mullvad.mullvadvpn.lib.model.ObfuscationMode
2425
import net.mullvad.mullvadvpn.lib.model.Port
25-
import net.mullvad.mullvadvpn.lib.model.SelectedObfuscation
2626
import net.mullvad.mullvadvpn.lib.theme.AppTheme
2727
import net.mullvad.mullvadvpn.lib.theme.Dimens
2828
import net.mullvad.mullvadvpn.lib.theme.color.selected
@@ -31,13 +31,13 @@ import net.mullvad.mullvadvpn.lib.theme.typeface.listItemText
3131

3232
@Preview
3333
@Composable
34-
private fun PreviewSelectObfuscationCellCell(
34+
private fun PreviewObfuscationCell(
3535
@PreviewParameter(SelectObfuscationCellPreviewParameterProvider::class)
36-
selectedObfuscationCellData: Triple<SelectedObfuscation, Constraint<Port>, Boolean>
36+
selectedObfuscationCellData: Triple<ObfuscationMode, Constraint<Port>, Boolean>
3737
) {
3838
AppTheme {
39-
SelectObfuscationCell(
40-
selectedObfuscation = selectedObfuscationCellData.first,
39+
ObfuscationModeCell(
40+
obfuscationMode = selectedObfuscationCellData.first,
4141
port = selectedObfuscationCellData.second,
4242
isSelected = selectedObfuscationCellData.third,
4343
onSelected = {},
@@ -47,11 +47,11 @@ private fun PreviewSelectObfuscationCellCell(
4747
}
4848

4949
@Composable
50-
fun SelectObfuscationCell(
51-
selectedObfuscation: SelectedObfuscation,
50+
fun ObfuscationModeCell(
51+
obfuscationMode: ObfuscationMode,
5252
port: Constraint<Port>,
5353
isSelected: Boolean,
54-
onSelected: (SelectedObfuscation) -> Unit,
54+
onSelected: (ObfuscationMode) -> Unit,
5555
onNavigate: () -> Unit = {},
5656
) {
5757
Row(
@@ -66,9 +66,9 @@ fun SelectObfuscationCell(
6666
titleColor = MaterialTheme.colorScheme.onSurface,
6767
subtitleStyle = MaterialTheme.typography.listItemSubText,
6868
subtitleColor = MaterialTheme.colorScheme.onSurface,
69-
titleText = selectedObfuscation.toTitle(),
69+
titleText = obfuscationMode.toTitle(),
7070
subtitleText = stringResource(id = R.string.port_x, port.toSubTitle()),
71-
onCellClicked = { onSelected(selectedObfuscation) },
71+
onCellClicked = { onSelected(obfuscationMode) },
7272
minHeight = Dimens.cellHeight,
7373
background =
7474
if (isSelected) {
@@ -101,12 +101,12 @@ fun SelectObfuscationCell(
101101
}
102102

103103
@Composable
104-
private fun SelectedObfuscation.toTitle() =
104+
private fun ObfuscationMode.toTitle() =
105105
when (this) {
106-
SelectedObfuscation.Auto -> stringResource(id = R.string.automatic)
107-
SelectedObfuscation.Off -> stringResource(id = R.string.off)
108-
SelectedObfuscation.Udp2Tcp -> stringResource(id = R.string.upd_over_tcp)
109-
SelectedObfuscation.Shadowsocks -> stringResource(id = R.string.shadowsocks)
106+
ObfuscationMode.Auto -> stringResource(id = R.string.automatic)
107+
ObfuscationMode.Off -> stringResource(id = R.string.off)
108+
ObfuscationMode.Udp2Tcp -> stringResource(id = R.string.upd_over_tcp)
109+
ObfuscationMode.Shadowsocks -> stringResource(id = R.string.shadowsocks)
110110
}
111111

112112
@Composable

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/SelectObfuscationCellPreviewParameterProvider.kt

+11-11
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@ package net.mullvad.mullvadvpn.compose.preview
22

33
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
44
import net.mullvad.mullvadvpn.lib.model.Constraint
5+
import net.mullvad.mullvadvpn.lib.model.ObfuscationMode
56
import net.mullvad.mullvadvpn.lib.model.Port
6-
import net.mullvad.mullvadvpn.lib.model.SelectedObfuscation
77

88
class SelectObfuscationCellPreviewParameterProvider :
9-
PreviewParameterProvider<Triple<SelectedObfuscation, Constraint<Port>, Boolean>> {
10-
override val values: Sequence<Triple<SelectedObfuscation, Constraint<Port>, Boolean>> =
9+
PreviewParameterProvider<Triple<ObfuscationMode, Constraint<Port>, Boolean>> {
10+
override val values: Sequence<Triple<ObfuscationMode, Constraint<Port>, Boolean>> =
1111
sequenceOf(
12-
Triple(SelectedObfuscation.Shadowsocks, Constraint.Any, false),
13-
Triple(SelectedObfuscation.Shadowsocks, Constraint.Any, true),
14-
Triple(SelectedObfuscation.Shadowsocks, Constraint.Only(Port(PORT)), false),
15-
Triple(SelectedObfuscation.Shadowsocks, Constraint.Only(Port(PORT)), true),
16-
Triple(SelectedObfuscation.Udp2Tcp, Constraint.Any, false),
17-
Triple(SelectedObfuscation.Udp2Tcp, Constraint.Any, true),
18-
Triple(SelectedObfuscation.Udp2Tcp, Constraint.Only(Port(PORT)), false),
19-
Triple(SelectedObfuscation.Udp2Tcp, Constraint.Only(Port(PORT)), true),
12+
Triple(ObfuscationMode.Shadowsocks, Constraint.Any, false),
13+
Triple(ObfuscationMode.Shadowsocks, Constraint.Any, true),
14+
Triple(ObfuscationMode.Shadowsocks, Constraint.Only(Port(PORT)), false),
15+
Triple(ObfuscationMode.Shadowsocks, Constraint.Only(Port(PORT)), true),
16+
Triple(ObfuscationMode.Udp2Tcp, Constraint.Any, false),
17+
Triple(ObfuscationMode.Udp2Tcp, Constraint.Any, true),
18+
Triple(ObfuscationMode.Udp2Tcp, Constraint.Only(Port(PORT)), false),
19+
Triple(ObfuscationMode.Udp2Tcp, Constraint.Only(Port(PORT)), true),
2020
)
2121
}
2222

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt

+17-17
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ import net.mullvad.mullvadvpn.compose.cell.MtuComposeCell
6565
import net.mullvad.mullvadvpn.compose.cell.MtuSubtitle
6666
import net.mullvad.mullvadvpn.compose.cell.NavigationComposeCell
6767
import net.mullvad.mullvadvpn.compose.cell.NormalSwitchComposeCell
68-
import net.mullvad.mullvadvpn.compose.cell.SelectObfuscationCell
68+
import net.mullvad.mullvadvpn.compose.cell.ObfuscationModeCell
6969
import net.mullvad.mullvadvpn.compose.cell.SelectableCell
7070
import net.mullvad.mullvadvpn.compose.cell.SwitchComposeSubtitleCell
7171
import net.mullvad.mullvadvpn.compose.communication.DnsDialogResult
@@ -93,10 +93,10 @@ import net.mullvad.mullvadvpn.compose.util.showSnackbarImmediately
9393
import net.mullvad.mullvadvpn.constant.WIREGUARD_PRESET_PORTS
9494
import net.mullvad.mullvadvpn.lib.model.Constraint
9595
import net.mullvad.mullvadvpn.lib.model.Mtu
96+
import net.mullvad.mullvadvpn.lib.model.ObfuscationMode
9697
import net.mullvad.mullvadvpn.lib.model.Port
9798
import net.mullvad.mullvadvpn.lib.model.PortRange
9899
import net.mullvad.mullvadvpn.lib.model.QuantumResistantState
99-
import net.mullvad.mullvadvpn.lib.model.SelectedObfuscation
100100
import net.mullvad.mullvadvpn.lib.theme.AppTheme
101101
import net.mullvad.mullvadvpn.lib.theme.Dimens
102102
import net.mullvad.mullvadvpn.viewmodel.CustomDnsItem
@@ -129,7 +129,7 @@ private fun PreviewVpnSettings() {
129129
navigateToDns = { _, _ -> },
130130
onToggleDnsClick = {},
131131
onBackClick = {},
132-
onSelectObfuscationSetting = {},
132+
onSelectObfuscationMode = {},
133133
onSelectQuantumResistanceSetting = {},
134134
onWireguardPortSelected = {},
135135
)
@@ -264,7 +264,7 @@ fun VpnSettings(
264264
},
265265
onToggleDnsClick = vm::onToggleCustomDns,
266266
onBackClick = dropUnlessResumed { navigator.navigateUp() },
267-
onSelectObfuscationSetting = vm::onSelectObfuscationSetting,
267+
onSelectObfuscationMode = vm::onSelectObfuscationMode,
268268
onSelectQuantumResistanceSetting = vm::onSelectQuantumResistanceSetting,
269269
onWireguardPortSelected = vm::onWireguardPortSelected,
270270
navigateToShadowSocksSettings =
@@ -305,7 +305,7 @@ fun VpnSettingsScreen(
305305
navigateToDns: (index: Int?, address: String?) -> Unit = { _, _ -> },
306306
onToggleDnsClick: (Boolean) -> Unit = {},
307307
onBackClick: () -> Unit = {},
308-
onSelectObfuscationSetting: (selectedObfuscation: SelectedObfuscation) -> Unit = {},
308+
onSelectObfuscationMode: (obfuscationMode: ObfuscationMode) -> Unit = {},
309309
onSelectQuantumResistanceSetting: (quantumResistant: QuantumResistantState) -> Unit = {},
310310
onWireguardPortSelected: (port: Constraint<Port>) -> Unit = {},
311311
navigateToShadowSocksSettings: () -> Unit = {},
@@ -593,33 +593,33 @@ fun VpnSettingsScreen(
593593
itemWithDivider {
594594
SelectableCell(
595595
title = stringResource(id = R.string.automatic),
596-
isSelected = state.selectedObfuscation == SelectedObfuscation.Auto,
597-
onCellClicked = { onSelectObfuscationSetting(SelectedObfuscation.Auto) },
596+
isSelected = state.obfuscationMode == ObfuscationMode.Auto,
597+
onCellClicked = { onSelectObfuscationMode(ObfuscationMode.Auto) },
598598
)
599599
}
600600
itemWithDivider {
601-
SelectObfuscationCell(
602-
selectedObfuscation = SelectedObfuscation.Shadowsocks,
603-
isSelected = state.selectedObfuscation == SelectedObfuscation.Shadowsocks,
601+
ObfuscationModeCell(
602+
obfuscationMode = ObfuscationMode.Shadowsocks,
603+
isSelected = state.obfuscationMode == ObfuscationMode.Shadowsocks,
604604
port = state.selectedShadowsSocksObfuscationPort,
605-
onSelected = onSelectObfuscationSetting,
605+
onSelected = onSelectObfuscationMode,
606606
onNavigate = navigateToShadowSocksSettings,
607607
)
608608
}
609609
itemWithDivider {
610-
SelectObfuscationCell(
611-
selectedObfuscation = SelectedObfuscation.Udp2Tcp,
612-
isSelected = state.selectedObfuscation == SelectedObfuscation.Udp2Tcp,
610+
ObfuscationModeCell(
611+
obfuscationMode = ObfuscationMode.Udp2Tcp,
612+
isSelected = state.obfuscationMode == ObfuscationMode.Udp2Tcp,
613613
port = state.selectedUdp2TcpObfuscationPort,
614-
onSelected = onSelectObfuscationSetting,
614+
onSelected = onSelectObfuscationMode,
615615
onNavigate = navigateToUdp2TcpSettings,
616616
)
617617
}
618618
itemWithDivider {
619619
SelectableCell(
620620
title = stringResource(id = R.string.off),
621-
isSelected = state.selectedObfuscation == SelectedObfuscation.Off,
622-
onCellClicked = { onSelectObfuscationSetting(SelectedObfuscation.Off) },
621+
isSelected = state.obfuscationMode == ObfuscationMode.Off,
622+
onCellClicked = { onSelectObfuscationMode(ObfuscationMode.Off) },
623623
)
624624
}
625625

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/VpnSettingsUiState.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ package net.mullvad.mullvadvpn.compose.state
33
import net.mullvad.mullvadvpn.lib.model.Constraint
44
import net.mullvad.mullvadvpn.lib.model.DefaultDnsOptions
55
import net.mullvad.mullvadvpn.lib.model.Mtu
6+
import net.mullvad.mullvadvpn.lib.model.ObfuscationMode
67
import net.mullvad.mullvadvpn.lib.model.Port
78
import net.mullvad.mullvadvpn.lib.model.PortRange
89
import net.mullvad.mullvadvpn.lib.model.QuantumResistantState
9-
import net.mullvad.mullvadvpn.lib.model.SelectedObfuscation
1010
import net.mullvad.mullvadvpn.viewmodel.CustomDnsItem
1111

1212
data class VpnSettingsUiState(
@@ -17,7 +17,7 @@ data class VpnSettingsUiState(
1717
val isCustomDnsEnabled: Boolean,
1818
val customDnsItems: List<CustomDnsItem>,
1919
val contentBlockersOptions: DefaultDnsOptions,
20-
val selectedObfuscation: SelectedObfuscation,
20+
val obfuscationMode: ObfuscationMode,
2121
val selectedUdp2TcpObfuscationPort: Constraint<Port>,
2222
val selectedShadowsSocksObfuscationPort: Constraint<Port>,
2323
val quantumResistant: QuantumResistantState,
@@ -39,7 +39,7 @@ data class VpnSettingsUiState(
3939
isCustomDnsEnabled: Boolean = false,
4040
customDnsItems: List<CustomDnsItem> = emptyList(),
4141
contentBlockersOptions: DefaultDnsOptions = DefaultDnsOptions(),
42-
selectedObfuscation: SelectedObfuscation = SelectedObfuscation.Off,
42+
obfuscationMode: ObfuscationMode = ObfuscationMode.Off,
4343
selectedUdp2TcpObfuscationPort: Constraint<Port> = Constraint.Any,
4444
selectedShadowsSocksObfuscationPort: Constraint<Port> = Constraint.Any,
4545
quantumResistant: QuantumResistantState = QuantumResistantState.Off,
@@ -56,7 +56,7 @@ data class VpnSettingsUiState(
5656
isCustomDnsEnabled,
5757
customDnsItems,
5858
contentBlockersOptions,
59-
selectedObfuscation,
59+
obfuscationMode,
6060
selectedUdp2TcpObfuscationPort,
6161
selectedShadowsSocksObfuscationPort,
6262
quantumResistant,

android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/SettingsRepository.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ import net.mullvad.mullvadvpn.lib.model.DefaultDnsOptions
1414
import net.mullvad.mullvadvpn.lib.model.DnsOptions
1515
import net.mullvad.mullvadvpn.lib.model.DnsState
1616
import net.mullvad.mullvadvpn.lib.model.Mtu
17+
import net.mullvad.mullvadvpn.lib.model.ObfuscationMode
1718
import net.mullvad.mullvadvpn.lib.model.Port
1819
import net.mullvad.mullvadvpn.lib.model.QuantumResistantState
19-
import net.mullvad.mullvadvpn.lib.model.SelectedObfuscation
2020
import net.mullvad.mullvadvpn.lib.model.Settings
2121

2222
class SettingsRepository(
@@ -65,7 +65,7 @@ class SettingsRepository(
6565
suspend fun setWireguardQuantumResistant(value: QuantumResistantState) =
6666
managementService.setWireguardQuantumResistant(value)
6767

68-
suspend fun setObfuscation(value: SelectedObfuscation) = managementService.setObfuscation(value)
68+
suspend fun setObfuscation(value: ObfuscationMode) = managementService.setObfuscation(value)
6969

7070
suspend fun setAutoConnect(isEnabled: Boolean) = managementService.setAutoConnect(isEnabled)
7171

android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt

+5-6
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ import net.mullvad.mullvadvpn.constant.WIREGUARD_PRESET_PORTS
2323
import net.mullvad.mullvadvpn.lib.model.Constraint
2424
import net.mullvad.mullvadvpn.lib.model.DefaultDnsOptions
2525
import net.mullvad.mullvadvpn.lib.model.DnsState
26+
import net.mullvad.mullvadvpn.lib.model.ObfuscationMode
2627
import net.mullvad.mullvadvpn.lib.model.Port
2728
import net.mullvad.mullvadvpn.lib.model.QuantumResistantState
28-
import net.mullvad.mullvadvpn.lib.model.SelectedObfuscation
2929
import net.mullvad.mullvadvpn.lib.model.Settings
3030
import net.mullvad.mullvadvpn.lib.model.WireguardConstraints
3131
import net.mullvad.mullvadvpn.repository.RelayListRepository
@@ -68,8 +68,7 @@ class VpnSettingsViewModel(
6868
customDnsList = settings?.addresses()?.asStringAddressList() ?: listOf(),
6969
contentBlockersOptions =
7070
settings?.contentBlockersSettings() ?: DefaultDnsOptions(),
71-
selectedObfuscation =
72-
settings?.selectedObfuscationSettings() ?: SelectedObfuscation.Off,
71+
obfuscationMode = settings?.selectedObfuscationMode() ?: ObfuscationMode.Off,
7372
selectedUdp2TcpObfuscationPort =
7473
settings?.obfuscationSettings?.udp2tcp?.port ?: Constraint.Any,
7574
selectedShadowsocksObfuscationPort =
@@ -211,9 +210,9 @@ class VpnSettingsViewModel(
211210
}
212211
}
213212

214-
fun onSelectObfuscationSetting(selectedObfuscation: SelectedObfuscation) {
213+
fun onSelectObfuscationMode(obfuscationMode: ObfuscationMode) {
215214
viewModelScope.launch(dispatcher) {
216-
repository.setObfuscation(selectedObfuscation).onLeft {
215+
repository.setObfuscation(obfuscationMode).onLeft {
217216
_uiSideEffect.send(VpnSettingsSideEffect.ShowToast.GenericError)
218217
}
219218
}
@@ -289,7 +288,7 @@ class VpnSettingsViewModel(
289288

290289
private fun Settings.contentBlockersSettings() = tunnelOptions.dnsOptions.defaultOptions
291290

292-
private fun Settings.selectedObfuscationSettings() = obfuscationSettings.selectedObfuscation
291+
private fun Settings.selectedObfuscationMode() = obfuscationSettings.selectedObfuscationMode
293292

294293
private fun Settings.getWireguardPort() =
295294
relaySettings.relayConstraints.wireguardConstraints.port

android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModelState.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import net.mullvad.mullvadvpn.compose.state.VpnSettingsUiState
44
import net.mullvad.mullvadvpn.lib.model.Constraint
55
import net.mullvad.mullvadvpn.lib.model.DefaultDnsOptions
66
import net.mullvad.mullvadvpn.lib.model.Mtu
7+
import net.mullvad.mullvadvpn.lib.model.ObfuscationMode
78
import net.mullvad.mullvadvpn.lib.model.Port
89
import net.mullvad.mullvadvpn.lib.model.PortRange
910
import net.mullvad.mullvadvpn.lib.model.QuantumResistantState
10-
import net.mullvad.mullvadvpn.lib.model.SelectedObfuscation
1111

1212
data class VpnSettingsViewModelState(
1313
val mtuValue: Mtu?,
@@ -17,7 +17,7 @@ data class VpnSettingsViewModelState(
1717
val isCustomDnsEnabled: Boolean,
1818
val customDnsList: List<CustomDnsItem>,
1919
val contentBlockersOptions: DefaultDnsOptions,
20-
val selectedObfuscation: SelectedObfuscation,
20+
val obfuscationMode: ObfuscationMode,
2121
val selectedUdp2TcpObfuscationPort: Constraint<Port>,
2222
val selectedShadowsocksObfuscationPort: Constraint<Port>,
2323
val quantumResistant: QuantumResistantState,
@@ -39,7 +39,7 @@ data class VpnSettingsViewModelState(
3939
isCustomDnsEnabled,
4040
customDnsList,
4141
contentBlockersOptions,
42-
selectedObfuscation,
42+
obfuscationMode,
4343
selectedUdp2TcpObfuscationPort,
4444
selectedShadowsocksObfuscationPort,
4545
quantumResistant,
@@ -59,7 +59,7 @@ data class VpnSettingsViewModelState(
5959
isCustomDnsEnabled = false,
6060
customDnsList = listOf(),
6161
contentBlockersOptions = DefaultDnsOptions(),
62-
selectedObfuscation = SelectedObfuscation.Auto,
62+
obfuscationMode = ObfuscationMode.Auto,
6363
selectedUdp2TcpObfuscationPort = Constraint.Any,
6464
selectedShadowsocksObfuscationPort = Constraint.Any,
6565
quantumResistant = QuantumResistantState.Off,

android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ShadowsocksSettingsViewModelTest.kt

+4-1
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,13 @@ class ShadowsocksSettingsViewModelTest {
6565
@Test
6666
fun `uiState should reflect latest port range value from relay list`() = runTest {
6767
// Arrange
68+
val mockSettings: Settings = mockk()
69+
val port = Port(123)
70+
every { mockSettings.obfuscationSettings.shadowsocks.port } returns Constraint.Only(port)
6871
val mockPortRange: List<PortRange> = listOf(mockk())
6972

7073
portRangesFlow.update { mockPortRange }
71-
settingsFlow.update { mockk(relaxed = true) }
74+
settingsFlow.update { mockSettings }
7275

7376
// Act, Assert
7477
viewModel.uiState.test {

0 commit comments

Comments
 (0)