Bugfix for groupchat archive queries.
Groupchat queries should have a "to" parameter on the IQ stanza and don't use the "with" query option. updates #306
This commit is contained in:
parent
e03db127cf
commit
404ab96609
28
converse.js
28
converse.js
|
@ -1320,7 +1320,7 @@
|
|||
* Then, upon receiving them, call onMessage on the chat box,
|
||||
* so that they are displayed inside it.
|
||||
*/
|
||||
API.archive.query(options,
|
||||
API.archive.query(_.extend(options, {'groupchat': this.is_chatroom}),
|
||||
function (messages) {
|
||||
this.clearSpinner();
|
||||
if (messages.length) {
|
||||
|
@ -2779,7 +2779,6 @@
|
|||
converse.emit('chatRoomOpened', this);
|
||||
|
||||
this.$el.insertAfter(converse.chatboxviews.get("controlbox").$el);
|
||||
this.model.messages.fetch({add: true});
|
||||
if (this.model.get('minimized')) {
|
||||
this.hide();
|
||||
} else {
|
||||
|
@ -3037,26 +3036,26 @@
|
|||
},
|
||||
|
||||
join: function (password, history_attrs, extended_presence) {
|
||||
var msg = $pres({
|
||||
var stanza = $pres({
|
||||
from: converse.connection.jid,
|
||||
to: this.getRoomJIDAndNick()
|
||||
}).c("x", {
|
||||
xmlns: Strophe.NS.MUC
|
||||
});
|
||||
if (typeof history_attrs === "object" && history_attrs.length) {
|
||||
msg = msg.c("history", history_attrs).up();
|
||||
if (typeof history_attrs === "object" && Object.keys(history_attrs).length) {
|
||||
stanza = stanza.c("history", history_attrs).up();
|
||||
}
|
||||
if (password) {
|
||||
msg.cnode(Strophe.xmlElement("password", [], password));
|
||||
stanza.cnode(Strophe.xmlElement("password", [], password));
|
||||
}
|
||||
if (typeof extended_presence !== "undefined" && extended_presence !== null) {
|
||||
msg.up.cnode(extended_presence);
|
||||
stanza.up.cnode(extended_presence);
|
||||
}
|
||||
if (!this.handler) {
|
||||
this.handler = converse.connection.addHandler(this.handleMUCStanza.bind(this));
|
||||
}
|
||||
this.model.set('connection_status', Strophe.Status.CONNECTING);
|
||||
return converse.connection.send(msg);
|
||||
return converse.connection.send(stanza);
|
||||
},
|
||||
|
||||
leave: function(exit_msg) {
|
||||
|
@ -3362,6 +3361,7 @@
|
|||
($presence.attr('from') == this.model.get('id')+'/'+Strophe.escapeNode(nick));
|
||||
if (this.model.get('connection_status') !== Strophe.Status.CONNECTED) {
|
||||
this.model.set('connection_status', Strophe.Status.CONNECTED);
|
||||
this.fetchMessages();
|
||||
this.$('span.centered.spinner').remove();
|
||||
this.$el.find('.chat-body').children().show();
|
||||
}
|
||||
|
@ -6334,13 +6334,21 @@
|
|||
throw new Error('This server does not support XEP-0313, Message Archive Management');
|
||||
}
|
||||
var queryid = converse.connection.getUniqueId();
|
||||
var stanza = $iq({'type':'set'}).c('query', {'xmlns':Strophe.NS.MAM, 'queryid':queryid});
|
||||
|
||||
var attrs = {'type':'set'};
|
||||
if (typeof options != "undefined" && options.groupchat) {
|
||||
if (!options['with']) {
|
||||
throw new Error('You need to specify a "with" value containing the chat room JID, when querying groupchat messages.');
|
||||
}
|
||||
attrs.to = options['with'];
|
||||
}
|
||||
var stanza = $iq(attrs).c('query', {'xmlns':Strophe.NS.MAM, 'queryid':queryid});
|
||||
if (typeof options != "undefined") {
|
||||
stanza.c('x', {'xmlns':Strophe.NS.XFORM})
|
||||
.c('field', {'var':'FORM_TYPE'})
|
||||
.c('value').t(Strophe.NS.MAM).up().up();
|
||||
|
||||
if (options['with']) {
|
||||
if (options['with'] && !options.groupchat) {
|
||||
stanza.c('field', {'var':'with'}).c('value').t(options['with']).up().up();
|
||||
}
|
||||
_.each(['start', 'end'], function (t) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user