Tusky-App-Android/app/src/main/java/com/keylesspalace/tusky/components/scheduled/ScheduledTootViewModel.kt

61 lines
1.8 KiB
Kotlin
Raw Normal View History

2019-12-30 20:40:27 +01:00
package com.keylesspalace.tusky.components.scheduled
import android.util.Log
import androidx.lifecycle.ViewModel
import androidx.paging.Config
import androidx.paging.toLiveData
2019-12-30 20:48:01 +01:00
import com.keylesspalace.tusky.appstore.EventHub
import com.keylesspalace.tusky.appstore.StatusScheduledEvent
2019-12-30 20:40:27 +01:00
import com.keylesspalace.tusky.entity.ScheduledStatus
import com.keylesspalace.tusky.network.MastodonApi
2019-12-30 20:48:01 +01:00
import io.reactivex.android.schedulers.AndroidSchedulers
2019-12-30 20:40:27 +01:00
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.rxkotlin.addTo
import javax.inject.Inject
class ScheduledTootViewModel @Inject constructor(
2019-12-30 20:48:01 +01:00
val mastodonApi: MastodonApi,
val eventHub: EventHub
2019-12-30 20:40:27 +01:00
): ViewModel() {
private val disposables = CompositeDisposable()
private val dataSourceFactory = ScheduledTootDataSourceFactory(mastodonApi, disposables)
val data = dataSourceFactory.toLiveData(
config = Config(pageSize = 20, initialLoadSizeHint = 20, enablePlaceholders = false)
)
val networkState = dataSourceFactory.networkState
2019-12-30 20:48:01 +01:00
init {
eventHub.events
.observeOn(AndroidSchedulers.mainThread())
.subscribe { event ->
if (event is StatusScheduledEvent) {
reload()
}
}
.addTo(disposables)
}
2019-12-30 20:40:27 +01:00
fun reload() {
dataSourceFactory.reload()
}
fun deleteScheduledStatus(status: ScheduledStatus) {
mastodonApi.deleteScheduledStatus(status.id)
.subscribe({
dataSourceFactory.remove(status)
},{ throwable ->
Log.w("ScheduledTootViewModel", "Error deleting scheduled status", throwable)
})
.addTo(disposables)
}
override fun onCleared() {
disposables.clear()
}
}