Selaa lähdekoodia

Make sure we have a device to publish before doing so

JC Brand 6 vuotta sitten
vanhempi
commit
029fb6d60b
2 muutettua tiedostoa jossa 14 lisäystä ja 13 poistoa
  1. 1 0
      CHANGES.md
  2. 13 13
      src/converse-omemo.js

+ 1 - 0
CHANGES.md

@@ -2,6 +2,7 @@
 
 ## 4.0.3 (Unreleased)
 
+- Bugfix. Converse continuously publishes an empty OMEMO devicelist for itself
 - Bugfix. Handler not triggered when submitting MUC password form 2nd time
 - Bugfix. MUC features weren't being refreshed when saving the config form
 - Don't show duplicate notification messages

+ 13 - 13
src/converse-omemo.js

@@ -855,8 +855,7 @@
                                     if (collection.length === 0) {
                                         this.fetchDevicesFromServer()
                                             .then(ids => this.publishCurrentDevice(ids))
-                                            .then(resolve)
-                                            .catch(resolve);
+                                            .finally(resolve)
                                     } else {
                                         resolve();
                                     }
@@ -867,20 +866,21 @@
                     return this._devices_promise;
                 },
 
-                publishCurrentDevice (device_ids) {
+                async publishCurrentDevice (device_ids) {
                     if (this.get('jid') !== _converse.bare_jid) {
                         // We only publish for ourselves.
-                        return Promise.resolve();
+                        return
+                    }
+                    await restoreOMEMOSession();
+                    let device_id = _converse.omemo_store.get('device_id');
+                    if (!this.devices.findWhere({'id': device_id})) {
+                        // Generate a new bundle if we cannot find our device
+                        await _converse.omemo_store.generateBundle();
+                        device_id = _converse.omemo_store.get('device_id');
+                    }
+                    if (!_.includes(device_ids, device_id)) {
+                        return this.publishDevices();
                     }
-                    return restoreOMEMOSession()
-                        .then(() => {
-                            const device_id = _converse.omemo_store.get('device_id'),
-                                  own_device = this.devices.findWhere({'id': device_id});
-
-                            if (!_.includes(device_ids, device_id)) {
-                                return this.publishDevices();
-                            }
-                        });
                 },
 
                 fetchDevicesFromServer () {