ariane/app/src/main/java/oppen/tva/ui/TvaViewModel.kt

49 lines
1.1 KiB
Kotlin
Raw Normal View History

2020-08-15 14:52:27 +00:00
package oppen.tva.ui
import androidx.lifecycle.ViewModel
2020-08-20 13:55:59 +00:00
import oppen.tva.Tva
2020-08-21 15:12:00 +00:00
import oppen.tva.io.gemini.Datasource
2020-08-15 14:52:27 +00:00
import oppen.tva.io.TvaState
import java.net.URI
class TvaViewModel: ViewModel() {
2020-08-21 15:12:00 +00:00
private lateinit var gemini: Datasource
2020-08-15 14:52:27 +00:00
private var onState: (state: TvaState) -> Unit = {}
private var activeTab = 0
val history = mutableListOf<URI>()
2020-08-15 14:52:27 +00:00
fun initialise(gemini: Datasource, onState: (state: TvaState) -> Unit){
2020-08-21 15:12:00 +00:00
this.gemini = gemini
2020-08-15 14:52:27 +00:00
this.onState = onState
request(URI.create(Tva.DEFAULT_HOME_CAPSULE))
onState(TvaState.TabChange(1))
2020-08-17 20:25:39 +00:00
}
2020-08-15 14:52:27 +00:00
fun request(address: String) {
request(URI.create(address))
}
fun request(uri: URI){
gemini.request(uri){ state ->
onState(state)
2020-08-15 14:52:27 +00:00
}
}
fun canGoBack(): Boolean = history.size > 1
2020-08-15 20:20:15 +00:00
@ExperimentalStdlibApi
fun goBack(){
when {
history.size >= 2 -> {
val previous = history[history.size - 2]
history.removeLast()
request(previous)
2020-08-17 20:25:39 +00:00
}
}
}
2020-08-15 14:52:27 +00:00
}