mirror of https://git.sr.ht/~oppen/ariane
link out to web browser for non gemini links
This commit is contained in:
parent
61199d91db
commit
3ee7431485
|
@ -1,9 +1,11 @@
|
|||
package oppen.tva.ui
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import androidx.activity.viewModels
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import oppen.tva.R
|
||||
|
@ -12,6 +14,7 @@ import oppen.tva.io.TvaState
|
|||
import oppen.tva.io.history.CacheInterface
|
||||
import oppen.tva.ui.gemtext.GemtextAdapter
|
||||
|
||||
|
||||
class TvaActivity : AppCompatActivity() {
|
||||
|
||||
private val model by viewModels<TvaViewModel>()
|
||||
|
@ -33,7 +36,7 @@ class TvaActivity : AppCompatActivity() {
|
|||
when(state){
|
||||
is TvaState.AppQuery -> TODO()
|
||||
is TvaState.Requesting -> TODO()
|
||||
is TvaState.NotGeminiRequest -> TODO()
|
||||
is TvaState.NotGeminiRequest -> externalProtocol(state)
|
||||
is TvaState.GeminiResponse -> renderGemtext(state)
|
||||
TvaState.GeminiPrintWriterError -> TODO()
|
||||
}
|
||||
|
@ -50,6 +53,11 @@ class TvaActivity : AppCompatActivity() {
|
|||
}
|
||||
}
|
||||
|
||||
private fun externalProtocol(state: TvaState.NotGeminiRequest) {
|
||||
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(state.uri.toString()))
|
||||
startActivity(browserIntent)
|
||||
}
|
||||
|
||||
private fun renderGemtext(state: TvaState.GeminiResponse) = runOnUiThread {
|
||||
binding.addressEdit.setText(state.uri.toString())
|
||||
adapter.render(state.lines)
|
||||
|
|
|
@ -43,7 +43,7 @@ class TvaViewModel: ViewModel() {
|
|||
when(state){
|
||||
is TvaState.Requesting -> {}
|
||||
is TvaState.AppQuery -> {}
|
||||
is TvaState.NotGeminiRequest -> {}
|
||||
is TvaState.NotGeminiRequest -> onState(state)
|
||||
is TvaState.GeminiResponse -> renderGemini(state)
|
||||
TvaState.GeminiPrintWriterError -> {}
|
||||
}
|
||||
|
|
|
@ -66,10 +66,10 @@ class GemtextAdapter(val onLink: (link: URI) -> Unit): RecyclerView.Adapter<Gemt
|
|||
|
||||
when(holder){
|
||||
is ViewHolder.Text -> holder.itemView.gemtext_text_textview.text = line
|
||||
is ViewHolder.H1 -> holder.itemView.gemtext_text_textview.text = line.drop(2).trim()
|
||||
is ViewHolder.H2 -> holder.itemView.gemtext_text_textview.text = line.drop(3).trim()
|
||||
is ViewHolder.H3 -> holder.itemView.gemtext_text_textview.text = line.drop(4).trim()
|
||||
is ViewHolder.ListItem -> holder.itemView.gemtext_text_textview.text = "• ${line.drop(1)}".trim()
|
||||
is ViewHolder.H1 -> holder.itemView.gemtext_text_textview.text = line.substring(2)
|
||||
is ViewHolder.H2 -> holder.itemView.gemtext_text_textview.text = line.substring(3)
|
||||
is ViewHolder.H3 -> holder.itemView.gemtext_text_textview.text = line.substring(4)
|
||||
is ViewHolder.ListItem -> holder.itemView.gemtext_text_textview.text = "• ${line.substring(1)}".trim()
|
||||
is ViewHolder.Link -> {
|
||||
println("Tva: link: $line")
|
||||
val linkParts = line.substring(2).trim().split("\\s+".toRegex(), 2)
|
||||
|
|
Loading…
Reference in New Issue