manage_feeds: Use new icon
authorDa Risk <da_risk@geekorum.com>
Thu, 05 Jan 2023 12:18:59 -0400
changeset 940 037d1e0262a4
parent 939 f78e87bc13c1
child 941 dd7a7a2adb1c
manage_feeds: Use new icon
app/src/main/java/com/geekorum/ttrss/data/ManageFeedsDao.kt
manage_feeds/src/main/java/com/geekorum/ttrss/manage_feeds/ManageFeedViewModel.kt
manage_feeds/src/main/java/com/geekorum/ttrss/manage_feeds/ManageFeedsActivity.kt
--- 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
         }
     }