Browse Source

Bugfix. Allow multiple MAM queries to be made simultaneously.

JC Brand 9 năm trước cách đây
mục cha
commit
561c138edd
3 tập tin đã thay đổi với 10 bổ sung10 xóa
  1. 1 0
      docs/CHANGES.md
  2. 1 1
      spec/mam.js
  3. 8 9
      src/converse-mam.js

+ 1 - 0
docs/CHANGES.md

@@ -9,6 +9,7 @@
   list. [jcbrand]
 - #645 When accepting a contact request, the contact didn't appear in the
   pending contacts group. [jcbrand]
+- Bugfix: allow multiple MAM queries to be made simultaneously. [jcbrand]
 
 ## 1.0.4 (2016-07-26)
 

+ 1 - 1
spec/mam.js

@@ -348,7 +348,7 @@
                  *     </fin>
                  * </message>
                  */
-                stanza = $msg().c('fin', {'xmlns': 'urn:xmpp:mam:0', 'complete': 'true'})
+                stanza = $msg().c('fin', {'xmlns': 'urn:xmpp:mam:0', 'queryid':queryid, 'complete': 'true'})
                             .c('set',  {'xmlns': 'http://jabber.org/protocol/rsm'})
                                 .c('first', {'index': '0'}).t('23452-4534-1').up()
                                 .c('last').t('390-2342-22').up()

+ 8 - 9
src/converse-mam.js

@@ -203,11 +203,12 @@
                         stanza.cnode(new Strophe.RSM(options).toXML());
                     }
                 }
-                converse.connection.addHandler(function (message) {
-                    var $msg = $(message), $fin, rsm;
-                    if (typeof callback === "function") {
-                        $fin = $msg.find('fin[xmlns="'+Strophe.NS.MAM+'"]');
-                        if ($fin.length) {
+
+                if (typeof callback === "function") {
+                    converse.connection.addHandler(function (message) {
+                        var $msg = $(message), rsm,
+                            $fin = $msg.find('fin[xmlns="'+Strophe.NS.MAM+'"]');
+                        if ($fin.length && $fin.attr('queryid') === queryid) {
                             rsm = new Strophe.RSM({xml: $fin.find('set')[0]});
                             _.extend(rsm, _.pick(options, ['max']));
                             _.extend(rsm, _.pick(options, MAM_ATTRIBUTES));
@@ -217,10 +218,8 @@
                             messages.push(message);
                         }
                         return true;
-                    } else {
-                        return false; // There's no callback, so no use in continuing this handler.
-                    }
-                }, Strophe.NS.MAM);
+                    }, Strophe.NS.MAM);
+                }
                 converse.connection.sendIQ(stanza, null, errback, converse.message_archiving_timeout);
             };