mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-12-31 05:37:34 +00:00
Added loading item to modules
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user