2020-10-09 13:53:58 +00:00
|
|
|
package oppen.ariane.ui
|
2020-08-15 14:52:27 +00:00
|
|
|
|
2020-11-12 23:04:15 +00:00
|
|
|
import android.net.Uri
|
2020-08-15 14:52:27 +00:00
|
|
|
import androidx.lifecycle.ViewModel
|
2020-10-09 13:53:58 +00:00
|
|
|
import oppen.ariane.io.gemini.Datasource
|
|
|
|
import oppen.ariane.io.GemState
|
2020-11-16 14:02:56 +00:00
|
|
|
import oppen.ariane.io.database.ArianeDatabase
|
|
|
|
import oppen.ariane.io.database.bookmarks.BookmarksDatasource
|
2020-08-15 14:52:27 +00:00
|
|
|
import java.net.URI
|
|
|
|
|
2020-09-10 16:33:10 +00:00
|
|
|
class GemViewModel: ViewModel() {
|
2020-08-15 14:52:27 +00:00
|
|
|
|
2020-08-21 15:12:00 +00:00
|
|
|
private lateinit var gemini: Datasource
|
2020-11-16 14:02:56 +00:00
|
|
|
private lateinit var db: ArianeDatabase
|
2020-09-09 18:29:23 +00:00
|
|
|
private var onState: (state: GemState) -> Unit = {}
|
2020-09-01 08:43:52 +00:00
|
|
|
|
2020-11-16 14:02:56 +00:00
|
|
|
fun initialise(home: String, gemini: Datasource, db: ArianeDatabase, onState: (state: GemState) -> Unit){
|
2020-08-21 15:12:00 +00:00
|
|
|
this.gemini = gemini
|
2020-11-16 14:02:56 +00:00
|
|
|
this.db = db
|
2020-08-15 14:52:27 +00:00
|
|
|
this.onState = onState
|
|
|
|
|
2020-11-09 22:02:23 +00:00
|
|
|
request(home)
|
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 ->
|
2020-09-01 08:43:52 +00:00
|
|
|
onState(state)
|
2020-08-15 14:52:27 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-11-13 15:38:57 +00:00
|
|
|
fun requestBinaryDownload(uri: URI) {
|
|
|
|
gemini.request(uri, true){ state ->
|
|
|
|
onState(state)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//todo - same action as above... refactor
|
2020-11-12 23:04:15 +00:00
|
|
|
fun requestInlineImage(uri: URI, onImageReady: (cacheUri: Uri?) -> Unit){
|
|
|
|
gemini.request(uri){ state ->
|
|
|
|
when (state) {
|
|
|
|
is GemState.ResponseImage -> onImageReady(state.cacheUri)
|
|
|
|
else -> onState(state)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-11-13 18:48:32 +00:00
|
|
|
fun canGoBack(): Boolean = gemini.canGoBack()
|
2020-11-16 14:02:56 +00:00
|
|
|
fun goBack(onGoBack: (state: GemState) -> Unit) = gemini.goBack(onGoBack)
|
2020-08-15 14:52:27 +00:00
|
|
|
}
|