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 15e05cb6e2f1..c00be63ac295 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,6 +1,5 @@ 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 @@ -30,6 +29,7 @@ import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.text.input.VisualTransformation +import androidx.core.text.isDigitsOnly import net.mullvad.mullvadvpn.constant.EMPTY_STRING import net.mullvad.mullvadvpn.constant.NEWLINE_STRING import net.mullvad.mullvadvpn.lib.theme.Dimens @@ -87,8 +87,7 @@ fun CustomTextField( if (stringChangedSinceLastInvocation) { val isValidInput = - if (isDigitsOnlyAllowed) TextUtils.isDigitsOnly(newTextFieldValueState.text) - else true + if (isDigitsOnlyAllowed) newTextFieldValueState.text.isDigitsOnly() else true if (newTextFieldValueState.text.length <= maxCharLength && isValidInput) { // Remove any newline chars added by enter key clicks onValueChanged( diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt index e772458808a5..de4fc2d046ac 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt @@ -9,6 +9,7 @@ import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.activity.result.contract.ActivityResultContracts import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen +import androidx.core.util.Consumer import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle @@ -158,7 +159,7 @@ class MainActivity : ComponentActivity(), AndroidScopeComponent { callbackFlow { send(intent) - val listener: (Intent) -> Unit = { trySend(it) } + val listener = Consumer { intent -> trySend(intent) } addOnNewIntentListener(listener) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AppInfoViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AppInfoViewModel.kt index 6f5fad6dba33..16ec17be5d0b 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AppInfoViewModel.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AppInfoViewModel.kt @@ -2,6 +2,7 @@ package net.mullvad.mullvadvpn.viewmodel import android.content.res.Resources import android.net.Uri +import androidx.core.net.toUri import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import kotlinx.coroutines.channels.Channel @@ -51,7 +52,7 @@ class AppInfoViewModel( } else { resources.getString(R.string.download_url) } - _uiSideEffect.send(AppInfoSideEffect.OpenUri(Uri.parse(uri))) + _uiSideEffect.send(AppInfoSideEffect.OpenUri(uri.toUri())) } } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt index cd3e94bc6539..c8de8a20a87f 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt @@ -2,6 +2,7 @@ package net.mullvad.mullvadvpn.viewmodel import android.content.res.Resources import android.net.Uri +import androidx.core.net.toUri import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import kotlinx.coroutines.FlowPreview @@ -190,7 +191,7 @@ class ConnectViewModel( } else { resources.getString(R.string.download_url) } - _uiSideEffect.send(UiSideEffect.OpenUri(Uri.parse(uri))) + _uiSideEffect.send(UiSideEffect.OpenUri(uri.toUri())) } fun dismissNewDeviceNotification() { diff --git a/android/buildSrc/src/main/kotlin/Versions.kt b/android/buildSrc/src/main/kotlin/Versions.kt index d08012324b32..ed4e2204b4bb 100644 --- a/android/buildSrc/src/main/kotlin/Versions.kt +++ b/android/buildSrc/src/main/kotlin/Versions.kt @@ -6,7 +6,7 @@ object Versions { const val targetSdkVersion = 35 const val ndkVersion = "27.2.12479018" - const val junitJupiter = "5.11.4" - const val junit5Android = "1.6.0" - const val junit5Plugin = "1.11.3.0" + const val junitJupiter = "5.12.0" + const val junit5Android = "1.7.0" + const val junit5Plugin = "1.12.0.0" } diff --git a/android/config/lint-baseline.xml b/android/config/lint-baseline.xml index aef6521327fa..c45edd16dc0e 100644 --- a/android/config/lint-baseline.xml +++ b/android/config/lint-baseline.xml @@ -5,14 +5,14 @@ id="InvalidPackage" message="Invalid package reference in library; not included in Android: `javax.naming.directory`. Referenced from `io.grpc.internal.JndiResourceResolverFactory.JndiRecordFetcher`."> + file="*/caches/modules-2/files-2.1/io.grpc/grpc-core/1.71.0/a7cd1e546cd5518dc6a919e5469712af99fe13b0/grpc-core-1.71.0.jar"/> + file="*/caches/modules-2/files-2.1/io.grpc/grpc-core/1.71.0/a7cd1e546cd5518dc6a919e5469712af99fe13b0/grpc-core-1.71.0.jar"/> + +sub BF6D15D3F1BF7BCF +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +=Cl60 +-----END PGP PUBLIC KEY BLOCK----- + + pub 1427500BB1D27520 uid ExoQuery @@ -3888,6 +3934,35 @@ rLn7t3piwid4fiWe5/Q9pYtn0jOsRBGzxQEs2XV/i7EQXT8kcqKGKmZWtUC7b92G -----END PGP PUBLIC KEY BLOCK----- +pub C3BAB45F4AF71FAB +uid Yang Song + +sub 34FEB51E33761BEA +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQENBFkeN88BCAC4rvR3Dc6nDYhbXUC5IQ6SJWvV98+tvZ117J/VD07el7dicryY +H3OAWl62iLjHJFP/+AEra1plpiWbPioDlzjOWC2AJjUCtqVLHdyVbY0Gv3sSRZXJ +3H7CyGO1QbT79m4Gwk9vX5si3aBTzJNqYF6Kn1C386ZSZd6l618YSPUzJRXi1mst +rP2iV1hP+kydcFxB0+F8/IjzK9kngtp/k1z2x0tbIRTnUYnvS/GNbLHlVzrxvA1S +izbVLBzeuzmSyqT7xy6dPjsLEIoSK3cyR9x5tzmcSEA3dMN36N7j+mbqVI25Md0p +gd3vgIqGXQsRSezG1Kj5pQglPKl2Jufx5CEPABEBAAG0HVlhbmcgU29uZyA8c29u +Z3lhQGdvb2dsZS5jb20+uQENBFkeN88BCAChDNcKrhc2DHhIBmGvPvua+JiR3bAD +4pQZbMfisr70ZFHox7mVxTGGK7UDY4TpgeaWElWY0FJuQmnfP90Z4z+0Aqn24OoI +XyddFzt5JF1jCT79QX95t0KBhmPgqQssCNHfz6tpQSgK3NRaVJSjtgaTaVu6zJ++ +ZJj772LQt0hqzcjMlpOaX2Jkdj8hDhsw3PZiCO4Hq52pIS987sPQRdbT+Tv6V4WO +Z7cuWqQIdfWOQwxVn3MAIIL3l9a4iMKIAWuj3kHxaHZ3gLj/51b/nlh3chDzhGbo +YpZWk1pmlCXFZnctoRO9Tk25bKRUgTJJP8sKgAsNK37n8zGAzUc3yXhRABEBAAGJ +AR8EGAECAAkFAlkeN88CGwwACgkQw7q0X0r3H6tJqgf/ZXG41Egf1gHv2d2c4hYI +xFFKhVJFZI0EfMq7ZCPZXrjphtgTrLLUYyxaRoW8dRstf/sNyb+yiZr8PGyKmk+6 +LutzHStJFyk+h9b/sRKWzKnAnUzxzMggfFChMsMdwrmd4nmy6II+A0bjxM0eee4A +vEyd9/q8LNswtqaVJf7Az2HADvPUxxqcrtFvUFvD1GuTNYaSEKsZcr/EAmP8zq6L +vXKCmVnnIiP5JwBYMOfBqnsG6r504vpfmhfJBycCsyZlJbVjV0sL9514Ph7MJysI +uwCK4i39LRwL4i3O2PDZgv5Oal/V0cfrEEfJD4px/gfmZF2LRkpMS+qZrRJ2Nu7K +6g== +=jgaB +-----END PGP PUBLIC KEY BLOCK----- + + pub C727D053C4481CF5 sub 29E792953D515FC5 -----BEGIN PGP PUBLIC KEY BLOCK----- @@ -5037,6 +5112,44 @@ TSkgKFVzZWQgdG8gc2lnbiBKRE9NIFBhY2thZ2VzKSA8amRvbUB0dWlzLm5ldD4= -----END PGP PUBLIC KEY BLOCK----- +pub EB095DA7D2F6AC0E +uid TensorFlow Authors + +sub 603D72C90616CD6B +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQGNBGBm/LQBDADMr/VPcTvE6k3wEYxq5kZusnDCDTsI6RK51d4oMwaRc3Z0jtZ0 +CfyWocZBok4rMbZAVnE3Q8pMyikGGUnc8ZsWoPEmJyCpw/2Orj0QqZhIgYMQ31Uq +tiGZF/G4w9phLIkFgU9BLGYjRNM69R0oE/Tj8mjguvnKzYM3GjkY6nDsgWCM5TJX +01k4sdLs0dVg86m4keq+SeS9uEwnINZTh6kQUKsW6aHvvPXze/UPoaZqxgXDjF+F +JrPwW8yDllkbzpbo53ulz1TL5RsIH3daUwxXG3ciovUXG/b2ZRuWjtH7Gn/AvCNL +0RXdHK3A2I23zCooOE+we2D45QUHm/vcmvsnbxOU7Tslm2DsnYxBjf5dAl2yZn+J +FSrV91Bbd5ZXi1UkkGjBzAgbHDwdMvL9K6fTO9NwjXyBpiHy6ukIOObn9uIgDSSa +xPnqgeykSv+RZEea8ML4BSif5RJYlmILEzJhH4rtX9X+t8BZv+ZoaN6p/qYg4/2+ +XfSUPmCJjlUaIUUAEQEAAbQ7VGVuc29yRmxvdyBBdXRob3JzIDx0ZW5zb3JmbG93 +LXNvbmF0eXBlLWF1dGhvcnNAZ29vZ2xlLmNvbT65AY0EYGb8tAEMALbsrC+JdcC4 +wyIL2v/pg++nHpMUbueLO82DpIf/OzSGerT5D5cP8PpuwhKIbq8drEEj6wpSaGjK +sZT4EQppo+SUFRAu/faZLyWW/kMLJQ+ez/OC2J7Yqqa/p5pker4A5WcWokWujlVJ +ZVE2MA6R3EPDKHF2p3uIgHmvfWnMS+tMzopj3mj1SvbV2UNZyj1SFrOkUmJ2ueBR +WZ9Ll3xuEMfMRAF2HXFI+aBIeCRbRHD/ueWFVqKX4vsyEMMCeyWjumWYR3KODqQs +E2rgf4V9klXUoo1d9jvSIR1zt8TyIvuUQv4sB64Rd5HsTS5X1VjJ2/0Vgu0TkF3V +BCuGEBi8u/nRXe5SkOYG1KAIbqljpx8mkgMjZRRrptxUeaK6GndHikuY85Np+FDD +zQwKKO8hItXHQq8pAyXm9RkA+rnEMfqKi5HNThsKlYyVNxQ0I/8r0gjyprLfZUhk +tyR/ZemnNN9w29qgD5FMZ4cNsTeCx5NiKKL5+UmbtSFMx/P4vh4aXwARAQABiQG2 +BBgBCgAgFiEEdEDx99J7rBFflT1V6wldp9L2rA4FAmBm/LQCGwwACgkQ6wldp9L2 +rA5EgQv/dXw1tFelPKUcFuhxa7gJ6v9LkNoCEq5g5aSc7IEjuh0EH4aNU/+7rmIZ +wRslOHcSBeBvQPhIYdosIQfdCcwjS7LU1urnkljCvuIbwaX8d5Am7NqMbtM/GR66 +MRPSO3uV6g0DmswDZ3i0WSeUgK4NXRRmL3gUZcoxOeQpg0Mo+fGiZDGywACa3azJ +BWR8G3gSjrN6YdM5+Tb0gQ1D/AN8JVF7ksknl2AlCI9pOEOsyaHZ4T++or36btHm +Z+FJw9LCPGHaCTrDSoA0Tun0fZBBIf1xmNPNgdQHerTtp3mtTCFRdBiIH4d3s3d2 +HBuEYqdLqiD6+8saU5lRAPMFb6VoPPsGNv8by7h7WQ+fWyuCpUPZvuFuVobq7K3V +H0iNhLlzae8WMDUVX3pQKZrDjlqjjaloOJXoq8ZFlDM+1wwKwz7nouEJPFReP9Mn +xjlUofFR0KyGrs6qzaeC22AvbIotX6sUExVRjz4b+lro3f3lLlHlEWWyoKRyH54g +1y4mk1Mn +=iteQ +-----END PGP PUBLIC KEY BLOCK----- + + pub EC5BCE97B4DEFA96 uid Martin Grotzke diff --git a/android/gradle/verification-metadata.xml b/android/gradle/verification-metadata.xml index 29c3c60ff738..10e0fef4c430 100644 --- a/android/gradle/verification-metadata.xml +++ b/android/gradle/verification-metadata.xml @@ -54,8 +54,10 @@ + + @@ -122,6 +124,7 @@ + @@ -144,6 +147,7 @@ + @@ -174,6 +178,7 @@ + @@ -414,11 +419,6 @@ - - - - - @@ -553,6 +553,14 @@ + + + + + + + + @@ -1483,12 +1491,12 @@ - - - + + + - - + + @@ -1509,14 +1517,14 @@ - - + + - - - + + + @@ -2231,44 +2239,44 @@ - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + @@ -2582,13 +2590,13 @@ - - + + - - + + @@ -2602,125 +2610,125 @@ - - + + - - + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + - - + + - - - + + + - - + + - - + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + @@ -2728,36 +2736,36 @@ - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + @@ -2781,212 +2789,212 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + @@ -3117,6 +3125,21 @@ + + + + + + + + + + + + + + + @@ -3152,9 +3175,14 @@ - - - + + + + + + + + @@ -3165,41 +3193,33 @@ - - - - - - - - - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - + + @@ -3212,6 +3232,11 @@ + + + + + @@ -3331,9 +3356,9 @@ - - - + + + @@ -3341,73 +3366,83 @@ - - - + + + - - - + + + - - - + + + - - + + + + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -3686,9 +3721,9 @@ - - - + + + @@ -3706,32 +3741,32 @@ - - - + + + - - + + - - + + - - + + - - + + - - - + + + @@ -3909,28 +3944,28 @@ - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + @@ -4125,39 +4160,39 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -4168,73 +4203,78 @@ - - - + + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -4578,100 +4618,100 @@ - - - + + + - + - - - + + + - + - - + + - - + + - - - + + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - + - - - + + + - - + + - - - + + + - + - - - + + + - - + + - - - + + + - - + + @@ -4729,6 +4769,11 @@ + + + + + @@ -4739,6 +4784,11 @@ + + + + + @@ -4858,19 +4908,19 @@ - - - + + + - - - + + + - - - + + + @@ -5360,6 +5410,11 @@ + + + + + @@ -5375,6 +5430,11 @@ + + + + + @@ -5471,6 +5531,16 @@ + + + + + + + + + + @@ -5498,6 +5568,14 @@ + + + + + + + + @@ -5519,6 +5597,16 @@ + + + + + + + + + + @@ -5534,6 +5622,11 @@ + + + + + @@ -5574,6 +5667,11 @@ + + + + + @@ -5604,6 +5702,11 @@ + + + + + @@ -5703,6 +5806,11 @@ + + + + + @@ -5719,6 +5827,14 @@ + + + + + + + + @@ -6086,19 +6202,9 @@ - - - - - - - - - - - - - + + + @@ -6111,17 +6217,12 @@ - - - + + + - - - - - - - + + @@ -6129,94 +6230,76 @@ - - - - - - - - - - - + + + - - - - - - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - - - - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + @@ -6285,9 +6368,9 @@ - - - + + + diff --git a/android/lib/common/src/main/kotlin/net/mullvad/mullvadvpn/lib/common/util/ContextExtensions.kt b/android/lib/common/src/main/kotlin/net/mullvad/mullvadvpn/lib/common/util/ContextExtensions.kt index 882279c99911..bf275c4f5338 100644 --- a/android/lib/common/src/main/kotlin/net/mullvad/mullvadvpn/lib/common/util/ContextExtensions.kt +++ b/android/lib/common/src/main/kotlin/net/mullvad/mullvadvpn/lib/common/util/ContextExtensions.kt @@ -3,6 +3,7 @@ package net.mullvad.mullvadvpn.lib.common.util import android.content.Context import android.content.Intent import android.net.Uri +import androidx.core.net.toUri import net.mullvad.mullvadvpn.lib.model.WebsiteAuthToken fun createAccountUri(accountUri: String, websiteAuthToken: WebsiteAuthToken?): Uri { @@ -13,7 +14,7 @@ fun createAccountUri(accountUri: String, websiteAuthToken: WebsiteAuthToken?): U append(websiteAuthToken.value) } } - return Uri.parse(urlString) + return urlString.toUri() } fun Context.openVpnSettings() {