diff --git a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Status.java b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Status.java index 78c221a1..b5a1621e 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Status.java +++ b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Status.java @@ -175,6 +175,8 @@ public class Status implements Serializable, Cloneable { public transient Spannable contentSpan; public transient String[] bottomTags; + + public boolean bottomTagsAllDisplayed = false; public transient Spannable contentSpoilerSpan; public transient Spannable contentTranslateSpan; public transient MathJaxView mathJaxView; diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java index 18550028..3f79825b 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java +++ b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java @@ -1520,7 +1520,22 @@ public class StatusAdapter extends RecyclerView.Adapter if (statusToDeal.getBottomTags().length > 0) { holder.binding.statusHashtags.setVisibility(View.VISIBLE); holder.binding.statusHashtags.removeAllViews(); + int index = 0; for (String tag : statusToDeal.getBottomTags()) { + if(!statusToDeal.bottomTagsAllDisplayed && index > 2 && statusToDeal.getBottomTags().length > 3) { + Chip chip = new Chip(context); + chip.setClickable(true); + chip.setEnsureMinTouchTargetSize(false); + int remaining = statusToDeal.getBottomTags().length - 3; + chip.setText(context.getString(R.string.remaining_tags, remaining)); + chip.setTextColor(ThemeHelper.getAttColor(context, R.attr.colorPrimary)); + chip.setOnClickListener(v -> { + statusToDeal.bottomTagsAllDisplayed = true; + adapter.notifyItemChanged(holder.getBindingAdapterPosition()); + }); + holder.binding.statusHashtags.addView(chip); + break; + } Chip chip = new Chip(context); chip.setClickable(true); chip.setEnsureMinTouchTargetSize(false); @@ -1539,6 +1554,7 @@ public class StatusAdapter extends RecyclerView.Adapter }); }); holder.binding.statusHashtags.addView(chip); + index++; } } else { holder.binding.statusHashtags.setVisibility(View.GONE); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 65b9ad87..433e48cb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2096,6 +2096,7 @@ Truncate links Highlight bottom hashtags + …and %d more Underline clickable elements Max chars in links diff --git a/src/fdroid/fastlane/metadata/android/en/changelogs/535.txt b/src/fdroid/fastlane/metadata/android/en/changelogs/535.txt index a98d9bf1..7056dfe2 100644 --- a/src/fdroid/fastlane/metadata/android/en/changelogs/535.txt +++ b/src/fdroid/fastlane/metadata/android/en/changelogs/535.txt @@ -1,6 +1,9 @@ Added: - Quote support for Mastodon +Changed: +- Limit the number of highlighted hashtags at the bottom of messages + Fixed: - Fix a crash with threads - Fix empty Hashtags \ No newline at end of file