External non-http URLs are handled correctly

This commit is contained in:
Corewala 2022-05-10 12:14:17 -04:00
parent bfd2572cec
commit 75f42173c9
2 changed files with 21 additions and 8 deletions

View File

@ -50,9 +50,9 @@ class OmniTerm(private val listener: Listener) {
*/
private fun navigation(link: String, invokeListener: Boolean) {
when {
link.startsWith("http") -> listener.openBrowser(link)
link.startsWith(GEM_SCHEME) -> uri.set(link)
link.startsWith("//") -> uri.set("gemini:$link")
link.contains(":") -> listener.openExternal(link)
else -> uri.resolve(link)
}
@ -89,6 +89,6 @@ class OmniTerm(private val listener: Listener) {
interface Listener{
fun request(address: String)
fun openBrowser(address: String)
fun openExternal(address: String)
}
}

View File

@ -75,7 +75,7 @@ class GemActivity : AppCompatActivity() {
model.request(address, false)
}
override fun openBrowser(address: String) = openWebLink(address)
override fun openExternal(address: String) = openExternalLink(address)
})
private var internetStatus: Boolean = false
@ -85,13 +85,15 @@ class GemActivity : AppCompatActivity() {
lateinit var adapter: AbstractGemtextAdapter
private val onLink: (link: URI, longTap: Boolean, adapterPosition: Int) -> Unit = { uri, longTap, position: Int ->
println(uri.toString() + "COPE")
if(longTap){
var globalURI: String
if(!uri.toString().contains("//")){
if(!uri.toString().contains("//") and !uri.toString().contains(":")){
globalURI = (omniTerm.getCurrent() + uri.toString()).replace("//", "/").replace("gemini:/", "gemini://")
} else {
globalURI = uri.toString()
}
println(globalURI + "COPE")
Intent().apply {
action = Intent.ACTION_SEND
putExtra(Intent.EXTRA_TEXT, globalURI)
@ -533,7 +535,7 @@ class GemActivity : AppCompatActivity() {
val uri = state.uri.toString()
when {
(uri.startsWith("http://") || uri.startsWith("https://")) -> openWebLink(uri)
(uri.startsWith("http://") || uri.startsWith("https://")) -> openExternalLink(uri)
else -> {
val viewIntent = Intent(Intent.ACTION_VIEW)
viewIntent.data = Uri.parse(state.uri.toString())
@ -552,17 +554,28 @@ class GemActivity : AppCompatActivity() {
}
}
private fun openWebLink(address: String){
private fun openExternalLink(address: String){
if(PreferenceManager.getDefaultSharedPreferences(this).getBoolean(
Buran.PREF_KEY_USE_CUSTOM_TAB,
true
)) {
)or !address.startsWith("http")) {
val builder = CustomTabsIntent.Builder()
val intent = builder.build()
intent.launchUrl(this, Uri.parse(address))
try {
intent.launchUrl(this, Uri.parse(address))
}catch (e: ActivityNotFoundException){
showAlert(
String.format(
getString(R.string.no_app_installed_that_can_open),
address
)
)
}
}else{
val viewIntent = Intent(Intent.ACTION_VIEW)
viewIntent.data = Uri.parse(address)
startActivity(viewIntent)
}
}