diff --git a/app/src/main/java/corewala/buran/OmniTerm.kt b/app/src/main/java/corewala/buran/OmniTerm.kt index 5531da9..572ab32 100644 --- a/app/src/main/java/corewala/buran/OmniTerm.kt +++ b/app/src/main/java/corewala/buran/OmniTerm.kt @@ -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) } } diff --git a/app/src/main/java/corewala/buran/OppenURI.kt b/app/src/main/java/corewala/buran/OppenURI.kt index d4bbfff..db35c39 100644 --- a/app/src/main/java/corewala/buran/OppenURI.kt +++ b/app/src/main/java/corewala/buran/OppenURI.kt @@ -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{ diff --git a/app/src/main/java/corewala/buran/ui/GemActivity.kt b/app/src/main/java/corewala/buran/ui/GemActivity.kt index 5a6c1a5..fa14dda 100644 --- a/app/src/main/java/corewala/buran/ui/GemActivity.kt +++ b/app/src/main/java/corewala/buran/ui/GemActivity.kt @@ -747,6 +747,7 @@ class GemActivity : AppCompatActivity() { intent.putExtra(Intent.EXTRA_TITLE, File(state.uri.path).name) startActivityForResult(intent, CREATE_IMAGE_FILE_REQ) } + omniTerm.set(omniTerm.goBack()) } private fun renderBinary(state: GemState.ResponseBinary) = runOnUiThread{