Bladeren bron

Bugfix. Fix check for debounced reconnection

JC Brand 6 jaren geleden
bovenliggende
commit
778b4ff131
1 gewijzigde bestanden met toevoegingen van 9 en 7 verwijderingen
  1. 9 7
      src/headless/converse-core.js

+ 9 - 7
src/headless/converse-core.js

@@ -496,7 +496,7 @@ function reconnect () {
 
     _converse.connection.reconnecting = true;
     tearDown();
-    _converse.api.user.login(null, null, true);
+    return _converse.api.user.login(null, null, true);
 }
 
 const debouncedReconnect = _.debounce(reconnect, 2000);
@@ -620,6 +620,7 @@ async function onConnected (reconnecting) {
     /* Called as soon as a new connection has been established, either
      * by logging in or by attaching to an existing BOSH session.
      */
+    delete _converse.connection.reconnecting;
     _converse.connection.flush(); // Solves problem of returned PubSub BOSH response not received by browser
     await setUserJID(_converse.connection.jid);
     /**
@@ -1371,6 +1372,11 @@ _converse.api = {
          */
         async reconnect () {
             const conn_status = _converse.connfeedback.get('connection_status');
+
+            if (_converse.authentication === _converse.ANONYMOUS) {
+                tearDown();
+                clearSession();
+            }
             if (conn_status === Strophe.Status.CONNFAIL) {
                 // When reconnecting with a new transport, we call setUserJID
                 // so that a new resource is generated, to avoid multiple
@@ -1388,8 +1394,6 @@ _converse.api = {
                         // When reconnecting anonymously, we need to connect with only
                         // the domain, not the full JID that we had in our previous
                         // (now failed) session.
-                        tearDown();
-                        clearSession();
                         await setUserJID(_converse.settings.jid);
                     } else {
                         await setUserJID(_converse.bare_jid);
@@ -1403,14 +1407,12 @@ _converse.api = {
                 // When reconnecting anonymously, we need to connect with only
                 // the domain, not the full JID that we had in our previous
                 // (now failed) session.
-                tearDown();
-                clearSession();
                 await setUserJID(_converse.settings.jid);
             }
-            if ([Strophe.Status.RECONNECTING, Strophe.Status.CONNFAIL].includes(conn_status)) {
+            if (_converse.connection.reconnecting) {
                 debouncedReconnect();
             } else {
-                reconnect();
+                return reconnect();
             }
         },