diff --git a/app/src/main/java/corewala/buran/OmniTerm.kt b/app/src/main/java/corewala/buran/OmniTerm.kt index 58a5c37..7728fa3 100644 --- a/app/src/main/java/corewala/buran/OmniTerm.kt +++ b/app/src/main/java/corewala/buran/OmniTerm.kt @@ -35,9 +35,6 @@ class OmniTerm(private val listener: Listener) { listener.request("$searchbase$encoded") } - fun resolve(link: String): String{ - return uri.resolve(link) - } fun navigation(link: String) { navigation(link, true) @@ -54,7 +51,9 @@ class OmniTerm(private val listener: Listener) { private fun navigation(link: String, invokeListener: Boolean) { when { link.startsWith(GEM_SCHEME) -> uri.set(link) - else -> listener.openExternal(link) + link.startsWith("//") -> uri.set("gemini:$link") + link.contains(":") -> listener.openExternal(link) + else -> uri.resolve(link) } val address = uri.toString().replace("//", "/").replace("gemini:/", "gemini://") diff --git a/app/src/main/java/corewala/buran/ui/GemActivity.kt b/app/src/main/java/corewala/buran/ui/GemActivity.kt index 4f5b6d3..0f08d15 100644 --- a/app/src/main/java/corewala/buran/ui/GemActivity.kt +++ b/app/src/main/java/corewala/buran/ui/GemActivity.kt @@ -85,9 +85,12 @@ class GemActivity : AppCompatActivity() { lateinit var adapter: AbstractGemtextAdapter private val onLink: (link: URI, longTap: Boolean, adapterPosition: Int) -> Unit = { uri, longTap, position: Int -> - val globalURI = omniTerm.resolve(uri.toString()) - if(longTap){ + val globalURI = if(!uri.toString().contains("//") and !uri.toString().contains(":")){ + (omniTerm.getCurrent() + uri.toString()).replace("//", "/").replace("gemini:/", "gemini://") + } else { + uri.toString() + } Intent().apply { action = Intent.ACTION_SEND putExtra(Intent.EXTRA_TEXT, globalURI) @@ -101,7 +104,7 @@ class GemActivity : AppCompatActivity() { binding.addressEdit.hint = getString(R.string.main_input_hint) inSearch = false } - omniTerm.navigation(globalURI) + omniTerm.navigation(uri.toString()) }else{ Snackbar.make(binding.root, getString(R.string.no_internet), Snackbar.LENGTH_LONG).show() } @@ -629,7 +632,7 @@ class GemActivity : AppCompatActivity() { if(resultCode == RESULT_OK && (requestCode == CREATE_IMAGE_FILE_REQ || requestCode == CREATE_BINARY_FILE_REQ)){ //todo - tidy this mess up... refactor - none of this should be here if(imageState == null && binaryState == null) return - data?.data?.let{ uri -> + data?.data?.let{ uri -> val cachedFile = when { imageState != null -> File(imageState!!.cacheUri.path ?: "") binaryState != null -> File(binaryState!!.cacheUri.path ?: "")