From 672e46562d9b57ef7a9165cd37136053f5518713 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Kalle=20Lindstr=C3=B6m?= <karl.lindstrom@mullvad.net>
Date: Tue, 22 Oct 2024 17:01:27 +0200
Subject: [PATCH] Use KeyboardType.Number on Amazon FireStick

---
 .../mullvadvpn/compose/screen/LoginScreen.kt      |  3 ++-
 .../mullvad/mullvadvpn/compose/util/Keyboard.kt   | 15 +++++++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)
 create mode 100644 android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/Keyboard.kt

diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/LoginScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/LoginScreen.kt
index a0829b79d536..e7966bcc3979 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/LoginScreen.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/LoginScreen.kt
@@ -82,6 +82,7 @@ import net.mullvad.mullvadvpn.compose.transitions.LoginTransition
 import net.mullvad.mullvadvpn.compose.util.CollectSideEffectWithLifecycle
 import net.mullvad.mullvadvpn.compose.util.OnNavResultValue
 import net.mullvad.mullvadvpn.compose.util.accountNumberVisualTransformation
+import net.mullvad.mullvadvpn.compose.util.numberPasswordInputType
 import net.mullvad.mullvadvpn.compose.util.showSnackbarImmediately
 import net.mullvad.mullvadvpn.lib.theme.AppTheme
 import net.mullvad.mullvadvpn.lib.theme.Dimens
@@ -285,7 +286,7 @@ private fun ColumnScope.LoginInput(
         keyboardOptions =
             KeyboardOptions(
                 imeAction = if (state.loginButtonEnabled) ImeAction.Done else ImeAction.None,
-                keyboardType = KeyboardType.NumberPassword,
+                keyboardType = KeyboardType.numberPasswordInputType(LocalContext.current),
             ),
         onValueChange = onAccountNumberChange,
         singleLine = true,
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/Keyboard.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/Keyboard.kt
new file mode 100644
index 000000000000..cb5ed61c5bef
--- /dev/null
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/Keyboard.kt
@@ -0,0 +1,15 @@
+package net.mullvad.mullvadvpn.compose.util
+
+import android.content.Context
+import androidx.compose.ui.text.input.KeyboardType
+
+fun KeyboardType.Companion.numberPasswordInputType(context: Context): KeyboardType =
+    if (isFireStick(context)) {
+        Number
+    } else {
+        NumberPassword
+    }
+
+// see: https://developer.amazon.com/docs/fire-tv/identify-amazon-fire-tv-devices.html
+private fun isFireStick(context: Context): Boolean =
+    context.packageManager.hasSystemFeature("amazon.hardware.fire_tv")