From f434925753adeef37f1ed2cf621f437fb55edda9 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sat, 16 Jun 2018 19:00:23 +0200 Subject: [PATCH] do not include read only chats in contact chooser. fixes #3077 --- .../eu/siacs/conversations/entities/Conversation.java | 2 +- .../services/ContactChooserTargetService.java | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/entities/Conversation.java b/src/main/java/eu/siacs/conversations/entities/Conversation.java index bfee87f2d..3b3d3d900 100644 --- a/src/main/java/eu/siacs/conversations/entities/Conversation.java +++ b/src/main/java/eu/siacs/conversations/entities/Conversation.java @@ -903,7 +903,7 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl return count; } - private int sentMessagesCount() { + public int sentMessagesCount() { int count = 0; synchronized (this.messages) { for (Message message : messages) { diff --git a/src/main/java/eu/siacs/conversations/services/ContactChooserTargetService.java b/src/main/java/eu/siacs/conversations/services/ContactChooserTargetService.java index 72e87db4d..0cb557d18 100644 --- a/src/main/java/eu/siacs/conversations/services/ContactChooserTargetService.java +++ b/src/main/java/eu/siacs/conversations/services/ContactChooserTargetService.java @@ -44,14 +44,19 @@ public class ContactChooserTargetService extends ChooserTargetService implements mXmppConnectionService.populateWithOrderedConversations(conversations, false); final ComponentName componentName = new ComponentName(this, ShareWithActivity.class); final int pixel = (int) (48 * getResources().getDisplayMetrics().density); - for(int i = 0; i < Math.min(conversations.size(),MAX_TARGETS); ++i) { - final Conversation conversation = conversations.get(i); + for(Conversation conversation : conversations) { + if (conversation.sentMessagesCount() == 0) { + continue; + } final String name = conversation.getName().toString(); final Icon icon = Icon.createWithBitmap(mXmppConnectionService.getAvatarService().get(conversation, pixel)); - final float score = 1 - (1.0f / MAX_TARGETS) * i; + final float score = 1 - (1.0f / MAX_TARGETS) * chooserTargets.size(); final Bundle extras = new Bundle(); extras.putString("uuid", conversation.getUuid()); chooserTargets.add(new ChooserTarget(name, icon, score, componentName, extras)); + if (chooserTargets.size() >= MAX_TARGETS) { + break; + } } } catch (InterruptedException e) { }