Added loading item to modules

This commit is contained in:
Viktor De Pasquale
2019-11-11 16:22:33 +01:00
parent bc5cbe9fba
commit 6c84574366
3 changed files with 59 additions and 1 deletions

View File

@@ -146,6 +146,19 @@ class ModuleItem(val item: Module) : ObservableItem<ModuleItem>(), Observable {
}
object LoadingItem : ComparableRvItem<LoadingItem>() {
override val layoutRes = R.layout.item_loading
override fun onBindingBound(binding: ViewDataBinding) {
super.onBindingBound(binding)
val params = binding.root.layoutParams as? StaggeredGridLayoutManager.LayoutParams ?: return
params.isFullSpan = true
}
override fun contentSameAs(other: LoadingItem) = this == other
override fun itemSameAs(other: LoadingItem) = this === other
}
abstract class ObservableItem<T> : ComparableRvItem<T>(), Observable {
private val list = PropertyChangeRegistry()

View File

@@ -12,6 +12,7 @@ import com.topjohnwu.magisk.databinding.ComparableRvItem
import com.topjohnwu.magisk.extensions.subscribeK
import com.topjohnwu.magisk.model.entity.module.Module
import com.topjohnwu.magisk.model.entity.module.Repo
import com.topjohnwu.magisk.model.entity.recycler.LoadingItem
import com.topjohnwu.magisk.model.entity.recycler.ModuleItem
import com.topjohnwu.magisk.model.entity.recycler.RepoItem
import com.topjohnwu.magisk.model.entity.recycler.SectionTitle
@@ -25,6 +26,7 @@ import io.reactivex.Single
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import me.tatarka.bindingcollectionadapter2.BindingRecyclerViewAdapter
import timber.log.Timber
class ModuleViewModel(
private val repoName: RepoByNameDao,
@@ -96,12 +98,17 @@ class ModuleViewModel(
remoteJob = loadRepos(offset = size)
.map { it.map { RepoItem(it) } }
.applyViewModel(this)
.subscribeK {
.subscribeK(onError = {
Timber.e(it)
items.remove(LoadingItem)
}) {
items.remove(LoadingItem)
if (!items.contains(sectionRemote)) {
items.add(sectionRemote)
}
items.addAll(it)
}
items.add(LoadingItem)
}
private fun loadRepos(