Added loading item to modules
This commit is contained in:
parent
bc5cbe9fba
commit
6c84574366
@ -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 {
|
abstract class ObservableItem<T> : ComparableRvItem<T>(), Observable {
|
||||||
|
|
||||||
private val list = PropertyChangeRegistry()
|
private val list = PropertyChangeRegistry()
|
||||||
|
@ -12,6 +12,7 @@ import com.topjohnwu.magisk.databinding.ComparableRvItem
|
|||||||
import com.topjohnwu.magisk.extensions.subscribeK
|
import com.topjohnwu.magisk.extensions.subscribeK
|
||||||
import com.topjohnwu.magisk.model.entity.module.Module
|
import com.topjohnwu.magisk.model.entity.module.Module
|
||||||
import com.topjohnwu.magisk.model.entity.module.Repo
|
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.ModuleItem
|
||||||
import com.topjohnwu.magisk.model.entity.recycler.RepoItem
|
import com.topjohnwu.magisk.model.entity.recycler.RepoItem
|
||||||
import com.topjohnwu.magisk.model.entity.recycler.SectionTitle
|
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.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.disposables.Disposable
|
import io.reactivex.disposables.Disposable
|
||||||
import me.tatarka.bindingcollectionadapter2.BindingRecyclerViewAdapter
|
import me.tatarka.bindingcollectionadapter2.BindingRecyclerViewAdapter
|
||||||
|
import timber.log.Timber
|
||||||
|
|
||||||
class ModuleViewModel(
|
class ModuleViewModel(
|
||||||
private val repoName: RepoByNameDao,
|
private val repoName: RepoByNameDao,
|
||||||
@ -96,12 +98,17 @@ class ModuleViewModel(
|
|||||||
remoteJob = loadRepos(offset = size)
|
remoteJob = loadRepos(offset = size)
|
||||||
.map { it.map { RepoItem(it) } }
|
.map { it.map { RepoItem(it) } }
|
||||||
.applyViewModel(this)
|
.applyViewModel(this)
|
||||||
.subscribeK {
|
.subscribeK(onError = {
|
||||||
|
Timber.e(it)
|
||||||
|
items.remove(LoadingItem)
|
||||||
|
}) {
|
||||||
|
items.remove(LoadingItem)
|
||||||
if (!items.contains(sectionRemote)) {
|
if (!items.contains(sectionRemote)) {
|
||||||
items.add(sectionRemote)
|
items.add(sectionRemote)
|
||||||
}
|
}
|
||||||
items.addAll(it)
|
items.addAll(it)
|
||||||
}
|
}
|
||||||
|
items.add(LoadingItem)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun loadRepos(
|
private fun loadRepos(
|
||||||
|
38
app/src/main/res/layout/item_loading.xml
Normal file
38
app/src/main/res/layout/item_loading.xml
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layout xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<data>
|
||||||
|
|
||||||
|
<variable
|
||||||
|
name="item"
|
||||||
|
type="com.topjohnwu.magisk.model.entity.recycler.LoadingItem" />
|
||||||
|
|
||||||
|
<variable
|
||||||
|
name="viewModel"
|
||||||
|
type="com.topjohnwu.magisk.base.viewmodel.LoadingViewModel" />
|
||||||
|
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:minHeight="?listPreferredItemHeightSmall"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="@dimen/l1">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="@string/safetynet_attest_loading"
|
||||||
|
android:textAppearance="?appearanceTextTitleNormal" />
|
||||||
|
|
||||||
|
<ProgressBar
|
||||||
|
style="?styleProgressIndeterminate"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_marginTop="@dimen/l1" />
|
||||||
|
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</layout>
|
Loading…
Reference in New Issue
Block a user