Compare commits

...

5 Commits

6 changed files with 20 additions and 16 deletions

View File

@ -73,7 +73,7 @@ class OmniTerm(private val listener: Listener) {
return when {
reference.contains(":") -> reference
reference.startsWith("//") -> "gemini:$reference"
else -> uri.resolve(reference)
else -> uri.resolve(reference, false)
}
}

View File

@ -35,25 +35,26 @@ class OppenURI constructor(private var ouri: String) {
}
}
fun resolve(reference: String): String{
fun resolve(reference: String, persistent: Boolean): String{
if(ouri == "$GEMSCHEME$host") ouri = "$ouri/"
var resolvedUri = ""
when {
reference.startsWith(GEMSCHEME) -> set(reference)
reference.startsWith(SOLIDUS) -> ouri = "$scheme://$host$reference"
reference.startsWith(SOLIDUS) -> resolvedUri = "$scheme://$host$reference"
reference.startsWith(TRAVERSE) -> {
if(!ouri.endsWith(DIREND)) ouri = ouri.removeFile()
if(!ouri.endsWith(DIREND)) resolvedUri = ouri.removeFile()
val traversalCount = reference.split(TRAVERSE).size - 1
ouri = traverse(traversalCount) + reference.replace(TRAVERSE, "")
resolvedUri = traverse(traversalCount) + reference.replace(TRAVERSE, "")
}
reference.startsWith(QUERY) -> {
ouri = if(reference.contains(QUERY)){
resolvedUri = if(reference.contains(QUERY)){
ouri.substringBefore(QUERY) + reference
}else{
ouri + reference
}
}
else -> {
ouri = when {
resolvedUri = when {
ouri.endsWith(DIREND) -> {
"${ouri}$reference"
}
@ -61,7 +62,14 @@ class OppenURI constructor(private var ouri: String) {
}
}
}
return ouri
if(persistent){
ouri = resolvedUri
}
return resolvedUri
}
fun resolve(reference: String): String{
return resolve(reference, true)
}
private fun traverse(count: Int): String{

View File

@ -89,7 +89,7 @@ class GemActivity : AppCompatActivity() {
private var goingBack: Boolean = false
lateinit var adapter: AbstractGemtextAdapter
private lateinit var adapter: AbstractGemtextAdapter
private lateinit var home: String
@ -459,7 +459,7 @@ class GemActivity : AppCompatActivity() {
}
is GemState.Redirect -> {
omniTerm.set(proxiedAddress ?: state.uri.toString())
omniTerm.set(state.uri.toString())
gemRequest(omniTerm.getGlobalUri(state.header.meta))
}

View File

@ -365,7 +365,7 @@ class SettingsFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChang
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
addCategory(Intent.CATEGORY_OPENABLE)
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
type = "*/*"
type = "application/x-pkcs12"
}
startActivityForResult(intent, PREFS_SET_CLIENT_CERT_REQ)
true
@ -373,7 +373,6 @@ class SettingsFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChang
certificateCategory.addPreference(clientCertPref)
val clientCertPassword = EditTextPreference(context)
clientCertPassword.key = Buran.PREF_KEY_CLIENT_CERT_PASSWORD
clientCertPassword.title = getString(R.string.client_certificate_password)
@ -399,7 +398,6 @@ class SettingsFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChang
useBiometrics.isVisible = false
certificateCategory.addPreference(useBiometrics)
val passwordCiphertext = EditTextPreference(context)
passwordCiphertext.key = "password_ciphertext"
passwordCiphertext.isVisible = false
@ -445,6 +443,7 @@ class SettingsFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChang
clientCertPassword.summary = getDots(clientCertPassword.text)
}
clientCertPassword.isVisible = !(newValue as Boolean)
clientCertPref.isEnabled = !(newValue as Boolean)
}
}
@ -497,7 +496,6 @@ class SettingsFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChang
persistPermissions(uri)
findFilename(uri)
}
}
super.onActivityResult(requestCode, resultCode, data)
}

View File

@ -4,7 +4,6 @@
<string name="main_input_hint">Entrez l\'adresse gemini://</string>
<string name="main_input_search_hint">Entrez un terme de recherche</string>
<string name="copy_address">Partager l\'adresse</string>
<string name="load_image">Afficher en ligne</string>
<string name="about">À propos</string>
<string name="address_copied_to_clipboard">Adresse copiée dans le presse-papiers</string>
<string name="gemini_address">Adresse Gemini</string>

View File

@ -4,7 +4,6 @@
<string name="main_input_hint">Enter gemini:// address</string>
<string name="main_input_search_hint">Enter search term</string>
<string name="copy_address">Share address</string>
<string name="load_image">Display inline</string>
<string name="about">About</string>
<string name="address_copied_to_clipboard">Address copied to clipboard</string>
<string name="gemini_address">Gemini address</string>