mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-23 11:22:12 +00:00
Improve: Let coil handle error
Update: Move List Adapter to seperate package
This commit is contained in:
parent
65541e7f4f
commit
c338cb9bae
@ -1177,19 +1177,14 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
|
||||
val updateStatus = Payload.STATUS in payloads
|
||||
val updateAll = !updateStatus
|
||||
if (updateAll) {
|
||||
if (item.product.icon.isNotEmpty() || item.product.metadataIcon.isNotEmpty()) {
|
||||
holder.icon.load(
|
||||
CoilDownloader.createIconUri(
|
||||
holder.icon, item.product.packageName,
|
||||
item.product.icon, item.product.metadataIcon, item.repository
|
||||
)
|
||||
) {
|
||||
placeholder(holder.progressIcon)
|
||||
error(holder.defaultIcon)
|
||||
}
|
||||
} else {
|
||||
holder.icon.clear()
|
||||
holder.icon.setImageDrawable(holder.defaultIcon)
|
||||
holder.icon.load(
|
||||
CoilDownloader.createIconUri(
|
||||
holder.icon, item.product.packageName,
|
||||
item.product.icon, item.product.metadataIcon, item.repository
|
||||
)
|
||||
) {
|
||||
placeholder(holder.progressIcon)
|
||||
error(holder.defaultIcon)
|
||||
}
|
||||
holder.name.text = item.product.name
|
||||
holder.packageName.apply {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.looker.droidify.screen
|
||||
package com.looker.droidify.ui.appsList
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.drawable.Drawable
|
||||
@ -25,8 +25,8 @@ import com.looker.droidify.utility.extension.resources.*
|
||||
import com.looker.droidify.utility.extension.text.nullIfEmpty
|
||||
import com.looker.droidify.widget.CursorRecyclerAdapter
|
||||
|
||||
class ProductsAdapter(private val onClick: (ProductItem) -> Unit) :
|
||||
CursorRecyclerAdapter<ProductsAdapter.ViewType, RecyclerView.ViewHolder>() {
|
||||
class AppListAdapter(private val onClick: (ProductItem) -> Unit) :
|
||||
CursorRecyclerAdapter<AppListAdapter.ViewType, RecyclerView.ViewHolder>() {
|
||||
private var lastPosition = 0
|
||||
|
||||
enum class ViewType { PRODUCT, LOADING, EMPTY }
|
||||
@ -147,20 +147,17 @@ class ProductsAdapter(private val onClick: (ProductItem) -> Unit) :
|
||||
holder.summary.visibility =
|
||||
if (holder.summary.text.isNotEmpty()) View.VISIBLE else View.GONE
|
||||
val repository: Repository? = repositories[productItem.repositoryId]
|
||||
if ((productItem.icon.isNotEmpty() || productItem.metadataIcon.isNotEmpty()) && repository != null) {
|
||||
holder.icon.load(
|
||||
holder.icon.load(
|
||||
repository?.let {
|
||||
CoilDownloader.createIconUri(
|
||||
holder.icon, productItem.packageName,
|
||||
productItem.icon, productItem.metadataIcon, repository
|
||||
productItem.icon, productItem.metadataIcon, it
|
||||
)
|
||||
) {
|
||||
transformations(RoundedCornersTransformation(4.toPx))
|
||||
placeholder(holder.progressIcon)
|
||||
error(holder.defaultIcon)
|
||||
}
|
||||
} else {
|
||||
holder.icon.clear()
|
||||
holder.icon.setImageDrawable(holder.defaultIcon)
|
||||
) {
|
||||
transformations(RoundedCornersTransformation(4.toPx))
|
||||
placeholder(holder.progressIcon)
|
||||
error(holder.defaultIcon)
|
||||
}
|
||||
holder.status.apply {
|
||||
if (productItem.canUpdate) {
|
@ -14,7 +14,6 @@ import com.looker.droidify.database.CursorOwner
|
||||
import com.looker.droidify.database.Database
|
||||
import com.looker.droidify.entity.ProductItem
|
||||
import com.looker.droidify.screen.BaseFragment
|
||||
import com.looker.droidify.screen.ProductsAdapter
|
||||
import com.looker.droidify.utility.RxUtils
|
||||
import com.looker.droidify.widget.RecyclerFastScroller
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
@ -61,8 +60,8 @@ class AppListFragment() : BaseFragment(), CursorOwner.Callback {
|
||||
isMotionEventSplittingEnabled = false
|
||||
isVerticalScrollBarEnabled = false
|
||||
setHasFixedSize(true)
|
||||
recycledViewPool.setMaxRecycledViews(ProductsAdapter.ViewType.PRODUCT.ordinal, 30)
|
||||
val adapter = ProductsAdapter { screenActivity.navigateProduct(it.packageName) }
|
||||
recycledViewPool.setMaxRecycledViews(AppListAdapter.ViewType.PRODUCT.ordinal, 30)
|
||||
val adapter = AppListAdapter { screenActivity.navigateProduct(it.packageName) }
|
||||
this.adapter = adapter
|
||||
RecyclerFastScroller(this)
|
||||
recyclerView = this
|
||||
@ -79,7 +78,7 @@ class AppListFragment() : BaseFragment(), CursorOwner.Callback {
|
||||
.flatMapSingle { RxUtils.querySingle { Database.RepositoryAdapter.getAll(it) } }
|
||||
.map { list -> list.asSequence().map { Pair(it.id, it) }.toMap() }
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe { (recyclerView?.adapter as? ProductsAdapter)?.repositories = it }
|
||||
.subscribe { (recyclerView?.adapter as? AppListAdapter)?.repositories = it }
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
@ -93,7 +92,7 @@ class AppListFragment() : BaseFragment(), CursorOwner.Callback {
|
||||
}
|
||||
|
||||
override fun onCursorData(request: CursorOwner.Request, cursor: Cursor?) {
|
||||
(recyclerView?.adapter as? ProductsAdapter)?.apply {
|
||||
(recyclerView?.adapter as? AppListAdapter)?.apply {
|
||||
this.cursor = cursor
|
||||
viewLifecycleOwner.lifecycleScope.launchWhenCreated {
|
||||
emptyText = when {
|
||||
|
Loading…
x
Reference in New Issue
Block a user