diff --git a/app/build.gradle b/app/build.gradle
index d81bce6d9..64aab0ef4 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -15,8 +15,8 @@ android {
applicationId 'org.koitharu.kotatsu'
minSdkVersion 21
targetSdkVersion 33
- versionCode 545
- versionName '5.1.1'
+ versionCode 546
+ versionName '5.1.2'
generatedDensities = []
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -79,7 +79,7 @@ afterEvaluate {
}
dependencies {
//noinspection GradleDependency
- implementation('com.github.KotatsuApp:kotatsu-parsers:cae7073f87') {
+ implementation('com.github.KotatsuApp:kotatsu-parsers:ebcc6391d6') {
exclude group: 'org.json', module: 'json'
}
diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/HeaderValidator.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/HeaderValidator.kt
new file mode 100644
index 000000000..b25be70d6
--- /dev/null
+++ b/app/src/main/kotlin/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.core.util.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/kotlin/org/koitharu/kotatsu/settings/SourceSettingsExt.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/SourceSettingsExt.kt
index 5137fe95e..293f4847d 100644
--- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/SourceSettingsExt.kt
+++ b/app/src/main/kotlin/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 2a5de47a9..aee909a83 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -423,4 +423,5 @@
Address
Port
Proxy
+ Invalid value