package oppen.tva.ui import androidx.lifecycle.ViewModel import oppen.tva.Tva import oppen.tva.io.gemini.Datasource import oppen.tva.io.TvaState import java.net.URI class TvaViewModel: ViewModel() { private lateinit var gemini: Datasource private var onState: (state: TvaState) -> Unit = {} private var activeTab = 0 val history = mutableListOf() fun initialise(gemini: Datasource, onState: (state: TvaState) -> Unit){ this.gemini = gemini this.onState = onState request(URI.create(Tva.DEFAULT_HOME_CAPSULE)) onState(TvaState.TabChange(1)) } fun request(address: String) { request(URI.create(address)) } fun request(uri: URI){ gemini.request(uri){ state -> onState(state) } } fun canGoBack(): Boolean = history.size > 1 @ExperimentalStdlibApi fun goBack(){ when { history.size >= 2 -> { val previous = history[history.size - 2] history.removeLast() request(previous) } } } }