summaryrefslogtreecommitdiff
path: root/org.fox.ttrss/src
diff options
context:
space:
mode:
authorAndrew Dolgov <fox@fakecake.org>2025-05-15 13:36:24 +0300
committerAndrew Dolgov <fox@fakecake.org>2025-05-15 13:37:17 +0300
commit0fdd5cc6c35a602487ddbeaeec60693ce48fd6f0 (patch)
treee830c2cc3395b8a71c3e266dd50e02ef637cc1bc /org.fox.ttrss/src
parent50c5e76e25e3b8ff58aa829365ca1ec87c0d574e (diff)
bring back display of host specific to linked article (if differs from site_url), properly hide loading indicator on api error
Diffstat (limited to 'org.fox.ttrss/src')
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java12
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java27
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/types/Article.java28
-rwxr-xr-xorg.fox.ttrss/src/main/res/layout/fragment_article.xml14
-rwxr-xr-xorg.fox.ttrss/src/main/res/layout/headlines_row.xml14
-rwxr-xr-xorg.fox.ttrss/src/main/res/layout/headlines_row_unread.xml14
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<String, GlideDrawable> 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" />
+ <TextView
+ android:id="@+id/link_host"
+ android:layout_marginStart="16dp"
+ android:layout_marginEnd="16dp"
+ tools:text="example.com"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textAlignment="viewStart"
+ android:layout_weight="1"
+ android:fontFamily="sans-serif-light"
+ android:layout_marginTop="8dp"
+ android:textColor="?colorPrimary"
+ android:textSize="12sp" />
+
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/org.fox.ttrss/src/main/res/layout/headlines_row.xml b/org.fox.ttrss/src/main/res/layout/headlines_row.xml
index 3659589d..3c0ecb20 100755
--- a/org.fox.ttrss/src/main/res/layout/headlines_row.xml
+++ b/org.fox.ttrss/src/main/res/layout/headlines_row.xml
@@ -77,6 +77,20 @@
</LinearLayout>
+ <TextView
+ android:id="@+id/link_host"
+ android:layout_width="match_parent"
+ android:layout_marginTop="8dp"
+ android:layout_below="@+id/linearLayout2"
+ android:layout_height="wrap_content"
+ android:ellipsize="middle"
+ android:fontFamily="sans-serif-light"
+ android:singleLine="true"
+ android:textAlignment="viewStart"
+ android:textColor="?colorSecondary"
+ android:textSize="12sp"
+ tools:text="example.com" />
+
</RelativeLayout>
</TableRow>
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 @@
</LinearLayout>
+ <TextView
+ android:id="@+id/link_host"
+ android:layout_width="match_parent"
+ android:layout_marginTop="8dp"
+ android:layout_below="@+id/linearLayout2"
+ android:layout_height="wrap_content"
+ android:ellipsize="middle"
+ android:fontFamily="sans-serif-light"
+ android:singleLine="true"
+ android:textAlignment="viewStart"
+ android:textColor="?colorSecondary"
+ android:textSize="12sp"
+ tools:text="example.com" />
+
</RelativeLayout>
</TableRow>