diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java index f9a57546566b6b26bde0d21c978afb15a212681a..fa85256adac2d00ddf3b9ea9e26be0315ec749d1 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java @@ -1015,16 +1015,18 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_conversations, menu); final MenuItem qrCodeScanMenuItem = menu.findItem(R.id.action_scan_qr_code); + final var reportSpamItem = menu.findItem(R.id.action_report_spam); + final var fragment = getFragmentManager().findFragmentById(R.id.main_fragment); + final var overview = fragment instanceof ConversationsOverviewFragment; if (qrCodeScanMenuItem != null) { if (isCameraFeatureAvailable() && (xmppConnectionService == null || !xmppConnectionService.isOnboarding())) { - Fragment fragment = getFragmentManager().findFragmentById(R.id.main_fragment); - boolean visible = getResources().getBoolean(R.bool.show_qr_code_scan) - && fragment instanceof ConversationsOverviewFragment; + final var visible = getResources().getBoolean(R.bool.show_qr_code_scan) && overview; qrCodeScanMenuItem.setVisible(visible); } else { qrCodeScanMenuItem.setVisible(false); } } + reportSpamItem.setVisible(overview && mainFilter == DRAWER_CHAT_REQUESTS); return super.onCreateOptionsMenu(menu); } @@ -1181,7 +1183,7 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio case R.id.action_search_all_conversations: startActivity(new Intent(this, SearchActivity.class)); return true; - case R.id.action_search_this_conversation: + case R.id.action_search_this_conversation: { final Conversation conversation = ConversationFragment.getConversation(this); if (conversation == null) { return true; @@ -1190,6 +1192,22 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio intent.putExtra(SearchActivity.EXTRA_CONVERSATION_UUID, conversation.getUuid()); startActivity(intent); return true; + } + case R.id.action_report_spam: { + final var list = new ArrayList(); + populateWithOrderedConversations(list, true, false); + new AlertDialog.Builder(this) + .setTitle(R.string.report_spam) + .setMessage("Do you really want to block all these users and report as SPAM?") + .setPositiveButton(R.string.yes, (dialog, whichButton) -> { + for (final var conversation : list) { + final var m = conversation.getLatestMessage(); + xmppConnectionService.sendBlockRequest(conversation, true, m == null ? null : m.getServerMsgId()); + } + }) + .setNegativeButton(R.string.no, null).show(); + return true; + } } return super.onOptionsItemSelected(item); } diff --git a/src/main/res/menu/activity_conversations.xml b/src/main/res/menu/activity_conversations.xml index a5e1390f024e41489a898380ed7fb74e2abac44c..88276f1be8cdd561cb1b7e1bc6160b124efaa509 100644 --- a/src/main/res/menu/activity_conversations.xml +++ b/src/main/res/menu/activity_conversations.xml @@ -22,4 +22,11 @@ android:title="@string/scan_qr_code" android:visible="@bool/show_qr_code_scan" app:showAsAction="always" /> +