--- a/app/src/main/java/com/geekorum/ttrss/data/ManageFeedsDao.kt Thu Jan 05 12:18:25 2023 -0400
+++ b/app/src/main/java/com/geekorum/ttrss/data/ManageFeedsDao.kt Thu Jan 05 12:18:59 2023 -0400
@@ -23,12 +23,14 @@
import androidx.paging.PagingSource
import androidx.room.Dao
import androidx.room.Query
+import androidx.room.Transaction
@Dao
interface ManageFeedsDao {
+ @get:Transaction
@get:Query("SELECT * FROM feeds WHERE is_subscribed == 1 ORDER BY title")
- val allSubscribedFeeds: PagingSource<Int, Feed>
+ val allSubscribedFeeds: PagingSource<Int, FeedWithFavIcon>
@Query("UPDATE feeds SET is_subscribed=:isSubscribed WHERE _id=:feedId")
suspend fun updateIsSubscribedFeed(feedId: Long, isSubscribed: Boolean)
--- a/manage_feeds/src/main/java/com/geekorum/ttrss/manage_feeds/ManageFeedViewModel.kt Thu Jan 05 12:18:25 2023 -0400
+++ b/manage_feeds/src/main/java/com/geekorum/ttrss/manage_feeds/ManageFeedViewModel.kt Thu Jan 05 12:18:59 2023 -0400
@@ -35,6 +35,7 @@
import androidx.work.WorkManager
import com.geekorum.geekdroid.app.lifecycle.Event
import com.geekorum.ttrss.data.Feed
+import com.geekorum.ttrss.data.FeedWithFavIcon
import com.geekorum.ttrss.data.ManageFeedsDao
import com.geekorum.ttrss.manage_feeds.workers.UnsubscribeWorker
import dagger.hilt.android.lifecycle.HiltViewModel
@@ -55,7 +56,7 @@
private val _feedClickedEvent = MutableLiveData<Event<Feed>>()
val feedClickedEvent: LiveData<Event<Feed>> = _feedClickedEvent
- val feeds: Flow<PagingData<Feed>> by lazy {
+ val feeds: Flow<PagingData<FeedWithFavIcon>> by lazy {
Pager(PagingConfig(40)) {
feedsDao.allSubscribedFeeds
}.flow
--- a/manage_feeds/src/main/java/com/geekorum/ttrss/manage_feeds/ManageFeedsActivity.kt Thu Jan 05 12:18:25 2023 -0400
+++ b/manage_feeds/src/main/java/com/geekorum/ttrss/manage_feeds/ManageFeedsActivity.kt Thu Jan 05 12:18:59 2023 -0400
@@ -44,6 +44,7 @@
import com.geekorum.geekdroid.app.lifecycle.EventObserver
import com.geekorum.geekdroid.views.doOnApplyWindowInsets
import com.geekorum.ttrss.data.Feed
+import com.geekorum.ttrss.data.FeedWithFavIcon
import com.geekorum.ttrss.manage_feeds.databinding.ActivityManageFeedsBinding
import com.geekorum.ttrss.manage_feeds.databinding.DialogUnsubscribeFeedBinding
import com.geekorum.ttrss.manage_feeds.databinding.FragmentManageFeedsBinding
@@ -127,7 +128,7 @@
}
- private inner class FeedsAdapter : PagingDataAdapter<Feed, FeedViewHolder>(DiffFeed) {
+ private inner class FeedsAdapter : PagingDataAdapter<FeedWithFavIcon, FeedViewHolder>(DiffFeed) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FeedViewHolder {
val itemFeedBinding = ItemFeedBinding.inflate(layoutInflater, parent, false)
return FeedViewHolder(itemFeedBinding)
@@ -143,14 +144,16 @@
}
class FeedViewHolder(val binding: ItemFeedBinding) : RecyclerView.ViewHolder(binding.root) {
- fun setFeed(feed: Feed?) {
+ fun setFeed(feedWithFavIcon: FeedWithFavIcon?) {
+ val feed = feedWithFavIcon?.feed
+ val favIcon = feedWithFavIcon?.favIcon
val title = feed?.displayTitle?.takeIf { it.isNotEmpty() } ?: feed?.title
binding.setVariable(BR.name, title)
binding.setVariable(BR.feed, feed)
with(binding.feedIcon) {
// set the tint for errors and place holder drawable
imageTintList = resources.getColorStateList(R.color.rss_feed_orange, null)
- load(feed?.feedIconUrl) {
+ load(favIcon?.url) {
error(R.drawable.ic_rss_feed_black_24dp)
placeholder(R.drawable.ic_rss_feed_black_24dp)
listener { _, _ ->
@@ -165,12 +168,12 @@
}
}
- private object DiffFeed : DiffUtil.ItemCallback<Feed>() {
- override fun areItemsTheSame(oldItem: Feed, newItem: Feed): Boolean {
- return oldItem.id == newItem.id
+ private object DiffFeed : DiffUtil.ItemCallback<FeedWithFavIcon>() {
+ override fun areItemsTheSame(oldItem: FeedWithFavIcon, newItem: FeedWithFavIcon): Boolean {
+ return oldItem.feed.id == newItem.feed.id
}
- override fun areContentsTheSame(oldItem: Feed, newItem: Feed): Boolean {
+ override fun areContentsTheSame(oldItem: FeedWithFavIcon, newItem: FeedWithFavIcon): Boolean {
return oldItem == newItem
}
}