do not include read only chats in contact chooser. fixes #3077

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/entities/Conversation.java                |  2 
src/main/java/eu/siacs/conversations/services/ContactChooserTargetService.java | 11 
2 files changed, 9 insertions(+), 4 deletions(-)

Detailed changes

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) {

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) {
 		}