Add port number validation

This commit is contained in:
Koitharu
2023-06-04 15:59:44 +03:00
parent 46b797fc67
commit b5705b45df
7 changed files with 33 additions and 4 deletions

View File

@@ -13,6 +13,8 @@ import org.koitharu.kotatsu.core.prefs.AppSettings
import org.koitharu.kotatsu.core.ui.BasePreferenceFragment
import org.koitharu.kotatsu.settings.utils.EditTextBindListener
import org.koitharu.kotatsu.settings.utils.PasswordSummaryProvider
import org.koitharu.kotatsu.settings.utils.validation.DomainValidator
import org.koitharu.kotatsu.settings.utils.validation.PortNumberValidator
import java.net.Proxy
@AndroidEntryPoint
@@ -32,7 +34,7 @@ class ProxySettingsFragment : BasePreferenceFragment(R.string.proxy),
EditTextBindListener(
inputType = EditorInfo.TYPE_CLASS_NUMBER,
hint = null,
validator = null,
validator = PortNumberValidator(),
),
)
findPreference<EditTextPreference>(AppSettings.KEY_PROXY_PASSWORD)?.let { pref ->

View File

@@ -11,6 +11,8 @@ import org.koitharu.kotatsu.parsers.config.ConfigKey
import org.koitharu.kotatsu.settings.utils.AutoCompleteTextViewPreference
import org.koitharu.kotatsu.settings.utils.EditTextBindListener
import org.koitharu.kotatsu.settings.utils.EditTextDefaultSummaryProvider
import org.koitharu.kotatsu.settings.utils.validation.DomainValidator
import org.koitharu.kotatsu.settings.utils.validation.HeaderValidator
fun PreferenceFragmentCompat.addPreferencesFromRepository(repository: RemoteMangaRepository) {
val configKeys = repository.getConfigKeys()

View File

@@ -1,4 +1,4 @@
package org.koitharu.kotatsu.settings
package org.koitharu.kotatsu.settings.utils.validation
import okhttp3.HttpUrl
import org.koitharu.kotatsu.R

View File

@@ -1,4 +1,4 @@
package org.koitharu.kotatsu.settings
package org.koitharu.kotatsu.settings.utils.validation
import okhttp3.Headers
import org.koitharu.kotatsu.R

View File

@@ -0,0 +1,24 @@
package org.koitharu.kotatsu.settings.utils.validation
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.util.EditTextValidator
class PortNumberValidator : EditTextValidator() {
override fun validate(text: String): ValidationResult {
val trimmed = text.trim()
if (trimmed.isEmpty()) {
return ValidationResult.Success
}
return if (!checkCharacters(trimmed)) {
ValidationResult.Failed(context.getString(R.string.invalid_port_number))
} else {
ValidationResult.Success
}
}
private fun checkCharacters(value: String): Boolean {
val intValue = value.toIntOrNull() ?: return false
return intValue in 1..65535
}
}

View File

@@ -14,7 +14,7 @@ import dagger.hilt.android.AndroidEntryPoint
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.ui.AlertDialogFragment
import org.koitharu.kotatsu.databinding.PreferenceDialogAutocompletetextviewBinding
import org.koitharu.kotatsu.settings.DomainValidator
import org.koitharu.kotatsu.settings.utils.validation.DomainValidator
import org.koitharu.kotatsu.sync.data.SyncSettings
import javax.inject.Inject

View File

@@ -432,4 +432,5 @@
<string name="username">Username</string>
<string name="password">Password</string>
<string name="authorization_optional">Authorization (optional)</string>
<string name="invalid_port_number">Invalid port number</string>
</resources>