Commit Diff


commit - a4fe986347f75ccf54bf12f9ba41fbf52e140284
commit + a63eba0e5ddeb66c0cfc1be759fd22423b7a56f6
blob - 3d6e1800c8b38c105c3160e90c2db9bbefc53170
blob + ad93be035808924561c55e39e9dcd69f84987f4c
--- mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java
+++ mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java
@@ -500,6 +500,7 @@ public class ComposeFragment extends MastodonToolbarFr
 			case PRIVATE -> R.id.vis_followers;
 			case DIRECT -> R.id.vis_private;
 			case LOCAL -> R.id.vis_local;
+			case CONVERSATION -> R.id.vis_conversation;
 		}).setChecked(true);
 		visibilityPopup.getMenu().findItem(R.id.local_only).setChecked(localOnly);
 
@@ -725,6 +726,7 @@ public class ComposeFragment extends MastodonToolbarFr
 				case PRIVATE -> R.drawable.ic_fluent_lock_closed_20_filled;
 				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;
 			});
 			ImageView moreBtn = view.findViewById(R.id.more);
 			moreBtn.setImageDrawable(visibilityIcon);
@@ -773,6 +775,7 @@ public class ComposeFragment extends MastodonToolbarFr
 				case PRIVATE -> R.string.visibility_followers_only;
 				case DIRECT -> R.string.visibility_private;
 				case LOCAL -> R.string.sk_local_only;
+				case CONVERSATION -> R.string.sk_conversation;
 			};
 			replyText.setContentDescription(getString(R.string.in_reply_to, status.account.getDisplayName()) + ", " + getString(visibilityNameRes));
 			replyText.setOnClickListener(v->{
@@ -1684,6 +1687,8 @@ public class ComposeFragment extends MastodonToolbarFr
 					statusVisibility=StatusPrivacy.DIRECT;
 				}else if(id==R.id.vis_local){
 					statusVisibility=StatusPrivacy.LOCAL;
+				}else if(id==R.id.vis_conversation){
+					statusVisibility=StatusPrivacy.CONVERSATION;
 				}
 				if(id==R.id.local_only){
 					localOnly=!item.isChecked();
@@ -1774,6 +1779,7 @@ public class ComposeFragment extends MastodonToolbarFr
 			case PRIVATE -> R.string.visibility_followers_only;
 			case DIRECT -> R.string.visibility_private;
 			case LOCAL -> R.string.sk_local_only;
+			case CONVERSATION -> R.string.sk_conversation;
 		});
 		Drawable icon=getResources().getDrawable(switch(statusVisibility){
 			case PUBLIC -> R.drawable.ic_fluent_planet_16_regular;
@@ -1781,6 +1787,7 @@ public class ComposeFragment extends MastodonToolbarFr
 			case PRIVATE -> R.drawable.ic_fluent_lock_closed_16_filled;
 			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;
 		}, 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 - fab0e373cece8719fcc58cc94b9188be0d36921c
blob + 5f0abe64da019156712dfe61787d15440a3a48b7
--- mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsPrivacyFragment.java
+++ mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsPrivacyFragment.java
@@ -64,6 +64,7 @@ public class SettingsPrivacyFragment extends BaseSetti
 			case PRIVATE -> R.string.visibility_followers_only;
 			case DIRECT -> R.string.visibility_private;
 			case LOCAL -> R.string.sk_local_only;
+			case CONVERSATION -> R.string.sk_conversation;
 		};
 	}
 
blob - bf8daf4cfcba6817095ba20555d3d5720049d31f
blob + 049ff94b7d51f5b24fa50e1c8f1e4cb542faafd4
--- mastodon/src/main/java/org/joinmastodon/android/model/StatusPrivacy.java
+++ mastodon/src/main/java/org/joinmastodon/android/model/StatusPrivacy.java
@@ -12,7 +12,9 @@ public enum StatusPrivacy{
 	@SerializedName("direct")
 	DIRECT(3),
 	@SerializedName("local")
-	LOCAL(4); // akkoma
+	LOCAL(4), // akkoma
+	@SerializedName("conversation")
+	CONVERSATION(5); // mitra
 
 	private final int privacy;
 
blob - 61b8d1ce2c98d7e126ea175ec468c208387fcc8c
blob + 115a39d5b4c2cb2eee2e61ca8bb24fc0d45d576e
--- mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/ExtendedFooterStatusDisplayItem.java
+++ mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/ExtendedFooterStatusDisplayItem.java
@@ -128,6 +128,7 @@ public class ExtendedFooterStatusDisplayItem extends S
 				case PRIVATE -> R.drawable.ic_fluent_lock_closed_20_filled;
 				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;
 			});
 		}
 
blob - 70904bbeb480f84a07752920217fc5c9515c76e1
blob + e86336db1537dd493aab2cd3262c126dd57ef2a5
--- 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 -> R.drawable.ic_boost_disabled_24px;
+			case DIRECT, CONVERSATION -> R.drawable.ic_boost_disabled_24px;
 			case PUBLIC, UNLISTED, LOCAL -> R.drawable.ic_boost;
 			case PRIVATE -> R.drawable.ic_boost_private;
 		}, 0, 0);
blob - e44dab9190bf59869014974c2b4010012187c66d
blob + 4908cb5bc4317d8e032b8c1e968b4b77ec6b62fd
--- mastodon/src/main/res/menu/compose_visibility.xml
+++ mastodon/src/main/res/menu/compose_visibility.xml
@@ -24,5 +24,8 @@
 		<item android:id="@+id/vis_private"
 			android:icon="@drawable/ic_fluent_mention_24_regular"
 			android:title="@string/visibility_private"/>
+		<item android:id="@+id/vis_conversation"
+			android:icon="@drawable/ic_fluent_lock_closed_24_regular"
+			android:title="@string/visibility_conversation" />
 	</group>
 </menu>
\ No newline at end of file
blob - e701d86380b4f04e15c923e5b61d1cab16ddd668
blob + 1906e018e79838339ff0e0fc61387c9e486cb8e1
--- mastodon/src/main/res/values/strings.xml
+++ mastodon/src/main/res/values/strings.xml
@@ -183,6 +183,7 @@
 	<string name="visibility_public">Public</string>
 	<string name="visibility_followers_only">Followers only</string>
 	<string name="visibility_private">Only people mentioned</string>
+	<string name="visibility_conversation">Conversation</string>
 	<string name="recent_searches">Recents</string>
 	<string name="skip">Skip</string>
 	<string name="notification_type_follow">New followers</string>
blob - 9795f7cc98b15460caf71ffae9b3de925eeda529
blob + 7a258a06b5be8f19ecfdaee3226c1e3ba1f59611
--- mastodon/src/main/res/values/strings_sk.xml
+++ mastodon/src/main/res/values/strings_sk.xml
@@ -282,6 +282,7 @@
     <string name="sk_inline_direct">mentioned-only</string>
     <string name="sk_separator">·</string>
     <string name="sk_local_only">Local instance only</string>
+	<string name="sk_conversation">Conversation</string>
     <string name="sk_instance_features">Instance features</string>
     <string name="sk_settings_support_local_only">Server supports local-only posting</string>
     <string name="sk_settings_local_only_explanation">Your home instance must support local-only posting for this to work. Most modified versions of Mastodon do, but Mastodon doesn’t.</string>