commit 8f00c06467fbbe772e1c459438d6283db6b9b4d6 from: darkwolf date: Wed Jul 15 10:20:24 2026 UTC add subscribers visibility commit - 32785bf97696fee1e43b09d435dbd8a156ae0b62 commit + 8f00c06467fbbe772e1c459438d6283db6b9b4d6 blob - ad93be035808924561c55e39e9dcd69f84987f4c blob + 7ceb5af66b950d38052b46e32bb4708b2cc252a5 --- mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java +++ mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java @@ -501,6 +501,7 @@ public class ComposeFragment extends MastodonToolbarFr case DIRECT -> R.id.vis_private; case LOCAL -> R.id.vis_local; case CONVERSATION -> R.id.vis_conversation; + case SUBSCRIBERS -> R.id.vis_subscribers; }).setChecked(true); visibilityPopup.getMenu().findItem(R.id.local_only).setChecked(localOnly); @@ -727,6 +728,7 @@ public class ComposeFragment extends MastodonToolbarFr case DIRECT -> R.drawable.ic_fluent_mention_20_regular; case LOCAL -> R.drawable.ic_fluent_eye_20_regular; case CONVERSATION -> R.drawable.ic_fluent_lock_closed_16_filled; + case SUBSCRIBERS -> R.drawable.ic_fluent_star_emphasis_24_regular; }); ImageView moreBtn = view.findViewById(R.id.more); moreBtn.setImageDrawable(visibilityIcon); @@ -776,6 +778,7 @@ public class ComposeFragment extends MastodonToolbarFr case DIRECT -> R.string.visibility_private; case LOCAL -> R.string.sk_local_only; case CONVERSATION -> R.string.sk_conversation; + case SUBSCRIBERS -> R.string.sk_subscribers; }; replyText.setContentDescription(getString(R.string.in_reply_to, status.account.getDisplayName()) + ", " + getString(visibilityNameRes)); replyText.setOnClickListener(v->{ @@ -1780,6 +1783,7 @@ public class ComposeFragment extends MastodonToolbarFr case DIRECT -> R.string.visibility_private; case LOCAL -> R.string.sk_local_only; case CONVERSATION -> R.string.sk_conversation; + case SUBSCRIBERS -> R.string.sk_subscribers; }); Drawable icon=getResources().getDrawable(switch(statusVisibility){ case PUBLIC -> R.drawable.ic_fluent_planet_16_regular; @@ -1788,6 +1792,7 @@ public class ComposeFragment extends MastodonToolbarFr case DIRECT -> R.drawable.ic_fluent_mention_16_regular; case LOCAL -> R.drawable.ic_fluent_eye_16_regular; case CONVERSATION -> R.drawable.ic_fluent_lock_closed_16_filled; + case SUBSCRIBERS -> R.drawable.ic_fluent_star_emphasis_24_regular; }, getActivity().getTheme()).mutate(); icon.setBounds(0, 0, V.dp(18), V.dp(18)); visibilityBtn.setCompoundDrawableTintList(getContext().getResources().getColorStateList(R.color.m3_primary_selector, getContext().getTheme())); blob - 5f0abe64da019156712dfe61787d15440a3a48b7 blob + 9cd6a64da75de1c52e1476ad9759ebf141141ca6 --- mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsPrivacyFragment.java +++ mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsPrivacyFragment.java @@ -65,6 +65,7 @@ public class SettingsPrivacyFragment extends BaseSetti case DIRECT -> R.string.visibility_private; case LOCAL -> R.string.sk_local_only; case CONVERSATION -> R.string.sk_conversation; + case SUBSCRIBERS -> R.string.sk_subscribers; }; } blob - 049ff94b7d51f5b24fa50e1c8f1e4cb542faafd4 blob + 4d45ae672a2a9bedd59cf111309d4cee2d6e0217 --- mastodon/src/main/java/org/joinmastodon/android/model/StatusPrivacy.java +++ mastodon/src/main/java/org/joinmastodon/android/model/StatusPrivacy.java @@ -14,7 +14,9 @@ public enum StatusPrivacy{ @SerializedName("local") LOCAL(4), // akkoma @SerializedName("conversation") - CONVERSATION(5); // mitra + CONVERSATION(5), // mitra + @SerializedName("subscribers") + SUBSCRIBERS(6); // mitra private final int privacy; blob - 115a39d5b4c2cb2eee2e61ca8bb24fc0d45d576e blob + 1ab255f3ac1064a2769cc6029ea5f2c9bae59713 --- mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/ExtendedFooterStatusDisplayItem.java +++ mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/ExtendedFooterStatusDisplayItem.java @@ -129,6 +129,7 @@ public class ExtendedFooterStatusDisplayItem extends S case DIRECT -> R.drawable.ic_fluent_mention_20_regular; case LOCAL -> R.drawable.ic_fluent_eye_20_regular; case CONVERSATION -> R.drawable.ic_fluent_lock_closed_20_filled; + case SUBSCRIBERS -> R.drawable.ic_fluent_star_emphasis_24_regular; }); } blob - e86336db1537dd493aab2cd3262c126dd57ef2a5 blob + 0d8b2d6b021b7f84551037cf77c1c7046a4cfbf4 --- mastodon/src/main/java/org/joinmastodon/android/ui/photoviewer/PhotoViewerInfoSheet.java +++ mastodon/src/main/java/org/joinmastodon/android/ui/photoviewer/PhotoViewerInfoSheet.java @@ -146,7 +146,7 @@ public class PhotoViewerInfoSheet extends BottomSheet{ public void setStatus(Status status){ statusID=status.id; boostBtn.setCompoundDrawablesWithIntrinsicBounds(0, switch(status.visibility){ - case DIRECT, CONVERSATION -> R.drawable.ic_boost_disabled_24px; + case DIRECT, CONVERSATION, SUBSCRIBERS -> R.drawable.ic_boost_disabled_24px; case PUBLIC, UNLISTED, LOCAL -> R.drawable.ic_boost; case PRIVATE -> R.drawable.ic_boost_private; }, 0, 0); blob - 4908cb5bc4317d8e032b8c1e968b4b77ec6b62fd blob + f1f8620ff712dc7c9080689f02ed12e45de4ce3a --- mastodon/src/main/res/menu/compose_visibility.xml +++ mastodon/src/main/res/menu/compose_visibility.xml @@ -27,5 +27,9 @@ + \ No newline at end of file blob - 1906e018e79838339ff0e0fc61387c9e486cb8e1 blob + d0ba2ad9adeb4d7de9e4bacecbe24e0dfc0190f2 --- mastodon/src/main/res/values/strings.xml +++ mastodon/src/main/res/values/strings.xml @@ -184,6 +184,7 @@ Followers only Only people mentioned Conversation + Subscribers Recents Skip New followers blob - 3201e3f94b6f841b1b9f708d6ef08087ea644cd3 blob + 187f16d42a46e52f1f43dd989e30865d33651c58 --- mastodon/src/main/res/values/strings_sk.xml +++ mastodon/src/main/res/values/strings_sk.xml @@ -283,6 +283,7 @@ · Local instance only Conversation + Subscribers Instance features Server supports local-only posting Your home instance must support local-only posting for this to work. Most modified versions of Mastodon do, but Mastodon doesn’t.