Loading app/src/main/java/app/fedilab/android/mastodon/activities/EditProfileActivity.java +24 −3 Original line number Diff line number Diff line Loading @@ -190,13 +190,24 @@ public class EditProfileActivity extends BaseBarActivity { case "public" -> binding.visibilityPublic.setChecked(true); case "unlisted" -> binding.visibilityUnlisted.setChecked(true); case "private" -> binding.visibilityPrivate.setChecked(true); case "direct" -> binding.visibilityDirect.setChecked(true); } } else { binding.sensitive.setVisibility(View.GONE); 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); Loading Loading @@ -380,8 +391,17 @@ public class EditProfileActivity extends BaseBarActivity { return "unlisted"; } else if (binding.visibilityPrivate.isChecked()) { return "private"; } else if (binding.visibilityDirect.isChecked()) { return "direct"; } 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; } Loading Loading @@ -421,6 +441,7 @@ public class EditProfileActivity extends BaseBarActivity { binding.locked.isChecked(), getPrivacy(), binding.sensitive.isChecked(), getQuotePolicy(), null, getFields(), getFeaturedHashtags() Loading app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Source.java +4 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ public class Source implements Serializable { public String quote_policy; @SerializedName("sensitive") public boolean sensitive; @SerializedName("quote_policy") public String quotePolicy; @SerializedName("language") public String language; @SerializedName("note") Loading @@ -44,5 +46,7 @@ public class Source implements Serializable { public boolean sensitive; @SerializedName("language") public String language; @SerializedName("quote_policy") public String quotePolicy; } } app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AccountsVM.java +3 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -264,6 +265,7 @@ public class AccountsVM extends AndroidViewModel { Boolean locked, String privacy, Boolean sensitive, String quotePolicy, String language, LinkedHashMap<Integer, Field.FieldParams> fields, List<String> featuredHashtags Loading @@ -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<Account> accountCall = mastodonAccountsService.update_credentials(token, accountParams); // Call<Account> accountCall = mastodonAccountsService.update_credentials(token, discoverable, bot, displayName, note, locked, privacy, sensitive, language, fields); Loading app/src/main/res/layouts/mastodon/layout/activity_edit_profile.xml +0 −9 Original line number Diff line number Diff line Loading @@ -365,15 +365,6 @@ android:textAlignment="textStart" app:icon="@drawable/ic_compose_visibility_private" /> <com.google.android.material.button.MaterialButton android:id="@+id/visibility_direct" style="@style/Fedilab.OutlinedButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/v_direct" android:textAlignment="textStart" app:icon="@drawable/ic_compose_visibility_direct" /> </com.google.android.material.button.MaterialButtonToggleGroup> <com.google.android.material.textview.MaterialTextView Loading app/src/main/res/layouts/mastodon/layout/fragment_login_main.xml +14 −7 Original line number Diff line number Diff line Loading @@ -36,21 +36,24 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="24dp" style="@style/Widget.Material3.TextInputLayout.OutlinedBox" app:errorEnabled="true" android:hint="@string/instance" app:helperText="@string/instance_example" app:layout_constraintBottom_toTopOf="@id/login_token_layout" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_chainStyle="packed"> <com.google.android.material.textfield.MaterialAutoCompleteTextView android:id="@+id/login_instance" style="@style/Widget.Material3.TextInputEditText.FilledBox" style="@style/Widget.Material3.TextInputEditText.OutlinedBox" android:layout_width="match_parent" android:layout_height="wrap_content" android:dropDownAnchor="@id/login_instance_layout" android:hint="@string/instance_example" android:imeOptions="actionDone" android:inputType="textWebEmailAddress" android:singleLine="true" /> </com.google.android.material.textfield.TextInputLayout> Loading @@ -59,8 +62,10 @@ tools:visibility="visible" android:id="@+id/login_token_layout" android:layout_width="match_parent" style="@style/Widget.Material3.TextInputLayout.OutlinedBox" android:layout_height="wrap_content" android:layout_marginHorizontal="24dp" android:layout_marginTop="12dp" app:errorEnabled="true" app:layout_constraintBottom_toTopOf="@id/continue_button" app:layout_constraintTop_toBottomOf="@+id/login_instance_layout" Loading @@ -68,19 +73,21 @@ <com.google.android.material.textfield.MaterialAutoCompleteTextView android:id="@+id/login_token" style="@style/Widget.Material3.TextInputEditText.FilledBox" style="@style/Widget.Material3.TextInputEditText.OutlinedBox" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/instance_token" android:imeOptions="actionDone" android:inputType="text" android:singleLine="true" /> </com.google.android.material.textfield.TextInputLayout> <com.google.android.material.button.MaterialButton android:id="@+id/continue_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="12dp" android:text="@string/keepon" android:textAllCaps="false" app:layout_constraintBottom_toBottomOf="parent" Loading @@ -93,19 +100,19 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="24dp" android:layout_marginBottom="12dp" android:text="@string/dont_have_an_account" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toTopOf="@id/no_account_a" app:layout_constraintBottom_toBottomOf="@id/no_account_a" app:layout_constraintStart_toStartOf="parent" /> <com.google.android.material.textview.MaterialTextView <com.google.android.material.button.MaterialButton android:id="@+id/no_account_a" style="@style/Widget.Material3.Button.TextButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="5dp" android:layout_marginBottom="12dp" android:text="@string/join_the_fediverse" android:textColor="?android:textColorLink" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@id/no_account_q" /> Loading Loading
app/src/main/java/app/fedilab/android/mastodon/activities/EditProfileActivity.java +24 −3 Original line number Diff line number Diff line Loading @@ -190,13 +190,24 @@ public class EditProfileActivity extends BaseBarActivity { case "public" -> binding.visibilityPublic.setChecked(true); case "unlisted" -> binding.visibilityUnlisted.setChecked(true); case "private" -> binding.visibilityPrivate.setChecked(true); case "direct" -> binding.visibilityDirect.setChecked(true); } } else { binding.sensitive.setVisibility(View.GONE); 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); Loading Loading @@ -380,8 +391,17 @@ public class EditProfileActivity extends BaseBarActivity { return "unlisted"; } else if (binding.visibilityPrivate.isChecked()) { return "private"; } else if (binding.visibilityDirect.isChecked()) { return "direct"; } 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; } Loading Loading @@ -421,6 +441,7 @@ public class EditProfileActivity extends BaseBarActivity { binding.locked.isChecked(), getPrivacy(), binding.sensitive.isChecked(), getQuotePolicy(), null, getFields(), getFeaturedHashtags() Loading
app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Source.java +4 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ public class Source implements Serializable { public String quote_policy; @SerializedName("sensitive") public boolean sensitive; @SerializedName("quote_policy") public String quotePolicy; @SerializedName("language") public String language; @SerializedName("note") Loading @@ -44,5 +46,7 @@ public class Source implements Serializable { public boolean sensitive; @SerializedName("language") public String language; @SerializedName("quote_policy") public String quotePolicy; } }
app/src/main/java/app/fedilab/android/mastodon/viewmodel/mastodon/AccountsVM.java +3 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -264,6 +265,7 @@ public class AccountsVM extends AndroidViewModel { Boolean locked, String privacy, Boolean sensitive, String quotePolicy, String language, LinkedHashMap<Integer, Field.FieldParams> fields, List<String> featuredHashtags Loading @@ -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<Account> accountCall = mastodonAccountsService.update_credentials(token, accountParams); // Call<Account> accountCall = mastodonAccountsService.update_credentials(token, discoverable, bot, displayName, note, locked, privacy, sensitive, language, fields); Loading
app/src/main/res/layouts/mastodon/layout/activity_edit_profile.xml +0 −9 Original line number Diff line number Diff line Loading @@ -365,15 +365,6 @@ android:textAlignment="textStart" app:icon="@drawable/ic_compose_visibility_private" /> <com.google.android.material.button.MaterialButton android:id="@+id/visibility_direct" style="@style/Fedilab.OutlinedButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/v_direct" android:textAlignment="textStart" app:icon="@drawable/ic_compose_visibility_direct" /> </com.google.android.material.button.MaterialButtonToggleGroup> <com.google.android.material.textview.MaterialTextView Loading
app/src/main/res/layouts/mastodon/layout/fragment_login_main.xml +14 −7 Original line number Diff line number Diff line Loading @@ -36,21 +36,24 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="24dp" style="@style/Widget.Material3.TextInputLayout.OutlinedBox" app:errorEnabled="true" android:hint="@string/instance" app:helperText="@string/instance_example" app:layout_constraintBottom_toTopOf="@id/login_token_layout" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_chainStyle="packed"> <com.google.android.material.textfield.MaterialAutoCompleteTextView android:id="@+id/login_instance" style="@style/Widget.Material3.TextInputEditText.FilledBox" style="@style/Widget.Material3.TextInputEditText.OutlinedBox" android:layout_width="match_parent" android:layout_height="wrap_content" android:dropDownAnchor="@id/login_instance_layout" android:hint="@string/instance_example" android:imeOptions="actionDone" android:inputType="textWebEmailAddress" android:singleLine="true" /> </com.google.android.material.textfield.TextInputLayout> Loading @@ -59,8 +62,10 @@ tools:visibility="visible" android:id="@+id/login_token_layout" android:layout_width="match_parent" style="@style/Widget.Material3.TextInputLayout.OutlinedBox" android:layout_height="wrap_content" android:layout_marginHorizontal="24dp" android:layout_marginTop="12dp" app:errorEnabled="true" app:layout_constraintBottom_toTopOf="@id/continue_button" app:layout_constraintTop_toBottomOf="@+id/login_instance_layout" Loading @@ -68,19 +73,21 @@ <com.google.android.material.textfield.MaterialAutoCompleteTextView android:id="@+id/login_token" style="@style/Widget.Material3.TextInputEditText.FilledBox" style="@style/Widget.Material3.TextInputEditText.OutlinedBox" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/instance_token" android:imeOptions="actionDone" android:inputType="text" android:singleLine="true" /> </com.google.android.material.textfield.TextInputLayout> <com.google.android.material.button.MaterialButton android:id="@+id/continue_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="12dp" android:text="@string/keepon" android:textAllCaps="false" app:layout_constraintBottom_toBottomOf="parent" Loading @@ -93,19 +100,19 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="24dp" android:layout_marginBottom="12dp" android:text="@string/dont_have_an_account" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toTopOf="@id/no_account_a" app:layout_constraintBottom_toBottomOf="@id/no_account_a" app:layout_constraintStart_toStartOf="parent" /> <com.google.android.material.textview.MaterialTextView <com.google.android.material.button.MaterialButton android:id="@+id/no_account_a" style="@style/Widget.Material3.Button.TextButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="5dp" android:layout_marginBottom="12dp" android:text="@string/join_the_fediverse" android:textColor="?android:textColorLink" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@id/no_account_q" /> Loading