소스 검색

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

JC Brand 6 년 전
부모
커밋
c32ecb7e82
1개의 변경된 파일19개의 추가작업 그리고 21개의 파일을 삭제
  1. 19 21
      src/converse-omemo.js

+ 19 - 21
src/converse-omemo.js

@@ -950,29 +950,28 @@ converse.plugins.add('converse-omemo', {
                 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 () {
                 if (_.isUndefined(this._devices_promise)) {
                     this._devices_promise = new Promise(resolve => {
                         this.devices.fetch({
-                            'success': async 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();
-                                        return resolve(e);
-                                    }
-                                    await this.publishCurrentDevice(ids);
-                                }
-                                resolve();
-                            },
-                            'error': e => {
-                                _converse.log(e, Strophe.LogLevel.ERROR);
-                                resolve(e);
-                            }
+                            'success': _.flow(c => this.onDevicesFound(c), resolve),
+                            'error': _.flow(_.partial(_converse.log, _, Strophe.LogLevel.ERROR), resolve)
                         });
                     });
                 }
@@ -981,8 +980,7 @@ converse.plugins.add('converse-omemo', {
 
             async publishCurrentDevice (device_ids) {
                 if (this.get('jid') !== _converse.bare_jid) {
-                    // We only publish for ourselves.
-                    return
+                    return // We only publish for ourselves.
                 }
                 await restoreOMEMOSession();
                 let device_id = _converse.omemo_store.get('device_id');