From 0fdd5cc6c35a602487ddbeaeec60693ce48fd6f0 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 15 May 2025 13:36:24 +0300 Subject: bring back display of host specific to linked article (if differs from site_url), properly hide loading indicator on api error --- .../main/java/org/fox/ttrss/ArticleFragment.java | 12 ++++++++++ .../main/java/org/fox/ttrss/HeadlinesFragment.java | 27 +++++++++++++++++---- .../src/main/java/org/fox/ttrss/types/Article.java | 28 ++++++++++++++++++++++ .../src/main/res/layout/fragment_article.xml | 14 +++++++++++ .../src/main/res/layout/headlines_row.xml | 14 +++++++++++ .../src/main/res/layout/headlines_row_unread.xml | 14 +++++++++++ 6 files changed, 105 insertions(+), 4 deletions(-) diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java index 8794e653..474cbee2 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java @@ -135,6 +135,7 @@ public class ArticleFragment extends androidx.fragment.app.Fragment { String commentsTitle = getResources().getQuantityString(R.plurals.article_comments, m_article.comments_count, m_article.comments_count); comments.setText(commentsTitle); + //comments.setPaintFlags(title.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); comments.setOnClickListener(v -> { try { @@ -153,6 +154,17 @@ public class ArticleFragment extends androidx.fragment.app.Fragment { } } + TextView linkHost = view.findViewById(R.id.link_host); + + if (linkHost != null) { + if (m_article.isHostDistinct()) { + linkHost.setText(m_article.getLinkHost()); + linkHost.setVisibility(View.VISIBLE); + } else { + linkHost.setVisibility(View.GONE); + } + } + TextView note = view.findViewById(R.id.note); View noteContainer = view.findViewById(R.id.note_container); diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java index fbcf0b4c..8d15f5ec 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java @@ -489,9 +489,18 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment { Snackbar.make(getView(), R.string.headlines_row_top_changed, Snackbar.LENGTH_LONG) .setAction(R.string.reload, v -> refresh(false)).show(); - if (model.getLastError() == ApiCommon.ApiError.LOGIN_FAILED) { - m_activity.login(); - } else if (model.getLastError() != null && model.getLastError() != ApiCommon.ApiError.SUCCESS) { + if (model.getLastError() != null && model.getLastError() != ApiCommon.ApiError.SUCCESS) { + + if (m_swipeLayout != null) + m_swipeLayout.setRefreshing(false); + + m_isLazyLoading = false; + + if (model.getLastError() == ApiCommon.ApiError.LOGIN_FAILED) { + m_activity.login(); + return; + } + if (model.getLastErrorMessage() != null) { m_activity.toast(m_activity.getString(model.getErrorMessage()) + "\n" + model.getLastErrorMessage()); } else { @@ -582,6 +591,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment { public MaterialButton attachmentsView; public ProgressTarget flavorProgressTarget; int articleId; + public TextView linkHost; public ArticleViewHolder(View v) { super(v); @@ -619,6 +629,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment { flavorImageOverflow = v.findViewById(R.id.gallery_overflow); flavorVideoView = v.findViewById(R.id.flavor_video); attachmentsView = v.findViewById(R.id.attachments); + linkHost = v.findViewById(R.id.link_host); if (flavorImageView != null && flavorImageLoadingBar != null) { flavorProgressTarget = new FlavorProgressTarget<>(new GlideDrawableImageViewTarget(flavorImageView), flavorImageLoadingBar); @@ -818,11 +829,19 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment { if (article.feed_title != null && m_feed != null && (m_feed.is_cat || m_feed.id < 0)) { holder.feedTitleView.setTextSize(TypedValue.COMPLEX_UNIT_SP, headlineSmallFontSize); holder.feedTitleView.setText(article.feed_title); - } else { holder.feedTitleView.setVisibility(View.GONE); } + } + if (holder.linkHost != null) { + if (article.isHostDistinct()) { + holder.linkHost.setTextSize(TypedValue.COMPLEX_UNIT_SP, headlineSmallFontSize); + holder.linkHost.setText(article.getLinkHost()); + holder.linkHost.setVisibility(View.VISIBLE); + } else { + holder.linkHost.setVisibility(View.GONE); + } } TypedValue tvTertiary = new TypedValue(); diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Article.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Article.java index f0795dd8..e369ba0c 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Article.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Article.java @@ -6,7 +6,10 @@ import android.os.Parcelable; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; +import org.jspecify.annotations.NonNull; +import java.net.MalformedURLException; +import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; @@ -320,4 +323,29 @@ public class Article implements Parcelable { if (excerpt == null) excerpt = ""; if (content == null) content = ""; } + + public boolean isHostDistinct() { + try { + String siteDomain = new URL(site_url).getHost().replace("www.", ""); + String linkDomain = new URL(link).getHost().replace("www.", ""); + + return !linkDomain.contains(siteDomain); + + } catch (MalformedURLException e) { + // + } + + return false; + } + + @NonNull + public String getLinkHost() { + try { + return new URL(link).getHost(); + } catch (MalformedURLException e) { + // + } + + return ""; + } } diff --git a/org.fox.ttrss/src/main/res/layout/fragment_article.xml b/org.fox.ttrss/src/main/res/layout/fragment_article.xml index eba96d75..0fe8163b 100755 --- a/org.fox.ttrss/src/main/res/layout/fragment_article.xml +++ b/org.fox.ttrss/src/main/res/layout/fragment_article.xml @@ -57,6 +57,20 @@ android:textColor="?colorPrimary" android:textSize="12sp" /> + + + + diff --git a/org.fox.ttrss/src/main/res/layout/headlines_row_unread.xml b/org.fox.ttrss/src/main/res/layout/headlines_row_unread.xml index 3365f476..7cae0fb1 100755 --- a/org.fox.ttrss/src/main/res/layout/headlines_row_unread.xml +++ b/org.fox.ttrss/src/main/res/layout/headlines_row_unread.xml @@ -78,6 +78,20 @@ + + -- cgit v1.2.3-54-g00ecf