Skip to content

Commit

Permalink
Renaming feed enclosure to feed image to better align with feed artic…
Browse files Browse the repository at this point in the history
…le terminology.
  • Loading branch information
JonForShort committed Sep 18, 2021
1 parent 5140f83 commit 8743fee
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,18 @@ import android.webkit.WebView
import android.widget.ImageView
import androidx.databinding.BindingAdapter
import com.bumptech.glide.Glide
import com.github.jonforshort.rssreader.feedcontentfetcher.FeedItemEnclosure
import com.github.jonforshort.rssreader.feedcontentfetcher.FeedItem
import com.github.jonforshort.rssreader.feedsource.repo.Feed
import java.time.Instant
import java.time.ZoneId
import java.time.format.DateTimeFormatter

internal data class FeedArticle(

val title: String = "",

val titleImageUrl: String? = null,

val link: String = "",

val description: String = "",
Expand All @@ -42,8 +48,6 @@ internal data class FeedArticle(

val publishTimeInMs: Long = 0,

val enclosure: FeedItemEnclosure? = null,

val providerName: String,

val providerIconUrl: String
Expand All @@ -57,10 +61,14 @@ private val FEED_ENCLOSURE_WIDTH_PX by lazy {
Resources.getSystem().displayMetrics.widthPixels
}

@BindingAdapter("loadEnclosure")
internal fun loadEnclosure(view: ImageView, enclosure: FeedItemEnclosure) {
private val FEED_ARTICLE_DATE_STRING_FORMATTER by lazy {
DateTimeFormatter.ofPattern("HH:mm:ss MM/dd/yyyy")
}

@BindingAdapter("loadImage")
internal fun loadImage(view: ImageView, url: String) {
Glide.with(view.context)
.load(enclosure.url)
.load(url)
.override(FEED_ENCLOSURE_WIDTH_PX, FEED_ENCLOSURE_HEIGHT_PX)
.centerCrop()
.into(view)
Expand All @@ -77,4 +85,21 @@ internal fun loadFeedIcon(view: ImageView, iconUrl: String) {
internal fun loadHtml(view: WebView, html: String) {
view.loadData(html, "text/html; charset=UTF-8", null)
view.settings.loadWithOverviewMode = true
}
}

internal fun createFeedArticle(feed: Feed, feedItem: FeedItem) =
FeedArticle(
title = feedItem.title,
titleImageUrl = feedItem.enclosure?.url,
link = feedItem.link,
description = feedItem.description,
publishDate = convertTimeInMsToDateString(feedItem.publishTimeInMs),
publishTimeInMs = feedItem.publishTimeInMs,
providerName = feed.providerName,
providerIconUrl = feed.providerIconUrl
)

private fun convertTimeInMsToDateString(timeInMs: Long) =
Instant.ofEpochMilli(timeInMs)
.atZone(ZoneId.systemDefault())
.format(FEED_ARTICLE_DATE_STRING_FORMATTER)
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,9 @@ import com.github.jonforshort.rssreader.R
import com.github.jonforshort.rssreader.ui.main.FeedArticle
import com.github.jonforshort.rssreader.ui.main.FeedArticleAdapter
import com.github.jonforshort.rssreader.ui.main.FeedArticleViewObserver
import com.github.jonforshort.rssreader.ui.main.createFeedArticle
import dagger.hilt.android.AndroidEntryPoint
import timber.log.Timber.d
import java.time.Instant
import java.time.ZoneId
import java.time.format.DateTimeFormatter

@AndroidEntryPoint
internal class HomeFeedFragment : Fragment(), SwipeRefreshLayout.OnRefreshListener {
Expand All @@ -55,10 +53,6 @@ internal class HomeFeedFragment : Fragment(), SwipeRefreshLayout.OnRefreshListen
private val feedArticleViewObserver = HomeFeedArticleViewObserver()
private val feedViewModel: HomeFeedViewModel by viewModels()

companion object {
private val ARTICLE_DATE_STRING_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss MM/dd/yyyy")
}

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
Expand All @@ -77,18 +71,7 @@ internal class HomeFeedFragment : Fragment(), SwipeRefreshLayout.OnRefreshListen

feedViewModel.feedContent().observe(viewLifecycleOwner) { feedAndFeedContent ->
val feedContent = feedAndFeedContent.second
val currentFeedArticles = feedContent.channel.items.map { feedItem ->
FeedArticle(
feedItem.title,
feedItem.link,
feedItem.description,
convertTimeInMsToDateString(feedItem.publishTimeInMs),
feedItem.publishTimeInMs,
feedItem.enclosure,
feedAndFeedContent.first.providerName,
feedAndFeedContent.first.providerIconUrl
)
}
val currentFeedArticles = feedContent.channel.items.map { createFeedArticle(feedAndFeedContent.first, it) }
feedArticles.addAll(currentFeedArticles)
feedArticles.sortByDescending { it.publishTimeInMs }
feedArticleAdapter.submitList(feedArticles)
Expand All @@ -99,11 +82,6 @@ internal class HomeFeedFragment : Fragment(), SwipeRefreshLayout.OnRefreshListen
swipeRefreshLayout.setOnRefreshListener(this)
}

private fun convertTimeInMsToDateString(timeInMs: Long) =
Instant.ofEpochMilli(timeInMs)
.atZone(ZoneId.systemDefault())
.format(ARTICLE_DATE_STRING_FORMATTER)

override fun onResume() {
super.onResume()
refreshFeedContent()
Expand Down
6 changes: 3 additions & 3 deletions rss-reader/app/src/main/res/layout/view_feed_article.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@
tools:text="Feed Item Title" />

<ImageView
android:id="@+id/feedItemEnclosure"
android:id="@+id/feedItemTitleImage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/feed_item_enclosure"
app:loadEnclosure="@{feedArticle.enclosure}" />
android:contentDescription="@string/feed_item_title_image_url"
app:loadImage="@{feedArticle.titleImageUrl}" />

<WebView
android:id="@+id/feedItemDescription"
Expand Down
2 changes: 1 addition & 1 deletion rss-reader/app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<string name="menu_home">Home</string>
<string name="menu_feeds">Feeds</string>
<string name="menu_settings">Settings</string>
<string name="feed_item_enclosure">Feed Item Enclosure</string>
<string name="feed_item_title_image_url">Feed Item Title Image URL</string>
<string name="feed_icon_description">feed icon</string>
<string name="favorite_icon_description">favorite icon</string>
<string name="share_icon_description">share icon</string>
Expand Down

0 comments on commit 8743fee

Please sign in to comment.