Browse Source

Fix `_converse.api.user.login` to handle auto_login case

Also, set the resource in `setUserJID`
JC Brand 6 years ago
parent
commit
68d4a71c75
2 changed files with 14 additions and 9 deletions
  1. 10 8
      src/headless/converse-core.js
  2. 4 1
      src/headless/utils/core.js

+ 10 - 8
src/headless/converse-core.js

@@ -552,6 +552,10 @@ async function initUserSession (jid) {
 }
 
 function setUserJID (jid) {
+   if (!Strophe.getResourceFromJid(jid)) {
+      jid = jid.toLowerCase() + _converse.generateResource();
+   }
+   jid = jid.toLowerCase();
    initUserSession(jid);
    _converse.jid = jid;
    _converse.bare_jid = Strophe.getBareJidFromJid(jid);
@@ -1539,15 +1543,13 @@ _converse.api = {
                _converse.attemptPreboundSession(reconnecting);
             } else {
                let credentials;
-               if (jid) {
-                  const resource = Strophe.getResourceFromJid(jid);
-                  if (!resource) {
-                     jid = jid.toLowerCase() + _converse.generateResource();
-                  } else {
-                     jid = Strophe.getBareJidFromJid(jid).toLowerCase()+'/'+resource;
-                  }
-                  setUserJID(jid);
+               if (jid && password) {
                   credentials = {'jid': jid, 'password': password};
+               } else if (u.isValidJID(_converse.jid) && _converse.password) {
+                  credentials = {'jid': _converse.jid, 'password': _converse.password};
+               }
+               if (credentials && credentials.jid) {
+                  setUserJID(credentials.jid);
                }
                _converse.attemptNonPreboundSession(credentials, reconnecting);
             }

+ 4 - 1
src/headless/utils/core.js

@@ -74,7 +74,10 @@ u.prefixMentions = function (message) {
 };
 
 u.isValidJID = function (jid) {
-    return _.compact(jid.split('@')).length === 2 && !jid.startsWith('@') && !jid.endsWith('@');
+    if (_.isString(jid)) {
+        return _.compact(jid.split('@')).length === 2 && !jid.startsWith('@') && !jid.endsWith('@');
+    }
+    return false;
 };
 
 u.isValidMUCJID = function (jid) {