Allow to mute a conversation

This commit is contained in:
tom79 2019-06-06 18:16:43 +02:00
parent 24a0c567cb
commit 6928a16f16
5 changed files with 60 additions and 7 deletions

View File

@ -118,6 +118,8 @@ public class API {
MUTE,
MUTE_NOTIFICATIONS,
UNMUTE,
MUTE_CONVERSATION,
UNMUTE_CONVERSATION,
BLOCK,
UNBLOCK,
FOLLOW,
@ -2120,6 +2122,12 @@ public class API {
case UNMUTE:
action = String.format("/accounts/%s/unmute", targetedId);
break;
case MUTE_CONVERSATION:
action = String.format("/statuses/%s/mute", targetedId);
break;
case UNMUTE_CONVERSATION:
action = String.format("/statuses/%s/unmute", targetedId);
break;
case PIN:
action = String.format("/statuses/%s/pin", targetedId);
break;

View File

@ -2203,6 +2203,12 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
popup.getMenu().findItem(R.id.action_bookmark).setTitle(R.string.bookmark_remove);
else
popup.getMenu().findItem(R.id.action_bookmark).setTitle(R.string.bookmark_add);
if (status.isMuted())
popup.getMenu().findItem(R.id.action_mute_conversation).setTitle(R.string.unmute_conversation);
else
popup.getMenu().findItem(R.id.action_mute_conversation).setTitle(R.string.mute_conversation);
final String[] stringArrayConf;
if (status.getVisibility().equals("direct") || (status.getVisibility().equals("private") && !isOwner))
popup.getMenu().findItem(R.id.action_schedule_boost).setVisible(false);
@ -2215,10 +2221,12 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
stringArrayConf = context.getResources().getStringArray(R.array.more_action_owner_confirm);
} else {
popup.getMenu().findItem(R.id.action_redraft).setVisible(false);
if( MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA && (isAdmin || isModerator))
popup.getMenu().findItem(R.id.action_mute_conversation).setVisible(false);
if( MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA && (isAdmin || isModerator)) {
popup.getMenu().findItem(R.id.action_remove).setVisible(true);
else
}else {
popup.getMenu().findItem(R.id.action_remove).setVisible(false);
}
//Same instance
if (status.getAccount().getAcct().split("@").length < 2)
popup.getMenu().findItem(R.id.action_block_domain).setVisible(false);
@ -2228,7 +2236,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
popup.getMenu().findItem(R.id.action_info).setVisible(false);
popup.getMenu().findItem(R.id.action_report).setVisible(false);
popup.getMenu().findItem(R.id.action_block_domain).setVisible(false);
popup.getMenu().findItem(R.id.action_mute_conversation).setVisible(false);
}
boolean custom_sharing = sharedpreferences.getBoolean(Helper.SET_CUSTOM_SHARING, false);
if( custom_sharing && status.getVisibility().equals("public"))
@ -2374,6 +2382,14 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
builderInner.setMessage(status.getAccount().getAcct());
doAction = API.StatusAction.MUTE;
break;
case R.id.action_mute_conversation:
if( status.isMuted())
doAction = API.StatusAction.UNMUTE_CONVERSATION;
else
doAction = API.StatusAction.MUTE_CONVERSATION;
new PostActionAsyncTask(context, doAction, status.getId(), StatusListAdapter.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
return true;
case R.id.action_bookmark:
if (type != RetrieveFeedsAsyncTask.Type.CACHE_BOOKMARKS) {
status.setBookmarked(!status.isBookmarked());
@ -3182,6 +3198,22 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
}
statuses.removeAll(statusesToRemove);
statusListAdapter.notifyDataSetChanged();
}else if( statusAction == API.StatusAction.MUTE_CONVERSATION ){
for(Status status: statuses){
if( status.getId().equals(targetedId)) {
status.setMuted(true);
notifyStatusChanged(status);
break;
}
}
}else if( statusAction == API.StatusAction.UNMUTE_CONVERSATION ){
for(Status status: statuses){
if( status.getId().equals(targetedId)) {
status.setMuted(false);
notifyStatusChanged(status);
break;
}
}
}else if( statusAction == API.StatusAction.UNSTATUS ){
int position = 0;
for(Status status: statuses){

View File

@ -894,6 +894,10 @@ public class Helper {
message = context.getString(R.string.toast_mute);
}else if(statusAction == API.StatusAction.UNMUTE){
message = context.getString(R.string.toast_unmute);
}else if(statusAction == API.StatusAction.MUTE_CONVERSATION){
message = context.getString(R.string.toast_mute_conversation);
}else if(statusAction == API.StatusAction.UNMUTE_CONVERSATION){
message = context.getString(R.string.toast_unmute_conversation);
}else if(statusAction == API.StatusAction.FOLLOW){
message = context.getString(R.string.toast_follow);
}else if(statusAction == API.StatusAction.UNFOLLOW){

View File

@ -31,6 +31,14 @@
android:id="@+id/action_copy_link"
android:title="@string/copy_link"
app:showAsAction="never" />
<item
android:id="@+id/action_mute_conversation"
android:title="@string/mute_conversation"
app:showAsAction="never" />
<item
android:id="@+id/action_mute"
android:title="@string/more_action_1"
app:showAsAction="never" />
<item
android:id="@+id/action_timed_mute"
android:title="@string/more_action_8"
@ -39,10 +47,7 @@
android:id="@+id/action_schedule_boost"
android:title="@string/schedule_boost"
app:showAsAction="never" />
<item
android:id="@+id/action_mute"
android:title="@string/more_action_1"
app:showAsAction="never" />
<item
android:id="@+id/action_block"
android:title="@string/more_action_2"

View File

@ -979,6 +979,10 @@
<string name="set_photo_editor">Enable photo editor</string>
<string name="add_poll_item">Add a poll item</string>
<string name="remove_poll_item">Remove last poll item</string>
<string name="mute_conversation">Mute conversation</string>
<string name="unmute_conversation">Unmute conversation</string>
<string name="toast_unmute_conversation">The conversation is no longer muted!</string>
<string name="toast_mute_conversation">The conversation is muted</string>
<plurals name="number_of_vote">
<item quantity="one">%d vote</item>
<item quantity="other">%d votes</item>