diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/EditProfileActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/EditProfileActivity.java index 36a2d2b6..1919377d 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/activities/EditProfileActivity.java +++ b/app/src/main/java/app/fedilab/android/mastodon/activities/EditProfileActivity.java @@ -197,6 +197,18 @@ public class EditProfileActivity extends BaseBarActivity { binding.visibilityGroup.setVisibility(View.GONE); } + String quotePolicy = Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.source.quotePolicy; + if (quotePolicy != null) { + switch (quotePolicy) { + case "nobody" -> binding.quoteApprovalPolicyNoOne.setChecked(true); + case "followers" -> binding.quoteApprovalPolicyFollowersOnly.setChecked(true); + case "public" -> binding.quoteApprovalPolicyAnyone.setChecked(true); + } + } else { + binding.quoteApprovalPolicyLabel.setVisibility(View.GONE); + binding.quoteApprovalPolicyGroup.setVisibility(View.GONE); + } + binding.bot.setChecked(Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.bot); binding.discoverable.setChecked(Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.discoverable); @@ -386,6 +398,17 @@ public class EditProfileActivity extends BaseBarActivity { return null; } + private String getQuotePolicy() { + if (binding.quoteApprovalPolicyNoOne.isChecked()) { + return "nobody"; + } else if (binding.quoteApprovalPolicyFollowersOnly.isChecked()) { + return "followers"; + } else if (binding.quoteApprovalPolicyAnyone.isChecked()) { + return "public"; + } + return null; + } + LinkedHashMap getFields() { LinkedHashMap fields = new LinkedHashMap<>(); for (int i = 0; i < binding.fieldsContainer.getChildCount(); i++) { @@ -421,6 +444,7 @@ public class EditProfileActivity extends BaseBarActivity { binding.locked.isChecked(), getPrivacy(), binding.sensitive.isChecked(), + getQuotePolicy(), null, getFields(), getFeaturedHashtags() diff --git a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Source.java b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Source.java index 6702f815..fc7fb4ee 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Source.java +++ b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Source.java @@ -24,6 +24,8 @@ public class Source implements Serializable { public String privacy; @SerializedName("sensitive") public boolean sensitive; + @SerializedName("quote_policy") + public String quotePolicy; @SerializedName("language") public String language; @SerializedName("note") @@ -40,5 +42,7 @@ public class Source implements Serializable { public boolean sensitive; @SerializedName("language") public String language; + @SerializedName("quote_policy") + public String quotePolicy; } } diff --git a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AccountsVM.java b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AccountsVM.java index 9473c1dc..7a26e9ee 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AccountsVM.java +++ b/app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AccountsVM.java @@ -251,6 +251,7 @@ public class AccountsVM extends AndroidViewModel { * @param locked Whether manual approval of follow requests is required. * @param privacy Default post privacy for authored statuses. * @param sensitive Whether to mark authored statuses as sensitive by default. + * @param quotePolicy Default value for who can quote statuses * @param language Default language to use for authored statuses. (ISO 6391) * @param fields Profile metadata name (By default, max 4 fields and 255 characters per property/value) * @param featuredHashtags Featured hashtags that will be displayed on the profile @@ -264,6 +265,7 @@ public class AccountsVM extends AndroidViewModel { Boolean locked, String privacy, Boolean sensitive, + String quotePolicy, String language, LinkedHashMap fields, List featuredHashtags @@ -286,6 +288,7 @@ public class AccountsVM extends AndroidViewModel { accountParams.source.privacy = privacy; accountParams.source.language = language; accountParams.source.sensitive = sensitive; + accountParams.source.quotePolicy = quotePolicy; accountParams.fields = fields; Call accountCall = mastodonAccountsService.update_credentials(token, accountParams); // Call accountCall = mastodonAccountsService.update_credentials(token, discoverable, bot, displayName, note, locked, privacy, sensitive, language, fields);