diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index cee24558fe4cc7f17b40e48b13ccf31e3c71f3c0..8dfcff0d8de59da7266fcfe9ca28a24362be2572 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -3471,11 +3471,14 @@ public class ConversationFragment extends XmppFragment private boolean showBlockSubmenu(View view) { final Jid jid = conversation.getJid(); - final boolean showReject = conversation.getContact().getOption(Contact.Options.PENDING_SUBSCRIPTION_REQUEST); + final int mode = conversation.getMode(); + final var contact = mode == Conversation.MODE_SINGLE ? conversation.getContact() : null; + final boolean showReject = contact.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.getMenu().findItem(R.id.add_contact).setVisible(!contact.showInRoster()); popupMenu.setOnMenuItemClickListener( menuItem -> { Blockable blockable; @@ -3485,6 +3488,9 @@ public class ConversationFragment extends XmppFragment conversation.getContact()); updateSnackBar(conversation); return true; + case R.id.add_contact: + mAddBackClickListener.onClick(view); + return true; case R.id.block_domain: blockable = conversation @@ -3524,8 +3530,8 @@ public class ConversationFragment extends XmppFragment && contact.getOption(Contact.Options.PENDING_SUBSCRIPTION_REQUEST)) { showSnackbar( R.string.contact_added_you, - R.string.add_back, - this.mAddBackClickListener, + R.string.options, + this.mBlockClickListener, this.mLongPressBlockListener); } else if (contact != null && contact.getOption(Contact.Options.PENDING_SUBSCRIPTION_REQUEST)) { @@ -3609,7 +3615,10 @@ public class ConversationFragment extends XmppFragment && !conversation.isBlocked() && conversation.isWithStranger()) { showSnackbar( - R.string.received_message_from_stranger, R.string.block, mBlockClickListener); + R.string.received_message_from_stranger, + R.string.options, + this.mBlockClickListener, + this.mLongPressBlockListener); } else { hideSnackbar(); } diff --git a/src/main/res/menu/block.xml b/src/main/res/menu/block.xml index 04adad9d91df2d6b849b657784543b86f7baa0a5..8dac13c22b3b47de044796c5b67c2c57ca9673f2 100644 --- a/src/main/res/menu/block.xml +++ b/src/main/res/menu/block.xml @@ -9,4 +9,7 @@ - \ No newline at end of file + + diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index b79402e33ea7cb969b1d6bda07947872785c0437..5a801f4584d8f1475c61c4022c4cbcb4b3aae191 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -1072,4 +1072,5 @@ Allow this app to show incoming call notifications that take up the full screen when the device is locked. Unsupported operation Send later + Options