diff options
Diffstat (limited to '')
-rw-r--r-- | src/main/java/de/pixart/messenger/ui/BlockContactDialog.java | 7 | ||||
-rw-r--r-- | src/main/java/de/pixart/messenger/ui/util/MucDetailsContextMenuHelper.java | 19 |
2 files changed, 21 insertions, 5 deletions
diff --git a/src/main/java/de/pixart/messenger/ui/BlockContactDialog.java b/src/main/java/de/pixart/messenger/ui/BlockContactDialog.java index 80b6f26cc..011480992 100644 --- a/src/main/java/de/pixart/messenger/ui/BlockContactDialog.java +++ b/src/main/java/de/pixart/messenger/ui/BlockContactDialog.java @@ -1,11 +1,12 @@ package de.pixart.messenger.ui; -import androidx.databinding.DataBindingUtil; -import androidx.annotation.StringRes; -import androidx.appcompat.app.AlertDialog; import android.view.View; import android.widget.Toast; +import androidx.annotation.StringRes; +import androidx.appcompat.app.AlertDialog; +import androidx.databinding.DataBindingUtil; + import de.pixart.messenger.R; import de.pixart.messenger.databinding.DialogBlockContactBinding; import de.pixart.messenger.entities.Blockable; diff --git a/src/main/java/de/pixart/messenger/ui/util/MucDetailsContextMenuHelper.java b/src/main/java/de/pixart/messenger/ui/util/MucDetailsContextMenuHelper.java index a58f683d3..a38286a96 100644 --- a/src/main/java/de/pixart/messenger/ui/util/MucDetailsContextMenuHelper.java +++ b/src/main/java/de/pixart/messenger/ui/util/MucDetailsContextMenuHelper.java @@ -24,6 +24,7 @@ import de.pixart.messenger.entities.Contact; import de.pixart.messenger.entities.Conversation; import de.pixart.messenger.entities.MucOptions; import de.pixart.messenger.entities.MucOptions.User; +import de.pixart.messenger.entities.RawBlockable; import de.pixart.messenger.services.XmppConnectionService; import de.pixart.messenger.ui.ConferenceDetailsActivity; import de.pixart.messenger.ui.ConversationFragment; @@ -76,6 +77,7 @@ public final class MucDetailsContextMenuHelper { title.setVisible(false); } MenuItem sendPrivateMessage = menu.findItem(R.id.send_private_message); + MenuItem blockUnblockMUCUser = menu.findItem(R.id.context_muc_contact_block_unblock); if (user != null && user.getRealJid() != null) { MenuItem showContactDetails = menu.findItem(R.id.action_contact_details); MenuItem startConversation = menu.findItem(R.id.start_conversation); @@ -152,9 +154,11 @@ public final class MucDetailsContextMenuHelper { managePermissions.setVisible(managePermissionsVisible); sendPrivateMessage.setVisible(true); sendPrivateMessage.setEnabled(mucOptions.allowPm()); + blockUnblockMUCUser.setVisible(true); } else { sendPrivateMessage.setVisible(true); sendPrivateMessage.setEnabled(user != null && mucOptions.allowPm() && user.getRole().ranks(MucOptions.Role.VISITOR)); + blockUnblockMUCUser.setVisible(user != null); } } @@ -218,6 +222,15 @@ public final class MucDetailsContextMenuHelper { activity.xmppConnectionService.invite(conversation, jid); } return true; + case R.id.context_muc_contact_block_unblock: + try { + activity.xmppConnectionService.sendBlockRequest(new RawBlockable(account, user.getFullJid()), false); + activity.xmppConnectionService.leaveMuc(conversation); + activity.xmppConnectionService.joinMuc(conversation); + } catch (Exception e) { + e.printStackTrace(); + } + return true; case R.id.highlight_in_muc: activity.highlightInMuc(conversation, user.getName()); return true; @@ -226,7 +239,8 @@ public final class MucDetailsContextMenuHelper { } } - private static void kickFromRoom(final User user, XmppActivity activity, XmppConnectionService.OnAffiliationChanged onAffiliationChanged) { + private static void kickFromRoom(final User user, XmppActivity + activity, XmppConnectionService.OnAffiliationChanged onAffiliationChanged) { final Conversation conversation = user.getConversation(); AlertDialog.Builder builder = new AlertDialog.Builder(activity); builder.setTitle(R.string.kick_from_conference); @@ -252,7 +266,8 @@ public final class MucDetailsContextMenuHelper { builder.create().show(); } - private static void banFromRoom(final User user, XmppActivity activity, XmppConnectionService.OnAffiliationChanged onAffiliationChanged) { + private static void banFromRoom(final User user, XmppActivity + activity, XmppConnectionService.OnAffiliationChanged onAffiliationChanged) { final Conversation conversation = user.getConversation(); AlertDialog.Builder builder = new AlertDialog.Builder(activity); builder.setTitle(R.string.ban_from_conference); |