Improved handling of broken addresses in settings

This commit is contained in:
Corewala 2022-06-30 18:54:06 -04:00
parent a47d003f59
commit 09fc2a480a
4 changed files with 68 additions and 20 deletions

View File

@ -85,7 +85,9 @@ class GemActivity : AppCompatActivity() {
lateinit var adapter: AbstractGemtextAdapter
lateinit var home: String
private lateinit var home: String
private lateinit var searchBase: String
private val onLink: (link: URI, longTap: Boolean, adapterPosition: Int) -> Unit = { uri, longTap, _: Int ->
if(longTap){
@ -171,6 +173,20 @@ class GemActivity : AppCompatActivity() {
home = ""
}
searchBase = prefs.getString(
"search_base",
Buran.DEFAULT_SEARCH_BASE
) ?: Buran.DEFAULT_SEARCH_BASE
if(
!searchBase.startsWith("gemini://")
or searchBase.contains(" ")
or !searchBase.contains(".")
or !searchBase.endsWith("?")
){
searchBase = Buran.DEFAULT_SEARCH_BASE
}
if(getInternetStatus()){
initialise()
}else{
@ -189,11 +205,7 @@ class GemActivity : AppCompatActivity() {
binding.addressEdit.setOnEditorActionListener { _, actionId, _ ->
when (actionId) {
EditorInfo.IME_ACTION_GO -> {
val searchbase = prefs.getString(
"search_base",
Buran.DEFAULT_SEARCH_BASE
)
omniTerm.input(binding.addressEdit.text.toString().trim(), searchbase)
omniTerm.input(binding.addressEdit.text.toString().trim(), searchBase)
binding.addressEdit.clearFocus()
return@setOnEditorActionListener true
}
@ -340,6 +352,20 @@ class GemActivity : AppCompatActivity() {
home = ""
}
searchBase = prefs.getString(
"search_base",
Buran.DEFAULT_SEARCH_BASE
) ?: Buran.DEFAULT_SEARCH_BASE
if(
!searchBase.startsWith("gemini://")
or searchBase.contains(" ")
or !searchBase.contains(".")
or !searchBase.endsWith("?")
){
searchBase = Buran.DEFAULT_SEARCH_BASE
}
when {
prefs.contains("background_colour") -> {
when (val backgroundColor = prefs.getString("background_colour", "#XXXXXX")) {
@ -513,17 +539,13 @@ class GemActivity : AppCompatActivity() {
is GemState.ResponseUnknownHost -> {
omniTerm.reset()
runOnUiThread {
val searchbase = prefs.getString(
"search_base",
Buran.DEFAULT_SEARCH_BASE
)
loadingView(false)
AlertDialog.Builder(this, R.style.AppDialogTheme)
.setTitle(getString(R.string.unknown_host))
.setMessage("${getString(R.string.unknown_host)}: ${state.uri}\n\n${getString(R.string.search_instead)}")
.setPositiveButton(getString(R.string.search).toUpperCase()) { _, _ ->
loadingView(true)
omniTerm.search(state.uri.toString(), searchbase)
omniTerm.search(state.uri.toString(), searchBase)
}
.setNegativeButton(getString(R.string.cancel).toUpperCase()) { _, _ -> }
.show()

View File

@ -67,19 +67,18 @@ class SettingsFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChang
homePreference.positiveButtonText = getString(R.string.update)
homePreference.negativeButtonText = getString(R.string.cancel)
homePreference.title = getString(R.string.home_capsule)
homePreference.setOnPreferenceChangeListener { _, newValue ->
val newHomecapsule = newValue.toString().trim()
if(newHomecapsule.isNullOrEmpty()){
homePreference.summary = context.getString(R.string.no_home_capsule_set)
homePreference.summary = if(newHomecapsule.isNullOrEmpty()){
context.getString(R.string.no_home_capsule_set)
}else if(
!newHomecapsule.startsWith("gemini://")
or newHomecapsule.contains(" ")
or !newHomecapsule.contains(".")
){
homePreference.summary = context.getString(R.string.not_valid_address)
context.getString(R.string.not_valid_address)
}else{
homePreference.summary = newHomecapsule
newHomecapsule
}
true
}
@ -98,14 +97,39 @@ class SettingsFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChang
val searchengine = preferenceManager.sharedPreferences.getString(
"search_base",
Buran.DEFAULT_SEARCH_BASE
)
)?.trim()
searchPreference.summary = if(searchengine.isNullOrEmpty()){
Buran.DEFAULT_SEARCH_BASE
}else if(
!searchengine.startsWith("gemini://")
or searchengine.contains(" ")
or !searchengine.contains(".")
){
context.getString(R.string.not_valid_address)
}else if(!searchengine.endsWith("?")){
context.getString(R.string.not_valid_search_string)
}else{
searchengine
}
searchPreference.summary = searchengine
searchPreference.positiveButtonText = getString(R.string.update)
searchPreference.negativeButtonText = getString(R.string.cancel)
searchPreference.title = getString(R.string.search_engine)
searchPreference.setOnPreferenceChangeListener { _, newValue ->
searchPreference.summary = newValue.toString()
val newSearchBase = newValue.toString().trim()
searchPreference.summary = if(newSearchBase.isNullOrEmpty()){
Buran.DEFAULT_SEARCH_BASE
}else if(
!newSearchBase.startsWith("gemini://")
or newSearchBase.contains(" ")
or !newSearchBase.contains(".")
){
context.getString(R.string.not_valid_address)
}else if(!newSearchBase.endsWith("?")){
context.getString(R.string.not_valid_search_string)
}else{
newSearchBase
}
true
}
searchPreference.setOnBindEditTextListener{ editText ->

View File

@ -50,6 +50,7 @@
<string name="file_saved_to_device">Fichier sauvegardé dans l\'appareil</string>
<string name="configure_buran">Configurer Buran</string>
<string name="home_capsule">Capsule d\'accueil</string>
<string name="not_valid_search_string">Ceci n\'est pas une base de recherche valide</string>
<string name="not_valid_address">Ceci n\'est pas une adresse valide</string>
<string name="no_home_capsule_set">Pas de capsule d\'accueil</string>
<string name="search_engine">Moteur de recherche</string>

View File

@ -50,6 +50,7 @@
<string name="file_saved_to_device">File saved to device</string>
<string name="configure_buran">Configure Buran</string>
<string name="home_capsule">Home Capsule</string>
<string name="not_valid_search_string">This is not a valid search base</string>
<string name="not_valid_address">This is not a valid address</string>
<string name="no_home_capsule_set">No home capsule set</string>
<string name="search_engine">Search Engine</string>