don't add outcasts or non-members in members-only rooms back to list

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/entities/MucOptions.java            | 5 
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 6 
2 files changed, 7 insertions(+), 4 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/entities/MucOptions.java 🔗

@@ -435,7 +435,10 @@ public class MucOptions {
 			if (old != null) {
 				users.remove(old);
 			}
-			this.users.add(user);
+			if ((!membersOnly() || user.getAffiliation().ranks(Affiliation.MEMBER))
+					&& user.getAffiliation().outranks(Affiliation.OUTCAST)){
+				this.users.add(user);
+			}
 		}
 	}
 

src/main/java/eu/siacs/conversations/services/XmppConnectionService.java 🔗

@@ -2128,9 +2128,6 @@ public class XmppConnectionService extends Service {
 							MucOptions.User user = AbstractParser.parseItem(conversation,child);
 							if (!user.realJidMatchesAccount()) {
 								conversation.getMucOptions().addUser(user);
-								getAvatarService().clear(conversation);
-								updateMucRosterUi();
-								updateConversationUi();
 							}
 						}
 					}
@@ -2140,6 +2137,9 @@ public class XmppConnectionService extends Service {
 				++i;
 				if (i >= affiliations.length) {
 					Log.d(Config.LOGTAG,account.getJid().toBareJid()+": retrieved members for "+conversation.getJid().toBareJid()+": "+conversation.getMucOptions().getMembers());
+					getAvatarService().clear(conversation);
+					updateMucRosterUi();
+					updateConversationUi();
 				}
 			}
 		};