This commit is contained in:
Horis
2024-01-18 14:48:04 +08:00
parent 3a12c08e83
commit 6979054a57
2 changed files with 38 additions and 1 deletions
@@ -1,11 +1,17 @@
package io.legado.app.ui.main.rss
import android.content.Context
import android.graphics.drawable.Drawable
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.widget.PopupMenu
import androidx.lifecycle.Lifecycle
import com.bumptech.glide.load.DataSource
import com.bumptech.glide.load.engine.GlideException
import com.bumptech.glide.load.resource.gif.GifDrawable
import com.bumptech.glide.request.RequestListener
import com.bumptech.glide.request.RequestOptions
import com.bumptech.glide.request.target.Target
import io.legado.app.R
import io.legado.app.base.adapter.ItemViewHolder
import io.legado.app.base.adapter.RecyclerAdapter
@@ -33,6 +39,35 @@ class RssAdapter(context: Context, val callBack: CallBack, val lifecycle: Lifecy
val options = RequestOptions()
.set(OkHttpModelLoader.sourceOriginOption, item.sourceUrl)
ImageLoader.load(lifecycle, item.sourceIcon)
.listener(object : RequestListener<Drawable> {
override fun onLoadFailed(
e: GlideException?,
model: Any?,
target: Target<Drawable>,
isFirstResource: Boolean
): Boolean {
return false
}
override fun onResourceReady(
resource: Drawable,
model: Any,
target: Target<Drawable>?,
dataSource: DataSource,
isFirstResource: Boolean
): Boolean {
if (resource is GifDrawable
&& !lifecycle.currentState.isAtLeast(Lifecycle.State.RESUMED)
) {
ivIcon.post {
resource.stop()
}
}
return false
}
})
.apply(options)
.centerCrop()
.placeholder(R.drawable.image_rss)
@@ -143,7 +143,9 @@ class RssFragment() : VMBaseFragment<RssViewModel>(R.layout.fragment_rss),
private fun initGroupData() {
groupsFlowJob?.cancel()
groupsFlowJob = lifecycleScope.launch {
appDb.rssSourceDao.flowGroupEnabled().conflate().collect {
appDb.rssSourceDao.flowGroupEnabled().catch {
AppLog.put("订阅界面获取分组数据失败\n${it.localizedMessage}", it)
}.flowOn(IO).conflate().collect {
groups.clear()
it.map { group ->
groups.addAll(group.splitNotBlank(AppPattern.splitGroupRegex))