From 6928a16f16b04db609bc6d9a9c758c6f6277075f Mon Sep 17 00:00:00 2001 From: tom79 Date: Thu, 6 Jun 2019 18:16:43 +0200 Subject: [PATCH] Allow to mute a conversation --- .../java/app/fedilab/android/client/API.java | 8 ++++ .../android/drawers/StatusListAdapter.java | 38 +++++++++++++++++-- .../app/fedilab/android/helper/Helper.java | 4 ++ app/src/main/res/menu/option_toot.xml | 13 +++++-- app/src/main/res/values/strings.xml | 4 ++ 5 files changed, 60 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/client/API.java b/app/src/main/java/app/fedilab/android/client/API.java index f96e75063..4e653e84f 100644 --- a/app/src/main/java/app/fedilab/android/client/API.java +++ b/app/src/main/java/app/fedilab/android/client/API.java @@ -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; diff --git a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java index 4e3839b34..908664bcf 100644 --- a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java @@ -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){ diff --git a/app/src/main/java/app/fedilab/android/helper/Helper.java b/app/src/main/java/app/fedilab/android/helper/Helper.java index 728deaf4c..74cc43936 100644 --- a/app/src/main/java/app/fedilab/android/helper/Helper.java +++ b/app/src/main/java/app/fedilab/android/helper/Helper.java @@ -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){ diff --git a/app/src/main/res/menu/option_toot.xml b/app/src/main/res/menu/option_toot.xml index 240fe9b31..e0b1d0f3f 100644 --- a/app/src/main/res/menu/option_toot.xml +++ b/app/src/main/res/menu/option_toot.xml @@ -31,6 +31,14 @@ android:id="@+id/action_copy_link" android:title="@string/copy_link" app:showAsAction="never" /> + + - + Enable photo editor Add a poll item Remove last poll item + Mute conversation + Unmute conversation + The conversation is no longer muted! + The conversation is muted %d vote %d votes