From d343522f64746e854e779eb84b3e965d456cb3aa Mon Sep 17 00:00:00 2001
From: grakovne <grakovne@gmail.com>
Date: Mon, 2 Dec 2024 20:23:02 +0100
Subject: [PATCH] User can not input illegal symbols in custom headers

---
 app/build.gradle.kts                                      | 4 ++--
 .../lissen/domain/connection/ServerRequestHeader.kt       | 8 +-------
 .../screens/settings/advanced/CustomHeaderComposable.kt   | 5 +++--
 3 files changed, 6 insertions(+), 11 deletions(-)

diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 8dde2894..91627955 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -25,8 +25,8 @@ android {
         applicationId = "org.grakovne.lissen"
         minSdk = 28
         targetSdk = 35
-        versionCode = 46
-        versionName = "1.1.15"
+        versionCode = 47
+        versionName = "1.1.16"
 
         testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
         vectorDrawables {
diff --git a/app/src/main/java/org/grakovne/lissen/domain/connection/ServerRequestHeader.kt b/app/src/main/java/org/grakovne/lissen/domain/connection/ServerRequestHeader.kt
index 239cebdc..e033d045 100644
--- a/app/src/main/java/org/grakovne/lissen/domain/connection/ServerRequestHeader.kt
+++ b/app/src/main/java/org/grakovne/lissen/domain/connection/ServerRequestHeader.kt
@@ -18,12 +18,6 @@ data class ServerRequestHeader(
             return this.copy(name = name, value = value)
         }
 
-        private fun String.clean(): String {
-            var sanitized = this.replace(Regex("[\\r\\n]"), "")
-            sanitized = sanitized.replace(Regex("[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]"), "")
-            sanitized = sanitized.trim()
-
-            return sanitized
-        }
+        private fun String.clean(): String = this.replace(Regex("[^a-zA-Z0-9-]"), "").trim()
     }
 }
diff --git a/app/src/main/java/org/grakovne/lissen/ui/screens/settings/advanced/CustomHeaderComposable.kt b/app/src/main/java/org/grakovne/lissen/ui/screens/settings/advanced/CustomHeaderComposable.kt
index 94b47639..e844decd 100644
--- a/app/src/main/java/org/grakovne/lissen/ui/screens/settings/advanced/CustomHeaderComposable.kt
+++ b/app/src/main/java/org/grakovne/lissen/ui/screens/settings/advanced/CustomHeaderComposable.kt
@@ -22,6 +22,7 @@ import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.unit.dp
 import org.grakovne.lissen.R
 import org.grakovne.lissen.domain.connection.ServerRequestHeader
+import org.grakovne.lissen.domain.connection.ServerRequestHeader.Companion.clean
 
 @Composable
 fun CustomHeaderComposable(
@@ -46,7 +47,7 @@ fun CustomHeaderComposable(
             ) {
                 OutlinedTextField(
                     value = header.name,
-                    onValueChange = { onChanged(header.copy(name = it, value = header.value)) },
+                    onValueChange = { onChanged(header.copy(name = it, value = header.value).clean()) },
                     label = { Text(stringResource(R.string.custom_header_hint_name)) },
                     singleLine = true,
                     shape = RoundedCornerShape(16.dp),
@@ -55,7 +56,7 @@ fun CustomHeaderComposable(
 
                 OutlinedTextField(
                     value = header.value,
-                    onValueChange = { onChanged(header.copy(name = header.name, value = it)) },
+                    onValueChange = { onChanged(header.copy(name = header.name, value = it).clean()) },
                     label = { Text(stringResource(R.string.custom_header_hint_value)) },
                     singleLine = true,
                     shape = RoundedCornerShape(16.dp),