aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/ui/ConversationFragment.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2018-11-23 14:25:21 +0100
committerChristian Schneppe <christian@pix-art.de>2018-11-23 14:25:21 +0100
commite8f0927a8d64f96bde5917ef12ccb6b7d1fe0f52 (patch)
tree78875bbab6fd93fae07897ee0b3095c2c16e8382 /src/main/java/de/pixart/messenger/ui/ConversationFragment.java
parent6969b92ac1d58617aca868d4f484b50515a516a5 (diff)
provide option to reject subscription request when long pressing 'allow'
Diffstat (limited to 'src/main/java/de/pixart/messenger/ui/ConversationFragment.java')
-rw-r--r--src/main/java/de/pixart/messenger/ui/ConversationFragment.java41
1 files changed, 22 insertions, 19 deletions
diff --git a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java
index 69aa51918..cebc0f189 100644
--- a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java
+++ b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java
@@ -2332,25 +2332,28 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
private boolean showBlockSubmenu(View view) {
final Jid jid = conversation.getJid();
- if (jid.getLocal() == null) {
- BlockContactDialog.show(activity, conversation);
- } else {
- PopupMenu popupMenu = new PopupMenu(getActivity(), view);
- popupMenu.inflate(R.menu.block);
- popupMenu.setOnMenuItemClickListener(menuItem -> {
- Blockable blockable;
- switch (menuItem.getItemId()) {
- case R.id.block_domain:
- blockable = conversation.getAccount().getRoster().getContact(Jid.ofDomain(jid.getDomain()));
- break;
- default:
- blockable = conversation;
- }
- BlockContactDialog.show(activity, blockable);
- return true;
- });
- popupMenu.show();
- }
+ final boolean showReject = !conversation.isWithStranger() && conversation.getContact().getOption(Contact.Options.PENDING_SUBSCRIPTION_REQUEST);
+ PopupMenu popupMenu = new PopupMenu(getActivity(), view);
+ popupMenu.inflate(R.menu.block);
+ popupMenu.getMenu().findItem(R.id.block_contact).setVisible(jid.getLocal() != null);
+ popupMenu.getMenu().findItem(R.id.reject).setVisible(showReject);
+ popupMenu.setOnMenuItemClickListener(menuItem -> {
+ Blockable blockable;
+ switch (menuItem.getItemId()) {
+ case R.id.reject:
+ activity.xmppConnectionService.stopPresenceUpdatesTo(conversation.getContact());
+ updateSnackBar(conversation);
+ return true;
+ case R.id.block_domain:
+ blockable = conversation.getAccount().getRoster().getContact(Jid.ofDomain(jid.getDomain()));
+ break;
+ default:
+ blockable = conversation;
+ }
+ BlockContactDialog.show(activity, blockable);
+ return true;
+ });
+ popupMenu.show();
return true;
}