don't push default muc conf twice

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/entities/MucOptions.java            | 10 
src/main/java/eu/siacs/conversations/parser/PresenceParser.java          |  2 
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java |  3 
3 files changed, 14 insertions(+), 1 deletion(-)

Detailed changes

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

@@ -18,6 +18,8 @@ import eu.siacs.conversations.xmpp.pep.Avatar;
 @SuppressLint("DefaultLocale")
 public class MucOptions {
 
+	private boolean mAutoPushConfiguration = true;
+
 	public Account getAccount() {
 		return this.conversation.getAccount();
 	}
@@ -39,6 +41,14 @@ public class MucOptions {
 		}
 	}
 
+	public void flagNoAutoPushConfiguration() {
+		mAutoPushConfiguration = false;
+	}
+
+	public boolean autoPushConfiguration() {
+		return mAutoPushConfiguration;
+	}
+
 	public enum Affiliation {
 		OWNER("owner", 4, R.string.owner),
 		ADMIN("admin", 3, R.string.admin),

src/main/java/eu/siacs/conversations/parser/PresenceParser.java 🔗

@@ -78,7 +78,7 @@ public class PresenceParser extends AbstractParser implements
 						} else {
 							mucOptions.addUser(user);
 						}
-						if (codes.contains(MucOptions.STATUS_CODE_ROOM_CREATED)) {
+						if (codes.contains(MucOptions.STATUS_CODE_ROOM_CREATED) && mucOptions.autoPushConfiguration()) {
 							Log.d(Config.LOGTAG,mucOptions.getAccount().getJid().toBareJid()
 									+": room '"
 									+mucOptions.getConversation().getJid().toBareJid()

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

@@ -1832,6 +1832,9 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
 		account.pendingConferenceLeaves.remove(conversation);
 		if (account.getStatus() == Account.State.ONLINE) {
 			conversation.resetMucOptions();
+			if (onConferenceJoined != null) {
+				conversation.getMucOptions().flagNoAutoPushConfiguration();
+			}
 			conversation.setHasMessagesLeftOnServer(false);
 			fetchConferenceConfiguration(conversation, new OnConferenceConfigurationFetched() {