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()
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|