diff --git a/app/src/main/java/corewala/buran/ui/GemActivity.kt b/app/src/main/java/corewala/buran/ui/GemActivity.kt
index 7e7903c..2f26b2f 100644
--- a/app/src/main/java/corewala/buran/ui/GemActivity.kt
+++ b/app/src/main/java/corewala/buran/ui/GemActivity.kt
@@ -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()
diff --git a/app/src/main/java/corewala/buran/ui/settings/SettingsFragment.kt b/app/src/main/java/corewala/buran/ui/settings/SettingsFragment.kt
index 0fdc132..8b48bb7 100644
--- a/app/src/main/java/corewala/buran/ui/settings/SettingsFragment.kt
+++ b/app/src/main/java/corewala/buran/ui/settings/SettingsFragment.kt
@@ -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 ->
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index ec2973b..57b597f 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -50,6 +50,7 @@
Fichier sauvegardé dans l\'appareil
Configurer Buran
Capsule d\'accueil
+ Ceci n\'est pas une base de recherche valide
Ceci n\'est pas une adresse valide
Pas de capsule d\'accueil
Moteur de recherche
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 0458cfc..2b6b161 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -50,6 +50,7 @@
File saved to device
Configure Buran
Home Capsule
+ This is not a valid search base
This is not a valid address
No home capsule set
Search Engine