JC Brand пре 1 година
родитељ
комит
2c0f2fccd9

+ 2 - 0
src/headless/plugins/bookmarks/utils.js

@@ -6,6 +6,8 @@ const { Strophe, sizzle } = converse.env;
 
 export async function checkBookmarksSupport () {
     const bare_jid = _converse.session.get('bare_jid');
+    if (!bare_jid) return false;
+
     const identity = await api.disco.getIdentity('pubsub', 'pep', bare_jid);
     if (api.settings.get('allow_public_bookmarks')) {
         return !!identity;

+ 2 - 1
src/headless/plugins/ping/tests/ping.js

@@ -30,7 +30,8 @@ describe("XMPP Ping", function () {
                 `</iq>`);
         }));
 
-        it("is not sent out if we're not connected", mock.initConverse(async (_converse) => {
+        it("is not sent out if we're not connected", mock.initConverse(
+                [], {auto_login: false}, async (_converse) => {
             spyOn(_converse.api.connection.get(), 'send');
             expect(await _converse.api.ping()).toBe(null);
             expect(_converse.api.connection.get().send.calls.count()).toBe(0);

+ 8 - 1
src/headless/shared/_converse.js

@@ -77,8 +77,9 @@ class ConversePrivateGlobal extends EventEmitter(Object) {
         this.VERSION_NAME = VERSION_NAME;
 
         this.templates = {};
+
         this.promises = {
-            'initialized': getOpenPromise()
+            'initialized': getOpenPromise(),
         };
 
         this.DEFAULT_IMAGE_TYPE = DEFAULT_IMAGE_TYPE;
@@ -115,6 +116,12 @@ class ConversePrivateGlobal extends EventEmitter(Object) {
     initSession () {
         this.session?.destroy();
         this.session = new Model();
+
+        // TODO: DEPRECATED
+        delete this.jid;
+        delete this.bare_jid;
+        delete this.domain;
+        delete this.resource;
     }
 
     /**

+ 0 - 1
src/headless/shared/api/user.js

@@ -88,7 +88,6 @@ export default {
             const complete = () => {
                 // Recreate all the promises
                 Object.keys(_converse.promises).forEach(replacePromise);
-                delete _converse.jid
 
                 // Remove the session JID, otherwise the user would just be logged
                 // in again upon reload. See #2759

+ 5 - 2
src/headless/shared/settings/utils.js

@@ -123,6 +123,9 @@ export async function updateUserSettings (data, options) {
 }
 
 export async function clearUserSettings () {
-    await initUserSettings();
-    return user_settings.clear();
+    if (_converse.bare_jid) {
+        await initUserSettings();
+        return user_settings.clear();
+    }
+    user_settings = undefined;
 }

+ 7 - 10
src/headless/utils/init.js

@@ -132,17 +132,14 @@ function saveJIDtoSession (_converse, jid) {
         jid = jid.toLowerCase() + Connection.generateResource();
     }
 
+    const bare_jid = Strophe.getBareJidFromJid(jid);
+    const resource = Strophe.getResourceFromJid(jid);
+    const domain = Strophe.getDomainFromJid(jid);
+
     // TODO: Storing directly on _converse is deprecated
-    _converse.jid = jid;
-    _converse.bare_jid = Strophe.getBareJidFromJid(jid);
-    _converse.resource = Strophe.getResourceFromJid(jid);
-    _converse.domain = Strophe.getDomainFromJid(jid);
-
-    _converse.session.save({
-       'jid': jid,
-       'bare_jid': _converse.bare_jid,
-       'resource': _converse.resource,
-       'domain': _converse.domain,
+    Object.assign(_converse, { jid, bare_jid, resource, domain });
+
+    _converse.session.save({ jid, bare_jid, resource, domain,
         // We use the `active` flag to determine whether we should use the values from sessionStorage.
         // When "cloning" a tab (e.g. via middle-click), the `active` flag will be set and we'll create
         // a new empty user session, otherwise it'll be false and we can re-use the user session.

+ 1 - 1
src/headless/utils/session.js

@@ -100,8 +100,8 @@ export async function tearDown () {
 
 
 export function clearSession () {
-    _converse.initSession();
     shouldClearCache() && _converse.api.user.settings.clear();
+    _converse.initSession();
     /**
      * Synchronouse event triggered once the user session has been cleared,
      * for example when the user has logged out or when Converse has

+ 1 - 2
src/shared/tests/mock.js

@@ -711,8 +711,7 @@ async function _initConverse (settings) {
     }
 
     if (settings?.auto_login !== false) {
-        _converse.api.user.login('romeo@montague.lit/orchard', 'secret');
-        await _converse.api.waitUntil('afterResourceBinding');
+        await _converse.api.user.login('romeo@montague.lit/orchard', 'secret');
     }
     window.converse_disable_effects = true;
     return _converse;