package oppen.tva.ui import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.inputmethod.EditorInfo import androidx.activity.viewModels import androidx.databinding.DataBindingUtil import androidx.recyclerview.widget.LinearLayoutManager import oppen.tva.R import oppen.tva.databinding.ActivityTvaBinding 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() private lateinit var binding: ActivityTvaBinding private val adapter = GemtextAdapter{ uri -> model.request(uri) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = DataBindingUtil.setContentView(this, R.layout.activity_tva) binding.viewmodel = model binding.lifecycleOwner = this binding.gemtextRecycler.layoutManager = LinearLayoutManager(this) binding.gemtextRecycler.adapter = adapter model.initialise(CacheInterface.default(this)){ state -> when(state){ is TvaState.AppQuery -> TODO() is TvaState.Requesting -> TODO() is TvaState.NotGeminiRequest -> TODO() is TvaState.GeminiResponse -> renderGemtext(state) TvaState.GeminiPrintWriterError -> TODO() } } binding.addressEdit.setOnEditorActionListener { _, actionId, _ -> when (actionId) { EditorInfo.IME_ACTION_GO -> { model.request(binding.addressEdit.text.toString()) return@setOnEditorActionListener true } else -> return@setOnEditorActionListener false } } } private fun renderGemtext(state: TvaState.GeminiResponse) = runOnUiThread { binding.addressEdit.setText(state.uri.toString()) adapter.render(state.lines) } }