diff options
Diffstat (limited to 'android/app/src')
7 files changed, 43 insertions, 45 deletions
diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/dialog/DnsDialogTest.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/dialog/DnsDialogTest.kt index 20cf2357db..faafce1137 100644 --- a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/dialog/DnsDialogTest.kt +++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/dialog/DnsDialogTest.kt @@ -124,7 +124,7 @@ class DnsDialogTest { companion object { private const val LOCAL_DNS_SERVER_WARNING = "The local DNS server will not work unless you enable " + - "\"Local Network Sharing\" under Preferences." + "\"Local Network Sharing\" under VPN settings." private const val invalidIpAddress = "300.300.300.300" } diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt index 42a9392502..45edfcd204 100644 --- a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt +++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt @@ -562,7 +562,7 @@ class VpnSettingsScreenTest { companion object { private const val LOCAL_DNS_SERVER_WARNING = "The local DNS server will not work unless you enable " + - "\"Local Network Sharing\" under Preferences." + "\"Local Network Sharing\" under VPN settings." private const val VALID_DUMMY_MTU_VALUE = "1337" private const val DUMMY_DNS_ADDRESS = "0.0.0.1" private const val DUMMY_DNS_ADDRESS_2 = "0.0.0.2" diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/DnsCell.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/DnsCell.kt index 1aacaedbc1..8fe5f32b99 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/DnsCell.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/DnsCell.kt @@ -15,7 +15,6 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.lib.theme.AppTheme -import net.mullvad.mullvadvpn.lib.theme.color.warning @Preview @Composable @@ -42,7 +41,7 @@ fun DnsCell( Icon( imageVector = Icons.Rounded.Error, contentDescription = stringResource(id = R.string.confirm_local_dns), - tint = MaterialTheme.colorScheme.warning, + tint = MaterialTheme.colorScheme.error, ) } }, diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DnsDialog.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DnsDialog.kt index dd08a71c3a..c2e94ded5b 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DnsDialog.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DnsDialog.kt @@ -92,21 +92,21 @@ fun DnsDialog( onSubmit = onSaveDnsClick, isEnabled = true, placeholderText = stringResource(R.string.custom_dns_hint), + errorText = + when { + state.validationError is ValidationError.DuplicateAddress -> { + stringResource(R.string.duplicate_address_warning) + } + state.isLocal && !state.isAllowLanEnabled -> { + stringResource(id = R.string.confirm_local_dns) + } + else -> { + null + } + }, modifier = Modifier.fillMaxWidth(), ) }, - message = - when { - state.validationError is ValidationError.DuplicateAddress -> { - stringResource(R.string.duplicate_address_warning) - } - state.isLocal && !state.isAllowLanEnabled -> { - stringResource(id = R.string.confirm_local_dns) - } - else -> { - null - } - }, onResetButtonText = stringResource(id = R.string.remove_button), confirmButtonEnabled = state.isValid(), messageTextColor = MaterialTheme.colorScheme.error, diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/ApiAccessMethodTextField.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/ApiAccessMethodTextField.kt index 561465973e..b473dcbdb5 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/ApiAccessMethodTextField.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/ApiAccessMethodTextField.kt @@ -1,17 +1,9 @@ package net.mullvad.mullvadvpn.compose.textfield -import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Warning -import androidx.compose.material3.Icon -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.text.input.ImeAction @@ -63,24 +55,3 @@ fun ApiAccessMethodTextField( ), ) } - -@Composable -private fun ErrorSupportingText(text: String) { - Row( - verticalAlignment = Alignment.CenterVertically, - modifier = Modifier.padding(top = Dimens.miniPadding), - ) { - Icon( - imageVector = Icons.Default.Warning, - contentDescription = null, - modifier = Modifier.size(Dimens.smallIconSize), - tint = MaterialTheme.colorScheme.error, - ) - Text( - text = text, - color = MaterialTheme.colorScheme.onSecondary, - style = MaterialTheme.typography.bodySmall, - modifier = Modifier.padding(horizontal = Dimens.smallPadding), - ) - } -} diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/CustomTextField.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/CustomTextField.kt index 5bdcc961e7..0e18ea5876 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/CustomTextField.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/CustomTextField.kt @@ -1,9 +1,15 @@ package net.mullvad.mullvadvpn.compose.textfield import android.text.TextUtils +import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Error +import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.material3.TextField @@ -24,6 +30,7 @@ import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.text.input.VisualTransformation import net.mullvad.mullvadvpn.constant.EMPTY_STRING import net.mullvad.mullvadvpn.constant.NEWLINE_STRING +import net.mullvad.mullvadvpn.lib.theme.Dimens @Composable fun CustomTextField( @@ -100,3 +107,21 @@ fun CustomTextField( label = labelText?.let { { Text(text = labelText) } }, ) } + +@Composable +fun ErrorSupportingText(text: String) { + Row(modifier = Modifier.padding(top = Dimens.miniPadding)) { + Icon( + imageVector = Icons.Default.Error, + contentDescription = null, + modifier = Modifier.size(Dimens.smallIconSize), + tint = MaterialTheme.colorScheme.error, + ) + Text( + text = text, + color = MaterialTheme.colorScheme.onSecondary, + style = MaterialTheme.typography.bodySmall, + modifier = Modifier.padding(horizontal = Dimens.smallPadding), + ) + } +} diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/DnsTextField.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/DnsTextField.kt index a2c8877e78..34b8057720 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/DnsTextField.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/DnsTextField.kt @@ -1,5 +1,6 @@ package net.mullvad.mullvadvpn.compose.textfield +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.KeyboardType @@ -11,6 +12,7 @@ fun DnsTextField( onValueChanged: (String) -> Unit = {}, onSubmit: () -> Unit = {}, placeholderText: String?, + errorText: String?, isEnabled: Boolean = true, isValidValue: Boolean = true, ) { @@ -22,6 +24,7 @@ fun DnsTextField( onSubmit = { onSubmit() }, isEnabled = isEnabled, placeholderText = placeholderText, + supportingText = errorText?.let { { ErrorSupportingText(errorText) } }, maxCharLength = Int.MAX_VALUE, isDigitsOnlyAllowed = false, isValidValue = isValidValue, |
