From 029fb6d60bdc9bb1a3ec34797916ab89960e708a Mon Sep 17 00:00:00 2001 From: JC Brand Date: Thu, 18 Oct 2018 00:09:36 +0200 Subject: [PATCH] Make sure we have a device to publish before doing so --- CHANGES.md | 1 + src/converse-omemo.js | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 4c02d4e73..026a32705 100644 --- a/CHANGES.md +++ b/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 diff --git a/src/converse-omemo.js b/src/converse-omemo.js index 6bfec1bbc..fbb53c796 100644 --- a/src/converse-omemo.js +++ b/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 () {