Commit 15e452da authored by Thomas's avatar Thomas
Browse files

- Fix #1314 add replies policy option when creating/editing lists

parent ed8d4f1b
Loading
Loading
Loading
Loading
+28 −2
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ArrayAdapter;

import androidx.activity.OnBackPressedCallback;
import androidx.annotation.NonNull;
@@ -391,13 +392,22 @@ public class MastodonListActivity extends BaseBarActivity implements MastodonLis
            PopupAddListBinding popupAddListBinding = PopupAddListBinding.inflate(getLayoutInflater());
            dialogBuilder.setView(popupAddListBinding.getRoot());
            popupAddListBinding.addList.setFilters(new InputFilter[]{new InputFilter.LengthFilter(255)});
            String[] repliesPolicies = {getString(R.string.list_replies_policy_followed), getString(R.string.list_replies_policy_list), getString(R.string.list_replies_policy_none)};
            ArrayAdapter<String> policiesAdapter = new ArrayAdapter<>(MastodonListActivity.this, android.R.layout.simple_spinner_dropdown_item, repliesPolicies);
            popupAddListBinding.repliesPolicySpinner.setAdapter(policiesAdapter);
            if (isMisskey) {
                popupAddListBinding.repliesPolicyLabel.setVisibility(View.GONE);
                popupAddListBinding.repliesPolicySpinner.setVisibility(View.GONE);
            }
            dialogBuilder.setPositiveButton(R.string.validate, (dialog, id) -> {
                if (popupAddListBinding.addList.getText() != null && popupAddListBinding.addList.getText().toString().trim().length() > 0) {
                    LiveData<MastodonList> createLiveData;
                    String[] policyValues = {"followed", "list", "none"};
                    String selectedPolicy = policyValues[popupAddListBinding.repliesPolicySpinner.getSelectedItemPosition()];
                    if (isMisskey) {
                        createLiveData = misskeyTimelinesVM.createList(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, popupAddListBinding.addList.getText().toString().trim());
                    } else {
                        createLiveData = timelinesVM.createList(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, popupAddListBinding.addList.getText().toString().trim(), null);
                        createLiveData = timelinesVM.createList(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, popupAddListBinding.addList.getText().toString().trim(), selectedPolicy);
                    }
                    createLiveData.observe(MastodonListActivity.this, newMastodonList -> {
                                if (mastodonListList == null) {
@@ -443,13 +453,29 @@ public class MastodonListActivity extends BaseBarActivity implements MastodonLis
            popupAddListBinding.addList.setFilters(new InputFilter[]{new InputFilter.LengthFilter(255)});
            popupAddListBinding.addList.setText(mastodonList.title);
            popupAddListBinding.addList.setSelection(Objects.requireNonNull(popupAddListBinding.addList.getText()).length());
            String[] repliesPolicies = {getString(R.string.list_replies_policy_followed), getString(R.string.list_replies_policy_list), getString(R.string.list_replies_policy_none)};
            String[] policyValues = {"followed", "list", "none"};
            ArrayAdapter<String> policiesAdapter = new ArrayAdapter<>(MastodonListActivity.this, android.R.layout.simple_spinner_dropdown_item, repliesPolicies);
            popupAddListBinding.repliesPolicySpinner.setAdapter(policiesAdapter);
            if (isMisskey) {
                popupAddListBinding.repliesPolicyLabel.setVisibility(View.GONE);
                popupAddListBinding.repliesPolicySpinner.setVisibility(View.GONE);
            } else if (mastodonList.replies_policy != null) {
                for (int i = 0; i < policyValues.length; i++) {
                    if (policyValues[i].equals(mastodonList.replies_policy)) {
                        popupAddListBinding.repliesPolicySpinner.setSelection(i);
                        break;
                    }
                }
            }
            dialogBuilder.setPositiveButton(R.string.validate, (dialog, id) -> {
                if (popupAddListBinding.addList.getText() != null && popupAddListBinding.addList.getText().toString().trim().length() > 0) {
                    LiveData<MastodonList> updateLiveData;
                    String selectedPolicy = policyValues[popupAddListBinding.repliesPolicySpinner.getSelectedItemPosition()];
                    if (isMisskey) {
                        updateLiveData = misskeyTimelinesVM.updateList(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, mastodonList.id, popupAddListBinding.addList.getText().toString().trim());
                    } else {
                        updateLiveData = timelinesVM.updateList(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, mastodonList.id, popupAddListBinding.addList.getText().toString().trim(), null);
                        updateLiveData = timelinesVM.updateList(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, mastodonList.id, popupAddListBinding.addList.getText().toString().trim(), selectedPolicy);
                    }
                    updateLiveData.observe(MastodonListActivity.this, newMastodonList -> {
                                if (mastodonListList != null && newMastodonList != null) {
+21 −5
Original line number Diff line number Diff line
@@ -2,16 +2,32 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/fab_margin"
    android:orientation="vertical">
    android:orientation="vertical"
    android:paddingStart="24dp"
    android:paddingTop="16dp"
    android:paddingEnd="24dp"
    android:paddingBottom="8dp">

    <androidx.appcompat.widget.AppCompatEditText
        android:id="@+id/add_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="20dp"
        android:layout_marginBottom="16dp"
        android:hint="@string/action_lists_title_placeholder"
        android:inputType="text"
        android:singleLine="true" />

    <androidx.appcompat.widget.AppCompatTextView
        android:id="@+id/replies_policy_label"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="4dp"
        android:text="@string/list_replies_policy"
        android:textSize="14sp" />

    <Spinner
        android:id="@+id/replies_policy_spinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp" />
</LinearLayout>
+4 −0
Original line number Diff line number Diff line
@@ -328,6 +328,10 @@
    <string name="action_lists_add_to">Add to list</string>
    <string name="action_lists_delete">Delete list</string>
    <string name="action_lists_title_placeholder">New list title</string>
    <string name="list_replies_policy">Show replies to</string>
    <string name="list_replies_policy_none">No one</string>
    <string name="list_replies_policy_list">Members of the list</string>
    <string name="list_replies_policy_followed">Any followed user</string>
    <string name="action_lists_add_user">The account was added to the list!</string>
    <string name="action_lists_empty">You don\'t have any lists yet!</string>
    <!-- Migration -->