summaryrefslogtreecommitdiffhomepage
path: root/android/app/src
diff options
context:
space:
mode:
Diffstat (limited to 'android/app/src')
-rw-r--r--android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/dialog/DnsDialogTest.kt2
-rw-r--r--android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/VpnSettingsScreenTest.kt2
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/DnsCell.kt3
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DnsDialog.kt24
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/ApiAccessMethodTextField.kt29
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/CustomTextField.kt25
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/DnsTextField.kt3
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,