Преглед изворни кода

Use async function instead of explicit promises

JC Brand пре 6 година
родитељ
комит
94a1852b4f
1 измењених фајлова са 32 додато и 34 уклоњено
  1. 32 34
      src/converse-omemo.js

+ 32 - 34
src/converse-omemo.js

@@ -729,46 +729,44 @@
                         });
                         });
                 },
                 },
 
 
-                generateBundle () {
+                async generateBundle () {
                     /* The first thing that needs to happen if a client wants to
                     /* The first thing that needs to happen if a client wants to
                      * start using OMEMO is they need to generate an IdentityKey
                      * start using OMEMO is they need to generate an IdentityKey
                      * and a Device ID. The IdentityKey is a Curve25519 [6]
                      * and a Device ID. The IdentityKey is a Curve25519 [6]
                      * public/private Key pair. The Device ID is a randomly
                      * public/private Key pair. The Device ID is a randomly
                      * generated integer between 1 and 2^31 - 1.
                      * generated integer between 1 and 2^31 - 1.
                      */
                      */
-                    const bundle = {};
-                    return libsignal.KeyHelper.generateIdentityKeyPair()
-                        .then(identity_keypair => {
-                            const identity_key = u.arrayBufferToBase64(identity_keypair.pubKey),
-                                  device_id = generateDeviceID();
-
-                            bundle['identity_key'] = identity_key;
-                            bundle['device_id'] = device_id;
-                            this.save({
-                                'device_id': device_id,
-                                'identity_keypair': {
-                                    'privKey': u.arrayBufferToBase64(identity_keypair.privKey),
-                                    'pubKey': identity_key
-                                },
-                                'identity_key': identity_key
-                            });
-                            return libsignal.KeyHelper.generateSignedPreKey(identity_keypair, 0);
-                        }).then(signed_prekey => {
-                            _converse.omemo_store.storeSignedPreKey(signed_prekey);
-                            bundle['signed_prekey'] = {
-                                'id': signed_prekey.keyId,
-                                'public_key': u.arrayBufferToBase64(signed_prekey.keyPair.privKey),
-                                'signature': u.arrayBufferToBase64(signed_prekey.signature)
-                            }
-                            return Promise.all(_.map(_.range(0, _converse.NUM_PREKEYS), id => libsignal.KeyHelper.generatePreKey(id)));
-                        }).then(keys => {
-                            _.forEach(keys, k => _converse.omemo_store.storePreKey(k.keyId, k.keyPair));
-                            const devicelist = _converse.devicelists.get(_converse.bare_jid),
-                                  device = devicelist.devices.create({'id': bundle.device_id, 'jid': _converse.bare_jid}),
-                                  marshalled_keys = _.map(keys, k => ({'id': k.keyId, 'key': u.arrayBufferToBase64(k.keyPair.pubKey)}));
-                            bundle['prekeys'] = marshalled_keys;
-                            device.save('bundle', bundle);
-                        });
+                    const identity_keypair = await libsignal.KeyHelper.generateIdentityKeyPair();
+
+                    const bundle = {},
+                          identity_key = u.arrayBufferToBase64(identity_keypair.pubKey),
+                          device_id = generateDeviceID();
+
+                    bundle['identity_key'] = identity_key;
+                    bundle['device_id'] = device_id;
+                    this.save({
+                        'device_id': device_id,
+                        'identity_keypair': {
+                            'privKey': u.arrayBufferToBase64(identity_keypair.privKey),
+                            'pubKey': identity_key
+                        },
+                        'identity_key': identity_key
+                    });
+                    const signed_prekey = await libsignal.KeyHelper.generateSignedPreKey(identity_keypair, 0);
+
+                    _converse.omemo_store.storeSignedPreKey(signed_prekey);
+                    bundle['signed_prekey'] = {
+                        'id': signed_prekey.keyId,
+                        'public_key': u.arrayBufferToBase64(signed_prekey.keyPair.privKey),
+                        'signature': u.arrayBufferToBase64(signed_prekey.signature)
+                    }
+                    const keys = await Promise.all(_.map(_.range(0, _converse.NUM_PREKEYS), id => libsignal.KeyHelper.generatePreKey(id)));
+                    _.forEach(keys, k => _converse.omemo_store.storePreKey(k.keyId, k.keyPair));
+                    const devicelist = _converse.devicelists.get(_converse.bare_jid),
+                          device = devicelist.devices.create({'id': bundle.device_id, 'jid': _converse.bare_jid}),
+                          marshalled_keys = _.map(keys, k => ({'id': k.keyId, 'key': u.arrayBufferToBase64(k.keyPair.pubKey)}));
+                    bundle['prekeys'] = marshalled_keys;
+                    device.save('bundle', bundle);
                 },
                 },
 
 
                 fetchSession () {
                 fetchSession () {