summaryrefslogtreecommitdiffhomepage
path: root/android/app/src
diff options
context:
space:
mode:
authorsaber safavi <saber.safavi@codic.se>2023-05-16 11:38:05 +0200
committersaber safavi <saber.safavi@codic.se>2023-05-16 15:01:26 +0200
commit51f61038823ac4b573ab1d3267e805a574997429 (patch)
tree25f0955f7d5d5c1ffecff906d08810e613f2fad6 /android/app/src
parent780a986731484c84a42f7a813920fa7373be6a1a (diff)
downloadmullvadvpn-51f61038823ac4b573ab1d3267e805a574997429.tar.xz
mullvadvpn-51f61038823ac4b573ab1d3267e805a574997429.zip
Refactor advanced settings to VPN settings
Diffstat (limited to 'android/app/src')
-rw-r--r--android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt (renamed from android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingsScreenTest.kt)112
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreen.kt (renamed from android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingScreen.kt)26
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/VpnSettingsUiState.kt (renamed from android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/AdvancedSettingsUiState.kt)18
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/SettingsFragment.kt10
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/VpnSettingsFragment.kt (renamed from android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/AdvancedFragment.kt)10
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt (renamed from android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AdvancedSettingsViewModel.kt)42
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModelState.kt (renamed from android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AdvancedSettingsViewModelState.kt)60
-rw-r--r--android/app/src/main/res/layout/settings.xml2
9 files changed, 140 insertions, 144 deletions
diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingsScreenTest.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt
index 970e877b80..6714d5490d 100644
--- a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingsScreenTest.kt
+++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt
@@ -17,7 +17,7 @@ import io.mockk.verify
import io.mockk.verifyAll
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.asSharedFlow
-import net.mullvad.mullvadvpn.compose.state.AdvancedSettingsUiState
+import net.mullvad.mullvadvpn.compose.state.VpnSettingsUiState
import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_LAST_ITEM_TEST_TAG
import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_TEST_TAG
import net.mullvad.mullvadvpn.viewmodel.CustomDnsItem
@@ -26,7 +26,7 @@ import org.junit.Before
import org.junit.Rule
import org.junit.Test
-class AdvancedSettingsScreenTest {
+class VpnSettingsScreenTest {
@get:Rule val composeTestRule = createComposeRule()
@Before
@@ -39,8 +39,8 @@ class AdvancedSettingsScreenTest {
fun testDefaultState() {
// Arrange
composeTestRule.setContent {
- AdvancedSettingScreen(
- uiState = AdvancedSettingsUiState.DefaultUiState(),
+ VpnSettingsScreen(
+ uiState = VpnSettingsUiState.DefaultUiState(),
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
}
@@ -60,8 +60,8 @@ class AdvancedSettingsScreenTest {
fun testMtuCustomValue() {
// Arrange
composeTestRule.setContent {
- AdvancedSettingScreen(
- uiState = AdvancedSettingsUiState.DefaultUiState(mtu = VALID_DUMMY_MTU_VALUE),
+ VpnSettingsScreen(
+ uiState = VpnSettingsUiState.DefaultUiState(mtu = VALID_DUMMY_MTU_VALUE),
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
}
@@ -76,8 +76,8 @@ class AdvancedSettingsScreenTest {
// Arrange
val mockedClickHandler: () -> Unit = mockk(relaxed = true)
composeTestRule.setContent {
- AdvancedSettingScreen(
- uiState = AdvancedSettingsUiState.DefaultUiState(),
+ VpnSettingsScreen(
+ uiState = VpnSettingsUiState.DefaultUiState(),
onMtuCellClick = mockedClickHandler,
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
@@ -95,8 +95,8 @@ class AdvancedSettingsScreenTest {
fun testMtuDialogWithDefaultValue() {
// Arrange
composeTestRule.setContent {
- AdvancedSettingScreen(
- uiState = AdvancedSettingsUiState.MtuDialogUiState(mtuEditValue = EMPTY_STRING),
+ VpnSettingsScreen(
+ uiState = VpnSettingsUiState.MtuDialogUiState(mtuEditValue = EMPTY_STRING),
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
}
@@ -110,9 +110,8 @@ class AdvancedSettingsScreenTest {
fun testMtuDialogWithEditValue() {
// Arrange
composeTestRule.setContent {
- AdvancedSettingScreen(
- uiState =
- AdvancedSettingsUiState.MtuDialogUiState(mtuEditValue = VALID_DUMMY_MTU_VALUE),
+ VpnSettingsScreen(
+ uiState = VpnSettingsUiState.MtuDialogUiState(mtuEditValue = VALID_DUMMY_MTU_VALUE),
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
}
@@ -127,8 +126,8 @@ class AdvancedSettingsScreenTest {
// Arrange
val mockedInputHandler: (String) -> Unit = mockk(relaxed = true)
composeTestRule.setContent {
- AdvancedSettingScreen(
- uiState = AdvancedSettingsUiState.MtuDialogUiState(mtuEditValue = EMPTY_STRING),
+ VpnSettingsScreen(
+ uiState = VpnSettingsUiState.MtuDialogUiState(mtuEditValue = EMPTY_STRING),
onMtuInputChange = mockedInputHandler,
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
@@ -147,9 +146,8 @@ class AdvancedSettingsScreenTest {
// Arrange
val mockedSubmitHandler: () -> Unit = mockk(relaxed = true)
composeTestRule.setContent {
- AdvancedSettingScreen(
- uiState =
- AdvancedSettingsUiState.MtuDialogUiState(mtuEditValue = VALID_DUMMY_MTU_VALUE),
+ VpnSettingsScreen(
+ uiState = VpnSettingsUiState.MtuDialogUiState(mtuEditValue = VALID_DUMMY_MTU_VALUE),
onSaveMtuClick = mockedSubmitHandler,
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
@@ -167,11 +165,9 @@ class AdvancedSettingsScreenTest {
fun testMtuDialogSubmitButtonDisabledWhenInvalidInput() {
// Arrange
composeTestRule.setContent {
- AdvancedSettingScreen(
+ VpnSettingsScreen(
uiState =
- AdvancedSettingsUiState.MtuDialogUiState(
- mtuEditValue = INVALID_DUMMY_MTU_VALUE
- ),
+ VpnSettingsUiState.MtuDialogUiState(mtuEditValue = INVALID_DUMMY_MTU_VALUE),
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
}
@@ -186,8 +182,8 @@ class AdvancedSettingsScreenTest {
// Arrange
val mockedClickHandler: () -> Unit = mockk(relaxed = true)
composeTestRule.setContent {
- AdvancedSettingScreen(
- uiState = AdvancedSettingsUiState.MtuDialogUiState(mtuEditValue = EMPTY_STRING),
+ VpnSettingsScreen(
+ uiState = VpnSettingsUiState.MtuDialogUiState(mtuEditValue = EMPTY_STRING),
onRestoreMtuClick = mockedClickHandler,
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
@@ -206,8 +202,8 @@ class AdvancedSettingsScreenTest {
// Arrange
val mockedClickHandler: () -> Unit = mockk(relaxed = true)
composeTestRule.setContent {
- AdvancedSettingScreen(
- uiState = AdvancedSettingsUiState.MtuDialogUiState(mtuEditValue = EMPTY_STRING),
+ VpnSettingsScreen(
+ uiState = VpnSettingsUiState.MtuDialogUiState(mtuEditValue = EMPTY_STRING),
onCancelMtuDialogClicked = mockedClickHandler,
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
@@ -226,8 +222,8 @@ class AdvancedSettingsScreenTest {
// Arrange
val mockedClickHandler: () -> Unit = mockk(relaxed = true)
composeTestRule.setContent {
- AdvancedSettingScreen(
- uiState = AdvancedSettingsUiState.DefaultUiState(),
+ VpnSettingsScreen(
+ uiState = VpnSettingsUiState.DefaultUiState(),
onSplitTunnelingNavigationClick = mockedClickHandler,
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
@@ -245,9 +241,9 @@ class AdvancedSettingsScreenTest {
fun testCustomDnsAddressesAndAddButtonVisibleWhenCustomDnsEnabled() {
// Arrange
composeTestRule.setContent {
- AdvancedSettingScreen(
+ VpnSettingsScreen(
uiState =
- AdvancedSettingsUiState.DefaultUiState(
+ VpnSettingsUiState.DefaultUiState(
isCustomDnsEnabled = true,
isAllowLanEnabled = false,
customDnsItems =
@@ -277,9 +273,9 @@ class AdvancedSettingsScreenTest {
fun testCustomDnsAddressesAndAddButtonNotVisibleWhenCustomDnsDisabled() {
// Arrange
composeTestRule.setContent {
- AdvancedSettingScreen(
+ VpnSettingsScreen(
uiState =
- AdvancedSettingsUiState.DefaultUiState(
+ VpnSettingsUiState.DefaultUiState(
isCustomDnsEnabled = false,
customDnsItems = listOf(CustomDnsItem(address = DUMMY_DNS_ADDRESS, false))
),
@@ -299,9 +295,9 @@ class AdvancedSettingsScreenTest {
fun testLanWarningNotShownWhenLanTrafficEnabledAndLocalAddressIsUsed() {
// Arrange
composeTestRule.setContent {
- AdvancedSettingScreen(
+ VpnSettingsScreen(
uiState =
- AdvancedSettingsUiState.DefaultUiState(
+ VpnSettingsUiState.DefaultUiState(
isCustomDnsEnabled = true,
isAllowLanEnabled = true,
customDnsItems =
@@ -320,9 +316,9 @@ class AdvancedSettingsScreenTest {
fun testLanWarningNotShowedWhenLanTrafficDisabledAndLocalAddressIsNotUsed() {
// Arrange
composeTestRule.setContent {
- AdvancedSettingScreen(
+ VpnSettingsScreen(
uiState =
- AdvancedSettingsUiState.DefaultUiState(
+ VpnSettingsUiState.DefaultUiState(
isCustomDnsEnabled = true,
isAllowLanEnabled = false,
customDnsItems =
@@ -341,9 +337,9 @@ class AdvancedSettingsScreenTest {
fun testLanWarningNotShowedWhenLanTrafficEnabledAndLocalAddressIsNotUsed() {
// Arrange
composeTestRule.setContent {
- AdvancedSettingScreen(
+ VpnSettingsScreen(
uiState =
- AdvancedSettingsUiState.DefaultUiState(
+ VpnSettingsUiState.DefaultUiState(
isCustomDnsEnabled = true,
isAllowLanEnabled = true,
customDnsItems =
@@ -362,9 +358,9 @@ class AdvancedSettingsScreenTest {
fun testLanWarningShowedWhenAllowLanEnabledAndLocalDnsAddressIsUsed() {
// Arrange
composeTestRule.setContent {
- AdvancedSettingScreen(
+ VpnSettingsScreen(
uiState =
- AdvancedSettingsUiState.DefaultUiState(
+ VpnSettingsUiState.DefaultUiState(
isCustomDnsEnabled = true,
isAllowLanEnabled = false,
customDnsItems =
@@ -386,8 +382,8 @@ class AdvancedSettingsScreenTest {
// Arrange
val mockedClickHandler: (Int?) -> Unit = mockk(relaxed = true)
composeTestRule.setContent {
- AdvancedSettingScreen(
- uiState = AdvancedSettingsUiState.DefaultUiState(isCustomDnsEnabled = true),
+ VpnSettingsScreen(
+ uiState = VpnSettingsUiState.DefaultUiState(isCustomDnsEnabled = true),
onDnsClick = mockedClickHandler,
toastMessagesSharedFlow = MutableSharedFlow<String>().asSharedFlow()
)
@@ -408,9 +404,9 @@ class AdvancedSettingsScreenTest {
fun testShowDnsDialogForNewDnsServer() {
// Arrange
composeTestRule.setContent {
- AdvancedSettingScreen(
+ VpnSettingsScreen(
uiState =
- AdvancedSettingsUiState.DnsDialogUiState(
+ VpnSettingsUiState.DnsDialogUiState(
stagedDns =
StagedDns.NewDns(
item = CustomDnsItem(DUMMY_DNS_ADDRESS, isLocal = false)
@@ -429,9 +425,9 @@ class AdvancedSettingsScreenTest {
fun testShowDnsDialogForUpdatingDnsServer() {
// Arrange
composeTestRule.setContent {
- AdvancedSettingScreen(
+ VpnSettingsScreen(
uiState =
- AdvancedSettingsUiState.DnsDialogUiState(
+ VpnSettingsUiState.DnsDialogUiState(
stagedDns =
StagedDns.EditDns(
item = CustomDnsItem(DUMMY_DNS_ADDRESS, isLocal = false),
@@ -451,9 +447,9 @@ class AdvancedSettingsScreenTest {
fun testDnsDialogLanWarningShownWhenLanTrafficDisabledAndLocalAddressUsed() {
// Arrange
composeTestRule.setContent {
- AdvancedSettingScreen(
+ VpnSettingsScreen(
uiState =
- AdvancedSettingsUiState.DnsDialogUiState(
+ VpnSettingsUiState.DnsDialogUiState(
stagedDns =
StagedDns.NewDns(
item = CustomDnsItem(DUMMY_DNS_ADDRESS, isLocal = true),
@@ -474,9 +470,9 @@ class AdvancedSettingsScreenTest {
fun testDnsDialogLanWarningNotShownWhenLanTrafficEnabledAndLocalAddressUsed() {
// Arrange
composeTestRule.setContent {
- AdvancedSettingScreen(
+ VpnSettingsScreen(
uiState =
- AdvancedSettingsUiState.DnsDialogUiState(
+ VpnSettingsUiState.DnsDialogUiState(
stagedDns =
StagedDns.NewDns(
item = CustomDnsItem(DUMMY_DNS_ADDRESS, isLocal = true),
@@ -497,9 +493,9 @@ class AdvancedSettingsScreenTest {
fun testDnsDialogLanWarningNotShownWhenLanTrafficEnabledAndNonLocalAddressUsed() {
// Arrange
composeTestRule.setContent {
- AdvancedSettingScreen(
+ VpnSettingsScreen(
uiState =
- AdvancedSettingsUiState.DnsDialogUiState(
+ VpnSettingsUiState.DnsDialogUiState(
stagedDns =
StagedDns.NewDns(
item = CustomDnsItem(DUMMY_DNS_ADDRESS, isLocal = false),
@@ -520,9 +516,9 @@ class AdvancedSettingsScreenTest {
fun testDnsDialogLanWarningNotShownWhenLanTrafficDisabledAndNonLocalAddressUsed() {
// Arrange
composeTestRule.setContent {
- AdvancedSettingScreen(
+ VpnSettingsScreen(
uiState =
- AdvancedSettingsUiState.DnsDialogUiState(
+ VpnSettingsUiState.DnsDialogUiState(
stagedDns =
StagedDns.NewDns(
item = CustomDnsItem(DUMMY_DNS_ADDRESS, isLocal = false),
@@ -543,9 +539,9 @@ class AdvancedSettingsScreenTest {
fun testDnsDialogSubmitButtonDisabledOnInvalidDnsAddress() {
// Arrange
composeTestRule.setContent {
- AdvancedSettingScreen(
+ VpnSettingsScreen(
uiState =
- AdvancedSettingsUiState.DnsDialogUiState(
+ VpnSettingsUiState.DnsDialogUiState(
stagedDns =
StagedDns.NewDns(
item = CustomDnsItem(DUMMY_DNS_ADDRESS, isLocal = false),
@@ -565,9 +561,9 @@ class AdvancedSettingsScreenTest {
fun testDnsDialogSubmitButtonDisabledOnDuplicateDnsAddress() {
// Arrange
composeTestRule.setContent {
- AdvancedSettingScreen(
+ VpnSettingsScreen(
uiState =
- AdvancedSettingsUiState.DnsDialogUiState(
+ VpnSettingsUiState.DnsDialogUiState(
stagedDns =
StagedDns.NewDns(
item = CustomDnsItem(DUMMY_DNS_ADDRESS, isLocal = false),
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/VpnSettingsScreen.kt
index 7d971e7e8e..507fbeb37d 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/VpnSettingsScreen.kt
@@ -64,7 +64,7 @@ import net.mullvad.mullvadvpn.compose.dialog.MalwareInfoDialog
import net.mullvad.mullvadvpn.compose.dialog.MtuDialog
import net.mullvad.mullvadvpn.compose.dialog.ObfuscationInfoDialog
import net.mullvad.mullvadvpn.compose.extensions.itemWithDivider
-import net.mullvad.mullvadvpn.compose.state.AdvancedSettingsUiState
+import net.mullvad.mullvadvpn.compose.state.VpnSettingsUiState
import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_LAST_ITEM_TEST_TAG
import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_TEST_TAG
import net.mullvad.mullvadvpn.compose.theme.MullvadBlue20
@@ -76,10 +76,10 @@ import net.mullvad.mullvadvpn.viewmodel.CustomDnsItem
@OptIn(ExperimentalMaterialApi::class)
@Preview
@Composable
-private fun PreviewAdvancedSettings() {
- AdvancedSettingScreen(
+private fun PreviewVpnSettings() {
+ VpnSettingsScreen(
uiState =
- AdvancedSettingsUiState.DefaultUiState(
+ VpnSettingsUiState.DefaultUiState(
isAutoConnectEnabled = true,
mtu = "1337",
isCustomDnsEnabled = true,
@@ -120,9 +120,9 @@ private fun PreviewAdvancedSettings() {
@OptIn(ExperimentalFoundationApi::class)
@ExperimentalMaterialApi
@Composable
-fun AdvancedSettingScreen(
+fun VpnSettingsScreen(
lifecycleOwner: LifecycleOwner = LocalLifecycleOwner.current,
- uiState: AdvancedSettingsUiState,
+ uiState: VpnSettingsUiState,
onMtuCellClick: () -> Unit = {},
onMtuInputChange: (String) -> Unit = {},
onSaveMtuClick: () -> Unit = {},
@@ -157,7 +157,7 @@ fun AdvancedSettingScreen(
val cellHorizontalSpacing = dimensionResource(id = R.dimen.cell_left_padding)
when (uiState) {
- is AdvancedSettingsUiState.MtuDialogUiState -> {
+ is VpnSettingsUiState.MtuDialogUiState -> {
MtuDialog(
mtuValue = uiState.mtuEditValue,
onMtuValueChanged = { onMtuInputChange(it) },
@@ -166,7 +166,7 @@ fun AdvancedSettingScreen(
onDismiss = { onCancelMtuDialogClicked() }
)
}
- is AdvancedSettingsUiState.DnsDialogUiState -> {
+ is VpnSettingsUiState.DnsDialogUiState -> {
DnsDialog(
stagedDns = uiState.stagedDns,
isAllowLanEnabled = uiState.isAllowLanEnabled,
@@ -176,19 +176,19 @@ fun AdvancedSettingScreen(
onDismiss = { onCancelDnsDialogClick() }
)
}
- is AdvancedSettingsUiState.LocalNetworkSharingInfoDialogUiState -> {
+ is VpnSettingsUiState.LocalNetworkSharingInfoDialogUiState -> {
LocalNetworkSharingInfoDialog(onDismissInfoClicked)
}
- is AdvancedSettingsUiState.ContentBlockersInfoDialogUiState -> {
+ is VpnSettingsUiState.ContentBlockersInfoDialogUiState -> {
ContentBlockersInfoDialog(onDismissInfoClicked)
}
- is AdvancedSettingsUiState.CustomDnsInfoDialogUiState -> {
+ is VpnSettingsUiState.CustomDnsInfoDialogUiState -> {
CustomDnsInfoDialog(onDismissInfoClicked)
}
- is AdvancedSettingsUiState.MalwareInfoDialogUiState -> {
+ is VpnSettingsUiState.MalwareInfoDialogUiState -> {
MalwareInfoDialog(onDismissInfoClicked)
}
- is AdvancedSettingsUiState.ObfuscationInfoDialogUiState -> {
+ is VpnSettingsUiState.ObfuscationInfoDialogUiState -> {
ObfuscationInfoDialog(onDismissInfoClicked)
}
else -> {
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/VpnSettingsUiState.kt
index 261714f8f9..f5315278ab 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/VpnSettingsUiState.kt
@@ -5,7 +5,7 @@ import net.mullvad.mullvadvpn.model.SelectedObfuscation
import net.mullvad.mullvadvpn.viewmodel.CustomDnsItem
import net.mullvad.mullvadvpn.viewmodel.StagedDns
-sealed interface AdvancedSettingsUiState {
+sealed interface VpnSettingsUiState {
val mtu: String
val isAutoConnectEnabled: Boolean
val isLocalNetworkSharingEnabled: Boolean
@@ -24,7 +24,7 @@ sealed interface AdvancedSettingsUiState {
override val customDnsItems: List<CustomDnsItem> = listOf(),
override val contentBlockersOptions: DefaultDnsOptions = DefaultDnsOptions(),
override val selectedObfuscation: SelectedObfuscation = SelectedObfuscation.Off
- ) : AdvancedSettingsUiState
+ ) : VpnSettingsUiState
data class MtuDialogUiState(
override val mtu: String = "",
@@ -36,7 +36,7 @@ sealed interface AdvancedSettingsUiState {
override val contentBlockersOptions: DefaultDnsOptions = DefaultDnsOptions(),
val mtuEditValue: String,
override val selectedObfuscation: SelectedObfuscation = SelectedObfuscation.Off
- ) : AdvancedSettingsUiState
+ ) : VpnSettingsUiState
data class DnsDialogUiState(
override val mtu: String = "",
@@ -48,7 +48,7 @@ sealed interface AdvancedSettingsUiState {
override val contentBlockersOptions: DefaultDnsOptions = DefaultDnsOptions(),
val stagedDns: StagedDns,
override val selectedObfuscation: SelectedObfuscation = SelectedObfuscation.Off
- ) : AdvancedSettingsUiState
+ ) : VpnSettingsUiState
data class LocalNetworkSharingInfoDialogUiState(
override val mtu: String = "",
@@ -59,7 +59,7 @@ sealed interface AdvancedSettingsUiState {
override val customDnsItems: List<CustomDnsItem> = listOf(),
override val contentBlockersOptions: DefaultDnsOptions = DefaultDnsOptions(),
override val selectedObfuscation: SelectedObfuscation = SelectedObfuscation.Off
- ) : AdvancedSettingsUiState
+ ) : VpnSettingsUiState
data class ContentBlockersInfoDialogUiState(
override val mtu: String = "",
@@ -70,7 +70,7 @@ sealed interface AdvancedSettingsUiState {
override val customDnsItems: List<CustomDnsItem> = listOf(),
override val contentBlockersOptions: DefaultDnsOptions = DefaultDnsOptions(),
override val selectedObfuscation: SelectedObfuscation = SelectedObfuscation.Off
- ) : AdvancedSettingsUiState
+ ) : VpnSettingsUiState
data class CustomDnsInfoDialogUiState(
override val mtu: String = "",
@@ -81,7 +81,7 @@ sealed interface AdvancedSettingsUiState {
override val customDnsItems: List<CustomDnsItem> = listOf(),
override val contentBlockersOptions: DefaultDnsOptions = DefaultDnsOptions(),
override val selectedObfuscation: SelectedObfuscation = SelectedObfuscation.Off
- ) : AdvancedSettingsUiState
+ ) : VpnSettingsUiState
data class MalwareInfoDialogUiState(
override val mtu: String = "",
@@ -92,7 +92,7 @@ sealed interface AdvancedSettingsUiState {
override val customDnsItems: List<CustomDnsItem> = listOf(),
override val contentBlockersOptions: DefaultDnsOptions = DefaultDnsOptions(),
override val selectedObfuscation: SelectedObfuscation = SelectedObfuscation.Off
- ) : AdvancedSettingsUiState
+ ) : VpnSettingsUiState
data class ObfuscationInfoDialogUiState(
override val mtu: String = "",
@@ -103,5 +103,5 @@ sealed interface AdvancedSettingsUiState {
override val customDnsItems: List<CustomDnsItem> = listOf(),
override val contentBlockersOptions: DefaultDnsOptions = DefaultDnsOptions(),
override val selectedObfuscation: SelectedObfuscation = SelectedObfuscation.Off
- ) : AdvancedSettingsUiState
+ ) : VpnSettingsUiState
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt
index 2a5f82b7aa..26703d98ec 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt
@@ -21,7 +21,6 @@ import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionManager
import net.mullvad.mullvadvpn.ui.serviceconnection.SplitTunneling
import net.mullvad.mullvadvpn.util.ChangelogDataProvider
import net.mullvad.mullvadvpn.util.IChangelogDataProvider
-import net.mullvad.mullvadvpn.viewmodel.AdvancedSettingsViewModel
import net.mullvad.mullvadvpn.viewmodel.ChangelogViewModel
import net.mullvad.mullvadvpn.viewmodel.ConnectViewModel
import net.mullvad.mullvadvpn.viewmodel.DeviceListViewModel
@@ -29,6 +28,7 @@ import net.mullvad.mullvadvpn.viewmodel.DeviceRevokedViewModel
import net.mullvad.mullvadvpn.viewmodel.LoginViewModel
import net.mullvad.mullvadvpn.viewmodel.PrivacyDisclaimerViewModel
import net.mullvad.mullvadvpn.viewmodel.SplitTunnelingViewModel
+import net.mullvad.mullvadvpn.viewmodel.VpnSettingsViewModel
import org.apache.commons.validator.routines.InetAddressValidator
import org.koin.android.ext.koin.androidApplication
import org.koin.android.ext.koin.androidContext
@@ -89,7 +89,7 @@ val uiModule = module {
}
viewModel { PrivacyDisclaimerViewModel(get()) }
viewModel {
- AdvancedSettingsViewModel(
+ VpnSettingsViewModel(
get(),
get(),
get(),
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/SettingsFragment.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/SettingsFragment.kt
index ff3a8edcf0..db1f41e5ad 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/SettingsFragment.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/SettingsFragment.kt
@@ -47,7 +47,7 @@ class SettingsFragment : BaseFragment(), StatusBarPainter, NavigationBarPainter
private lateinit var accountMenu: AccountCell
private lateinit var appVersionMenu: AppVersionCell
- private lateinit var advancedMenu: View
+ private lateinit var vpnSettingsMenu: View
private lateinit var titleController: CollapsibleTitleController
@Deprecated("Refactor code to instead rely on Lifecycle.") private val jobTracker = JobTracker()
@@ -71,9 +71,9 @@ class SettingsFragment : BaseFragment(), StatusBarPainter, NavigationBarPainter
targetFragment = AccountFragment::class
}
- advancedMenu =
- view.findViewById<NavigateCell>(R.id.advanced).apply {
- targetFragment = AdvancedFragment::class
+ vpnSettingsMenu =
+ view.findViewById<NavigateCell>(R.id.vpn_settings).apply {
+ targetFragment = VpnSettingsFragment::class
}
view.findViewById<NavigateCell>(R.id.report_a_problem).apply {
@@ -179,7 +179,7 @@ class SettingsFragment : BaseFragment(), StatusBarPainter, NavigationBarPainter
}
accountMenu.visibility = visibility
- advancedMenu.visibility = visibility
+ vpnSettingsMenu.visibility = visibility
}
private fun updateVersionInfo(versionInfo: VersionInfo) {
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/VpnSettingsFragment.kt
index a7dbc8116d..f934612e98 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/VpnSettingsFragment.kt
@@ -8,13 +8,13 @@ import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.runtime.collectAsState
import androidx.compose.ui.platform.ComposeView
import net.mullvad.mullvadvpn.R
-import net.mullvad.mullvadvpn.compose.screen.AdvancedSettingScreen
+import net.mullvad.mullvadvpn.compose.screen.VpnSettingsScreen
import net.mullvad.mullvadvpn.compose.theme.AppTheme
-import net.mullvad.mullvadvpn.viewmodel.AdvancedSettingsViewModel
+import net.mullvad.mullvadvpn.viewmodel.VpnSettingsViewModel
import org.koin.androidx.viewmodel.ext.android.viewModel
-class AdvancedFragment : BaseFragment() {
- private val vm by viewModel<AdvancedSettingsViewModel>()
+class VpnSettingsFragment : BaseFragment() {
+ private val vm by viewModel<VpnSettingsViewModel>()
@OptIn(ExperimentalMaterialApi::class)
override fun onCreateView(
@@ -26,7 +26,7 @@ class AdvancedFragment : BaseFragment() {
findViewById<ComposeView>(R.id.compose_view).setContent {
AppTheme {
val state = vm.uiState.collectAsState().value
- AdvancedSettingScreen(
+ VpnSettingsScreen(
uiState = state,
onMtuCellClick = vm::onMtuCellClick,
onMtuInputChange = vm::onMtuInputChange,
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AdvancedSettingsViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt
index 6990b7036e..9943ae60b6 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AdvancedSettingsViewModel.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt
@@ -17,7 +17,7 @@ import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import net.mullvad.mullvadvpn.R
-import net.mullvad.mullvadvpn.compose.state.AdvancedSettingsUiState
+import net.mullvad.mullvadvpn.compose.state.VpnSettingsUiState
import net.mullvad.mullvadvpn.model.Constraint
import net.mullvad.mullvadvpn.model.DefaultDnsOptions
import net.mullvad.mullvadvpn.model.DnsState
@@ -29,7 +29,7 @@ import net.mullvad.mullvadvpn.repository.SettingsRepository
import net.mullvad.mullvadvpn.util.isValidMtu
import org.apache.commons.validator.routines.InetAddressValidator
-class AdvancedSettingsViewModel(
+class VpnSettingsViewModel(
private val repository: SettingsRepository,
private val inetAddressValidator: InetAddressValidator,
private val resources: Resources,
@@ -40,11 +40,11 @@ class AdvancedSettingsViewModel(
val toastMessages = _toastMessages.asSharedFlow()
private val dialogState =
- MutableStateFlow<AdvancedSettingsDialogState>(AdvancedSettingsDialogState.NoDialog)
+ MutableStateFlow<VpnSettingsDialogState>(VpnSettingsDialogState.NoDialog)
private val vmState =
combine(repository.settingsUpdates, dialogState) { settings, dialogState ->
- AdvancedSettingsViewModelState(
+ VpnSettingsViewModelState(
mtuValue = settings?.mtuString() ?: "",
isAutoConnectEnabled = settings?.autoConnect ?: false,
isLocalNetworkSharingEnabled = settings?.allowLan ?: false,
@@ -61,29 +61,29 @@ class AdvancedSettingsViewModel(
.stateIn(
viewModelScope,
SharingStarted.WhileSubscribed(),
- AdvancedSettingsViewModelState.default()
+ VpnSettingsViewModelState.default()
)
val uiState =
vmState
- .map(AdvancedSettingsViewModelState::toUiState)
+ .map(VpnSettingsViewModelState::toUiState)
.stateIn(
viewModelScope,
SharingStarted.WhileSubscribed(),
- AdvancedSettingsUiState.DefaultUiState()
+ VpnSettingsUiState.DefaultUiState()
)
fun onMtuCellClick() {
- dialogState.update { AdvancedSettingsDialogState.MtuDialog(vmState.value.mtuValue) }
+ dialogState.update { VpnSettingsDialogState.MtuDialog(vmState.value.mtuValue) }
}
fun onMtuInputChange(value: String) {
- dialogState.update { AdvancedSettingsDialogState.MtuDialog(value) }
+ dialogState.update { VpnSettingsDialogState.MtuDialog(value) }
}
fun onSaveMtuClick() =
viewModelScope.launch(dispatcher) {
- val dialog = dialogState.value as? AdvancedSettingsDialogState.MtuDialog
+ val dialog = dialogState.value as? VpnSettingsDialogState.MtuDialog
dialog
?.mtuEditValue
?.toIntOrNull()
@@ -103,19 +103,19 @@ class AdvancedSettingsViewModel(
}
fun onLocalNetworkSharingInfoClick() {
- dialogState.update { AdvancedSettingsDialogState.LocalNetworkSharingInfoDialog }
+ dialogState.update { VpnSettingsDialogState.LocalNetworkSharingInfoDialog }
}
fun onContentsBlockerInfoClick() {
- dialogState.update { AdvancedSettingsDialogState.ContentBlockersInfoDialog }
+ dialogState.update { VpnSettingsDialogState.ContentBlockersInfoDialog }
}
fun onCustomDnsInfoClick() {
- dialogState.update { AdvancedSettingsDialogState.CustomDnsInfoDialog }
+ dialogState.update { VpnSettingsDialogState.CustomDnsInfoDialog }
}
fun onMalwareInfoClick() {
- dialogState.update { AdvancedSettingsDialogState.MalwareInfoDialog }
+ dialogState.update { VpnSettingsDialogState.MalwareInfoDialog }
}
fun onDismissInfoClick() {
@@ -136,13 +136,13 @@ class AdvancedSettingsViewModel(
}
if (stagedDns != null) {
- dialogState.update { AdvancedSettingsDialogState.DnsDialog(stagedDns) }
+ dialogState.update { VpnSettingsDialogState.DnsDialog(stagedDns) }
}
}
fun onDnsInputChange(ipAddress: String) {
dialogState.update { state ->
- val dialog = state as? AdvancedSettingsDialogState.DnsDialog ?: return
+ val dialog = state as? VpnSettingsDialogState.DnsDialog ?: return
val error =
when {
@@ -155,7 +155,7 @@ class AdvancedSettingsViewModel(
else -> StagedDns.ValidationResult.Success
}
- return@update AdvancedSettingsDialogState.DnsDialog(
+ return@update VpnSettingsDialogState.DnsDialog(
stagedDns =
if (dialog.stagedDns is StagedDns.EditDns) {
StagedDns.EditDns(
@@ -184,7 +184,7 @@ class AdvancedSettingsViewModel(
fun onSaveDnsClick() =
viewModelScope.launch(dispatcher) {
val dialog =
- vmState.value.dialogState as? AdvancedSettingsDialogState.DnsDialog ?: return@launch
+ vmState.value.dialogState as? VpnSettingsDialogState.DnsDialog ?: return@launch
if (dialog.stagedDns.isValid().not()) return@launch
@@ -267,7 +267,7 @@ class AdvancedSettingsViewModel(
fun onRemoveDnsClick() =
viewModelScope.launch(dispatcher) {
val dialog =
- vmState.value.dialogState as? AdvancedSettingsDialogState.DnsDialog ?: return@launch
+ vmState.value.dialogState as? VpnSettingsDialogState.DnsDialog ?: return@launch
val updatedList =
vmState.value.customDnsList
@@ -302,7 +302,7 @@ class AdvancedSettingsViewModel(
}
fun onObfuscationInfoClicked() {
- dialogState.update { AdvancedSettingsDialogState.ObfuscationInfoDialog }
+ dialogState.update { VpnSettingsDialogState.ObfuscationInfoDialog }
}
private fun updateDefaultDnsOptionsViaRepository(contentBlockersOption: DefaultDnsOptions) =
@@ -315,7 +315,7 @@ class AdvancedSettingsViewModel(
}
private fun hideDialog() {
- dialogState.update { AdvancedSettingsDialogState.NoDialog }
+ dialogState.update { VpnSettingsDialogState.NoDialog }
}
private fun String.isDuplicateDns(stagedIndex: Int? = null): Boolean {
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AdvancedSettingsViewModelState.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModelState.kt
index 640f4f64ac..05ca44feb7 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AdvancedSettingsViewModelState.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModelState.kt
@@ -1,10 +1,10 @@
package net.mullvad.mullvadvpn.viewmodel
-import net.mullvad.mullvadvpn.compose.state.AdvancedSettingsUiState
+import net.mullvad.mullvadvpn.compose.state.VpnSettingsUiState
import net.mullvad.mullvadvpn.model.DefaultDnsOptions
import net.mullvad.mullvadvpn.model.SelectedObfuscation
-data class AdvancedSettingsViewModelState(
+data class VpnSettingsViewModelState(
val mtuValue: String,
val isAutoConnectEnabled: Boolean,
val isLocalNetworkSharingEnabled: Boolean,
@@ -13,12 +13,12 @@ data class AdvancedSettingsViewModelState(
val customDnsList: List<CustomDnsItem>,
val contentBlockersOptions: DefaultDnsOptions,
val selectedObfuscation: SelectedObfuscation,
- val dialogState: AdvancedSettingsDialogState
+ val dialogState: VpnSettingsDialogState
) {
- fun toUiState(): AdvancedSettingsUiState {
+ fun toUiState(): VpnSettingsUiState {
return when (dialogState) {
- is AdvancedSettingsDialogState.MtuDialog ->
- AdvancedSettingsUiState.MtuDialogUiState(
+ is VpnSettingsDialogState.MtuDialog ->
+ VpnSettingsUiState.MtuDialogUiState(
mtu = mtuValue,
isAutoConnectEnabled = isAutoConnectEnabled,
isLocalNetworkSharingEnabled = isLocalNetworkSharingEnabled,
@@ -29,8 +29,8 @@ data class AdvancedSettingsViewModelState(
mtuEditValue = dialogState.mtuEditValue,
selectedObfuscation = selectedObfuscation
)
- is AdvancedSettingsDialogState.DnsDialog ->
- AdvancedSettingsUiState.DnsDialogUiState(
+ is VpnSettingsDialogState.DnsDialog ->
+ VpnSettingsUiState.DnsDialogUiState(
mtu = mtuValue,
isAutoConnectEnabled = isAutoConnectEnabled,
isLocalNetworkSharingEnabled = isLocalNetworkSharingEnabled,
@@ -41,8 +41,8 @@ data class AdvancedSettingsViewModelState(
stagedDns = dialogState.stagedDns,
selectedObfuscation = selectedObfuscation
)
- is AdvancedSettingsDialogState.LocalNetworkSharingInfoDialog ->
- AdvancedSettingsUiState.LocalNetworkSharingInfoDialogUiState(
+ is VpnSettingsDialogState.LocalNetworkSharingInfoDialog ->
+ VpnSettingsUiState.LocalNetworkSharingInfoDialogUiState(
mtu = mtuValue,
isAutoConnectEnabled = isAutoConnectEnabled,
isLocalNetworkSharingEnabled = isLocalNetworkSharingEnabled,
@@ -51,8 +51,8 @@ data class AdvancedSettingsViewModelState(
customDnsItems = customDnsList,
contentBlockersOptions = contentBlockersOptions
)
- is AdvancedSettingsDialogState.ContentBlockersInfoDialog ->
- AdvancedSettingsUiState.ContentBlockersInfoDialogUiState(
+ is VpnSettingsDialogState.ContentBlockersInfoDialog ->
+ VpnSettingsUiState.ContentBlockersInfoDialogUiState(
mtu = mtuValue,
isAutoConnectEnabled = isAutoConnectEnabled,
isLocalNetworkSharingEnabled = isLocalNetworkSharingEnabled,
@@ -62,8 +62,8 @@ data class AdvancedSettingsViewModelState(
contentBlockersOptions = contentBlockersOptions,
selectedObfuscation = selectedObfuscation
)
- is AdvancedSettingsDialogState.CustomDnsInfoDialog ->
- AdvancedSettingsUiState.CustomDnsInfoDialogUiState(
+ is VpnSettingsDialogState.CustomDnsInfoDialog ->
+ VpnSettingsUiState.CustomDnsInfoDialogUiState(
mtu = mtuValue,
isAutoConnectEnabled = isAutoConnectEnabled,
isLocalNetworkSharingEnabled = isLocalNetworkSharingEnabled,
@@ -72,8 +72,8 @@ data class AdvancedSettingsViewModelState(
customDnsItems = customDnsList,
contentBlockersOptions = contentBlockersOptions
)
- is AdvancedSettingsDialogState.MalwareInfoDialog ->
- AdvancedSettingsUiState.MalwareInfoDialogUiState(
+ is VpnSettingsDialogState.MalwareInfoDialog ->
+ VpnSettingsUiState.MalwareInfoDialogUiState(
mtu = mtuValue,
isAutoConnectEnabled = isAutoConnectEnabled,
isLocalNetworkSharingEnabled = isLocalNetworkSharingEnabled,
@@ -83,8 +83,8 @@ data class AdvancedSettingsViewModelState(
contentBlockersOptions = contentBlockersOptions,
selectedObfuscation = selectedObfuscation
)
- is AdvancedSettingsDialogState.ObfuscationInfoDialog ->
- AdvancedSettingsUiState.ObfuscationInfoDialogUiState(
+ is VpnSettingsDialogState.ObfuscationInfoDialog ->
+ VpnSettingsUiState.ObfuscationInfoDialogUiState(
mtu = mtuValue,
isCustomDnsEnabled = isCustomDnsEnabled,
isAllowLanEnabled = isAllowLanEnabled,
@@ -93,7 +93,7 @@ data class AdvancedSettingsViewModelState(
selectedObfuscation = selectedObfuscation
)
else ->
- AdvancedSettingsUiState.DefaultUiState(
+ VpnSettingsUiState.DefaultUiState(
mtu = mtuValue,
isAutoConnectEnabled = isAutoConnectEnabled,
isLocalNetworkSharingEnabled = isLocalNetworkSharingEnabled,
@@ -110,7 +110,7 @@ data class AdvancedSettingsViewModelState(
private const val EMPTY_STRING = ""
fun default() =
- AdvancedSettingsViewModelState(
+ VpnSettingsViewModelState(
mtuValue = EMPTY_STRING,
isAutoConnectEnabled = false,
isLocalNetworkSharingEnabled = false,
@@ -118,28 +118,28 @@ data class AdvancedSettingsViewModelState(
customDnsList = listOf(),
contentBlockersOptions = DefaultDnsOptions(),
isAllowLanEnabled = false,
- dialogState = AdvancedSettingsDialogState.NoDialog,
+ dialogState = VpnSettingsDialogState.NoDialog,
selectedObfuscation = SelectedObfuscation.Auto
)
}
}
-sealed class AdvancedSettingsDialogState {
- object NoDialog : AdvancedSettingsDialogState()
+sealed class VpnSettingsDialogState {
+ object NoDialog : VpnSettingsDialogState()
- data class MtuDialog(val mtuEditValue: String) : AdvancedSettingsDialogState()
+ data class MtuDialog(val mtuEditValue: String) : VpnSettingsDialogState()
- data class DnsDialog(val stagedDns: StagedDns) : AdvancedSettingsDialogState()
+ data class DnsDialog(val stagedDns: StagedDns) : VpnSettingsDialogState()
- object LocalNetworkSharingInfoDialog : AdvancedSettingsDialogState()
+ object LocalNetworkSharingInfoDialog : VpnSettingsDialogState()
- object ContentBlockersInfoDialog : AdvancedSettingsDialogState()
+ object ContentBlockersInfoDialog : VpnSettingsDialogState()
- object CustomDnsInfoDialog : AdvancedSettingsDialogState()
+ object CustomDnsInfoDialog : VpnSettingsDialogState()
- object MalwareInfoDialog : AdvancedSettingsDialogState()
+ object MalwareInfoDialog : VpnSettingsDialogState()
- object ObfuscationInfoDialog : AdvancedSettingsDialogState()
+ object ObfuscationInfoDialog : VpnSettingsDialogState()
}
sealed interface StagedDns {
diff --git a/android/app/src/main/res/layout/settings.xml b/android/app/src/main/res/layout/settings.xml
index 5ca8ab8aa8..c37c44e8af 100644
--- a/android/app/src/main/res/layout/settings.xml
+++ b/android/app/src/main/res/layout/settings.xml
@@ -48,7 +48,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/vertical_space"
mullvad:text="@string/settings_account" />
- <net.mullvad.mullvadvpn.ui.widget.NavigateCell android:id="@+id/advanced"
+ <net.mullvad.mullvadvpn.ui.widget.NavigateCell android:id="@+id/vpn_settings"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="1dp"