Commit c32ecb7e authored by JC Brand's avatar JC Brand

Refactor `fetchDevices` to make it smaller and simpler to read

parent 1b08df89
...@@ -950,29 +950,28 @@ converse.plugins.add('converse-omemo', { ...@@ -950,29 +950,28 @@ converse.plugins.add('converse-omemo', {
this.fetchDevices(); this.fetchDevices();
}, },
async onDevicesFound (collection) {
if (collection.length === 0) {
let ids;
try {
ids = await this.fetchDevicesFromServer()
} catch (e) {
_converse.log(`Could not fetch devices for ${this.get('jid')}`);
_converse.log(e, Strophe.LogLevel.ERROR);
this.destroy();
}
if (this.get('jid') === _converse.bare_jid) {
await this.publishCurrentDevice(ids);
}
}
},
fetchDevices () { fetchDevices () {
if (_.isUndefined(this._devices_promise)) { if (_.isUndefined(this._devices_promise)) {
this._devices_promise = new Promise(resolve => { this._devices_promise = new Promise(resolve => {
this.devices.fetch({ this.devices.fetch({
'success': async collection => { 'success': _.flow(c => this.onDevicesFound(c), resolve),
if (collection.length === 0) { 'error': _.flow(_.partial(_converse.log, _, Strophe.LogLevel.ERROR), resolve)
let ids;
try {
ids = await this.fetchDevicesFromServer()
} catch (e) {
_converse.log(`Could not fetch devices for ${this.get('jid')}`);
_converse.log(e, Strophe.LogLevel.ERROR);
this.destroy();
return resolve(e);
}
await this.publishCurrentDevice(ids);
}
resolve();
},
'error': e => {
_converse.log(e, Strophe.LogLevel.ERROR);
resolve(e);
}
}); });
}); });
} }
...@@ -981,8 +980,7 @@ converse.plugins.add('converse-omemo', { ...@@ -981,8 +980,7 @@ converse.plugins.add('converse-omemo', {
async publishCurrentDevice (device_ids) { async publishCurrentDevice (device_ids) {
if (this.get('jid') !== _converse.bare_jid) { if (this.get('jid') !== _converse.bare_jid) {
// We only publish for ourselves. return // We only publish for ourselves.
return
} }
await restoreOMEMOSession(); await restoreOMEMOSession();
let device_id = _converse.omemo_store.get('device_id'); let device_id = _converse.omemo_store.get('device_id');
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment