diff --git a/src/main/java/eu/siacs/conversations/entities/MucOptions.java b/src/main/java/eu/siacs/conversations/entities/MucOptions.java index fa6afcfae..29b948502 100644 --- a/src/main/java/eu/siacs/conversations/entities/MucOptions.java +++ b/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); + } } } diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index c1bd59e9e..2fb13ce85 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/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(); } } };