diff --git a/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java b/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java index fec865394..e9e403e1f 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java +++ b/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java @@ -48,6 +48,7 @@ public class GlobalUserPreferences{ public static boolean spectatorMode; public static boolean autoHideFab; public static boolean unreadNotifications; + public static boolean defaultToUnlistedReplies; public static String publishButtonText; public static ThemePreference theme; public static ColorPreference color; @@ -103,6 +104,7 @@ public class GlobalUserPreferences{ spectatorMode=prefs.getBoolean("spectatorMode", false); autoHideFab=prefs.getBoolean("autoHideFab", true); unreadNotifications=prefs.getBoolean("unreadNotifications", false); + defaultToUnlistedReplies=prefs.getBoolean("defaultToUnlistedReplies", false); publishButtonText=prefs.getString("publishButtonText", ""); theme=ThemePreference.values()[prefs.getInt("theme", 0)]; recentLanguages=fromJson(prefs.getString("recentLanguages", "{}"), recentLanguagesType, new HashMap<>()); @@ -155,6 +157,7 @@ public class GlobalUserPreferences{ .putBoolean("unreadNotifications", unreadNotifications) .putString("publishButtonText", publishButtonText) .putBoolean("bottomEncoding", bottomEncoding) + .putBoolean("defaultToUnlistedReplies", defaultToUnlistedReplies) .putInt("theme", theme.ordinal()) .putString("color", color.name()) .putString("recentLanguages", gson.toJson(recentLanguages)) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java index 7f28ff9be..017d3502f 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java @@ -29,6 +29,7 @@ import android.graphics.drawable.LayerDrawable; import android.icu.text.BreakIterator; import android.media.MediaMetadataRetriever; import android.net.Uri; +import android.opengl.Visibility; import android.os.Build; import android.os.Bundle; import android.os.Parcelable; @@ -1945,7 +1946,9 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr } private void loadDefaultStatusVisibility(Bundle savedInstanceState) { - if(replyTo != null) statusVisibility = replyTo.visibility; + if(replyTo != null) { + statusVisibility = (replyTo.visibility == StatusPrivacy.PUBLIC && GlobalUserPreferences.defaultToUnlistedReplies ? StatusPrivacy.UNLISTED : replyTo.visibility); + } // A saved privacy setting from a previous compose session wins over the reply visibility if(savedInstanceState !=null){ diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java index fba3f7c31..3b2617c97 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java @@ -214,6 +214,10 @@ public class SettingsFragment extends MastodonToolbarFragment{ items.add(new HeaderItem(R.string.mo_composer_behavior)); + items.add(new SwitchItem(R.string.mo_change_default_reply_visibility_to_unlisted, R.drawable.ic_fluent_lock_closed_24_regular, GlobalUserPreferences.defaultToUnlistedReplies, i->{ + GlobalUserPreferences.defaultToUnlistedReplies=i.checked; + GlobalUserPreferences.save(); + })); items.add(new SwitchItem(R.string.mo_relocate_publish_button, R.drawable.ic_fluent_arrow_autofit_down_24_regular, GlobalUserPreferences.relocatePublishButton, i->{ GlobalUserPreferences.relocatePublishButton=i.checked; GlobalUserPreferences.save();