From 7a33471325e227a220af374007a7993a5088099a Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Sun, 16 Feb 2020 22:43:41 +0100 Subject: [PATCH] call onlineSetup method on initial connection --- .../smackx/messenger/Messenger.java | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/smack-messenger/src/main/java/org/jivesoftware/smackx/messenger/Messenger.java b/smack-messenger/src/main/java/org/jivesoftware/smackx/messenger/Messenger.java index 1fc04ee81..571dc38f8 100644 --- a/smack-messenger/src/main/java/org/jivesoftware/smackx/messenger/Messenger.java +++ b/smack-messenger/src/main/java/org/jivesoftware/smackx/messenger/Messenger.java @@ -4,6 +4,7 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; +import org.jivesoftware.smack.AbstractConnectionListener; import org.jivesoftware.smack.ReconnectionManager; import org.jivesoftware.smack.SmackException; import org.jivesoftware.smack.XMPPConnection; @@ -51,6 +52,21 @@ public class Messenger implements ClientStateListener { offlineAccountSetup(xmppAccount); + connection.addConnectionListener(new AbstractConnectionListener() { + @Override + public void authenticated(XMPPConnection connection, boolean resumed) { + if (resumed) { + return; + } + + try { + onlineAccountSetup(xmppAccount); + } catch (InterruptedException | XMPPException | SmackException e) { + e.printStackTrace(); + } + } + }); + return xmppAccount; } @@ -61,11 +77,12 @@ public class Messenger implements ClientStateListener { private void onlineAccountSetup(XmppAccount account) throws InterruptedException, XMPPException, SmackException { - if (CarbonManager.getInstanceFor(account.getConnection()).isSupportedByServer()) { - CarbonManager.getInstanceFor(account.getConnection()).enableCarbons(); - } - + // Enable Carbons + CarbonManager carbonManager = CarbonManager.getInstanceFor(account.getConnection()); + if (carbonManager.isSupportedByServer()) { + carbonManager.enableCarbons(); + } } @Override