Add port number validation

pull/377/head
Koitharu 3 years ago
parent 46b797fc67
commit b5705b45df
No known key found for this signature in database
GPG Key ID: 8E861F8CE6E7CE27

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

@ -11,6 +11,8 @@ import org.koitharu.kotatsu.parsers.config.ConfigKey
import org.koitharu.kotatsu.settings.utils.AutoCompleteTextViewPreference import org.koitharu.kotatsu.settings.utils.AutoCompleteTextViewPreference
import org.koitharu.kotatsu.settings.utils.EditTextBindListener import org.koitharu.kotatsu.settings.utils.EditTextBindListener
import org.koitharu.kotatsu.settings.utils.EditTextDefaultSummaryProvider 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) { fun PreferenceFragmentCompat.addPreferencesFromRepository(repository: RemoteMangaRepository) {
val configKeys = repository.getConfigKeys() val configKeys = repository.getConfigKeys()

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

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

@ -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
}
}

@ -14,7 +14,7 @@ import dagger.hilt.android.AndroidEntryPoint
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.ui.AlertDialogFragment import org.koitharu.kotatsu.core.ui.AlertDialogFragment
import org.koitharu.kotatsu.databinding.PreferenceDialogAutocompletetextviewBinding 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 org.koitharu.kotatsu.sync.data.SyncSettings
import javax.inject.Inject import javax.inject.Inject

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

Loading…
Cancel
Save