Ability to block any conversation avatar

Stephen Paul Weber created

Change summary

src/cheogram/res/menu/conversations.xml                           |  5 
src/main/java/eu/siacs/conversations/ui/ConversationFragment.java | 17 
2 files changed, 18 insertions(+), 4 deletions(-)

Detailed changes

src/cheogram/res/menu/conversations.xml 🔗

@@ -31,6 +31,11 @@
         android:orderInCategory="40"
         android:title="@string/action_muc_details"
         app:showAsAction="never" />
+    <item
+        android:id="@+id/action_block_avatar"
+        android:orderInCategory="50"
+        android:title="Block Avatar"
+        app:showAsAction="never" />
     <item
         android:id="@+id/action_archive"
         android:orderInCategory="60"

src/main/java/eu/siacs/conversations/ui/ConversationFragment.java 🔗

@@ -1975,10 +1975,7 @@ public class ConversationFragment extends XmppFragment
                 break;
             case R.id.action_block:
             case R.id.action_unblock:
-                final Activity activity = getActivity();
-                if (activity instanceof XmppActivity) {
-                    BlockContactDialog.show((XmppActivity) activity, conversation);
-                }
+                BlockContactDialog.show(activity, conversation);
                 break;
             case R.id.action_audio_call:
                 checkPermissionAndTriggerAudioCall();
@@ -1995,6 +1992,18 @@ public class ConversationFragment extends XmppFragment
             case R.id.action_add_shortcut:
                 addShortcut();
                 break;
+            case R.id.action_block_avatar:
+                new AlertDialog.Builder(activity)
+                    .setTitle(R.string.block_media)
+                    .setMessage("Do you really want to block this avatar?")
+                    .setPositiveButton(R.string.yes, (dialog, whichButton) -> {
+                            activity.xmppConnectionService.blockMedia(activity.xmppConnectionService.getFileBackend().getAvatarFile(conversation.getContact().getAvatarFilename()));
+                            activity.xmppConnectionService.getFileBackend().getAvatarFile(conversation.getContact().getAvatarFilename()).delete();
+                            activity.avatarService().clear(conversation);
+                            conversation.getContact().setAvatar(null);
+                            activity.xmppConnectionService.updateConversationUi();
+                    })
+                    .setNegativeButton(R.string.no, null).show();
             case R.id.action_refresh_feature_discovery:
                 refreshFeatureDiscovery();
                 break;