diff --git a/app/src/main/java/org/koitharu/kotatsu/settings/HeaderValidator.kt b/app/src/main/java/org/koitharu/kotatsu/settings/HeaderValidator.kt
new file mode 100644
index 000000000..9e251c0a7
--- /dev/null
+++ b/app/src/main/java/org/koitharu/kotatsu/settings/HeaderValidator.kt
@@ -0,0 +1,27 @@
+package org.koitharu.kotatsu.settings
+
+import okhttp3.Headers
+import org.koitharu.kotatsu.R
+import org.koitharu.kotatsu.core.network.CommonHeaders
+import org.koitharu.kotatsu.utils.EditTextValidator
+
+class HeaderValidator : EditTextValidator() {
+
+ private val headers = Headers.Builder()
+
+ override fun validate(text: String): ValidationResult {
+ val trimmed = text.trim()
+ if (trimmed.isEmpty()) {
+ return ValidationResult.Success
+ }
+ return if (!validateImpl(trimmed)) {
+ ValidationResult.Failed(context.getString(R.string.invalid_value_message))
+ } else {
+ ValidationResult.Success
+ }
+ }
+
+ private fun validateImpl(value: String): Boolean = runCatching {
+ headers[CommonHeaders.USER_AGENT] = value
+ }.isSuccess
+}
diff --git a/app/src/main/java/org/koitharu/kotatsu/settings/SourceSettingsExt.kt b/app/src/main/java/org/koitharu/kotatsu/settings/SourceSettingsExt.kt
index 5137fe95e..293f4847d 100644
--- a/app/src/main/java/org/koitharu/kotatsu/settings/SourceSettingsExt.kt
+++ b/app/src/main/java/org/koitharu/kotatsu/settings/SourceSettingsExt.kt
@@ -44,7 +44,7 @@ fun PreferenceFragmentCompat.addPreferencesFromRepository(repository: RemoteMang
EditTextBindListener(
inputType = EditorInfo.TYPE_CLASS_TEXT,
hint = key.defaultValue,
- validator = null,
+ validator = HeaderValidator(),
),
)
setTitle(R.string.user_agent)
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 406703d2e..6521d51d0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -416,4 +416,5 @@
Do you want to receive personalized manga suggestions?
Translations
WebView not available: check if WebView provider is installed
+ Invalid value