Ability to block MUC avatar

Stephen Paul Weber created

Change summary

src/cheogram/res/menu/conference_photo.xml                             |  6 
src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java | 25 
2 files changed, 31 insertions(+)

Detailed changes

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

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:id="@+id/action_block_avatar"
+        android:title="Block Avatar" />
+</menu>

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

@@ -20,6 +20,7 @@ import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.widget.ArrayAdapter;
+import android.widget.PopupMenu;
 import android.widget.TextView;
 import android.widget.Toast;
 
@@ -231,6 +232,30 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
             intent.putExtra("uuid", mConversation.getUuid());
             startActivity(intent);
         });
+        this.binding.yourPhoto.setOnLongClickListener(v -> {
+            PopupMenu popupMenu = new PopupMenu(this, v);
+            popupMenu.inflate(R.menu.conference_photo);
+            popupMenu.setOnMenuItemClickListener(menuItem -> {
+                switch (menuItem.getItemId()) {
+                    case R.id.action_block_avatar:
+                        new AlertDialog.Builder(this)
+                            .setTitle(R.string.block_media)
+                            .setMessage("Do you really want to block this avatar?")
+                            .setPositiveButton(R.string.yes, (dialog, whichButton) -> {
+                                    xmppConnectionService.blockMedia(xmppConnectionService.getFileBackend().getAvatarFile(mConversation.getContact().getAvatarFilename()));
+                                    xmppConnectionService.getFileBackend().getAvatarFile(mConversation.getContact().getAvatarFilename()).delete();
+                                    avatarService().clear(mConversation);
+                                    mConversation.getContact().setAvatar(null);
+                                    xmppConnectionService.updateConversationUi();
+                            })
+                            .setNegativeButton(R.string.no, null).show();
+                        return true;
+                }
+                return true;
+            });
+            popupMenu.show();
+            return true;
+        });
         this.binding.editMucNameButton.setOnClickListener(this::onMucEditButtonClicked);
         this.binding.mucEditTitle.addTextChangedListener(this);
         this.binding.mucEditSubject.addTextChangedListener(this);