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

View File

@ -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)

View File

@ -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))