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