JC Brand 4 주 전
부모
커밋
eae3a77cd0

+ 1 - 1
src/headless/plugins/bookmarks/collection.js

@@ -244,7 +244,7 @@ class Bookmarks extends Collection {
     async setBookmarksFromStanza(stanza) {
         const bookmarks = await parseStanzaForBookmarks(stanza);
         bookmarks.forEach(
-            /** @param {import('./types.js').BookmarkAttrs} attrs */
+            /** @param {import('./types.ts').BookmarkAttrs} attrs */
             (attrs) => {
                 const bookmark = this.get(attrs.jid);
                 bookmark ? bookmark.save(attrs) : this.create(attrs);

+ 10 - 2
src/headless/plugins/pubsub/api.js

@@ -281,7 +281,7 @@ export default {
          */
         async subscriptions(jid, node) {
             const service = jid || (await api.disco.entities.find(Strophe.NS.PUBSUB));
-            const own_jid = _converse.session.get('jid');
+            const own_jid = _converse.session.get('bare_jid');
             const iq = stx`
                 <iq xmlns="jabber:client"
                     type="get"
@@ -291,7 +291,15 @@ export default {
                     <subscriptions${node ? ` node="${node}"` : ''}/>
                   </pubsub>
                 </iq>`;
-            const response = await api.sendIQ(iq);
+
+            let response;
+            try {
+                response = await api.sendIQ(iq);
+            } catch (e) {
+                log.warn(e);
+                return [];
+            }
+
             const subs_el = response.querySelector('pubsub subscriptions');
             if (!subs_el) return [];
 

+ 17 - 0
src/headless/plugins/pubsub/index.js

@@ -6,8 +6,11 @@
 import _converse from '../../shared/_converse.js';
 import converse from '../../shared/api/public.js';
 import pubsub_api from './api.js';
+import { default as PubSubNode } from './node.js';
+import { default as PubSubNodes } from './nodes.js';
 import '../disco/index.js';
 
+
 const { Strophe, sizzle } = converse.env;
 
 Strophe.addNamespace('PUBSUB_ERROR', Strophe.NS.PUBSUB + '#errors');
@@ -18,6 +21,18 @@ converse.plugins.add('converse-pubsub', {
     initialize() {
         const { api } = _converse;
         Object.assign(_converse.api, pubsub_api);
+        Object.assign(_converse.exports, { PubSubNodes });
+
+        api.listen.on('connected', () => {
+            const pubsub_nodes = new _converse.exports.PubSubNodes();
+            Object.assign(_converse.state, { pubsub_nodes });
+            /**
+             * @event _converse#pubSubNodesInitialized
+             * @example _converse.api.listen.on('pubSubInitialized', () => { ... });
+             * @example _converse.api.waitUntil('pubSubInitialized').then(() => { ... });
+             */
+            api.trigger('pubSubNodesInitialized');
+        });
 
         api.listen.on(
             'parseErrorStanza',
@@ -38,3 +53,5 @@ converse.plugins.add('converse-pubsub', {
         );
     },
 });
+
+export { PubSubNode, PubSubNodes };

+ 3 - 1
src/headless/types/plugins/pubsub/index.d.ts

@@ -1,2 +1,4 @@
-export {};
+import { default as PubSubNode } from './node.js';
+import { default as PubSubNodes } from './nodes.js';
+export { PubSubNode, PubSubNodes };
 //# sourceMappingURL=index.d.ts.map