mirror of
https://github.com/moparisthebest/kaiwa
synced 2024-11-29 12:42:16 -05:00
Fix MAM retrieval when there are messages with no ids
This commit is contained in:
parent
aa69711b35
commit
baf25a6bc8
@ -228,7 +228,14 @@ module.exports = function (client, app) {
|
|||||||
onclick: _.bind(app.navigate, app, '/chat/' + contact.jid)
|
onclick: _.bind(app.navigate, app, '/chat/' + contact.jid)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
contact.messages.add(message);
|
contact.messages.add(message);
|
||||||
|
|
||||||
|
var newInteraction = new Date(message.created);
|
||||||
|
if (!contact.lastInteraction || contact.lastInteraction < newInteraction) {
|
||||||
|
contact.lastInteraction = newInteraction;
|
||||||
|
}
|
||||||
|
|
||||||
if (!contact.lockedResource) {
|
if (!contact.lockedResource) {
|
||||||
contact.lockedResource = msg.from.full;
|
contact.lockedResource = msg.from.full;
|
||||||
} else if (msg.from !== contact.lockedResource) {
|
} else if (msg.from !== contact.lockedResource) {
|
||||||
|
@ -2966,12 +2966,14 @@ MAMQuery.prototype = {
|
|||||||
return new Date(stanza.getSubText(this.xml, this.NS, 'start') || Date.now());
|
return new Date(stanza.getSubText(this.xml, this.NS, 'start') || Date.now());
|
||||||
},
|
},
|
||||||
set start(value) {
|
set start(value) {
|
||||||
|
if (!value) return;
|
||||||
stanza.setSubText(this.xml, this.NS, 'start', value.toISOString());
|
stanza.setSubText(this.xml, this.NS, 'start', value.toISOString());
|
||||||
},
|
},
|
||||||
get end() {
|
get end() {
|
||||||
return new Date(stanza.getSubText(this.xml, this.NS, 'end') || Date.now());
|
return new Date(stanza.getSubText(this.xml, this.NS, 'end') || Date.now());
|
||||||
},
|
},
|
||||||
set end(value) {
|
set end(value) {
|
||||||
|
if (!value) return;
|
||||||
stanza.setSubText(this.xml, this.NS, 'end', value.toISOString());
|
stanza.setSubText(this.xml, this.NS, 'end', value.toISOString());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -87,7 +87,8 @@ module.exports = HumanModel.define({
|
|||||||
lastSentMessage: 'object',
|
lastSentMessage: 'object',
|
||||||
timezoneOffset: ['number', false, 0],
|
timezoneOffset: ['number', false, 0],
|
||||||
activeContact: ['bool', true, false],
|
activeContact: ['bool', true, false],
|
||||||
unreadCount: ['number', true, 0]
|
unreadCount: ['number', true, 0],
|
||||||
|
lastInteraction: 'date'
|
||||||
},
|
},
|
||||||
collections: {
|
collections: {
|
||||||
resources: Resources,
|
resources: Resources,
|
||||||
@ -167,12 +168,20 @@ module.exports = HumanModel.define({
|
|||||||
fetchHistory: function () {
|
fetchHistory: function () {
|
||||||
var self = this;
|
var self = this;
|
||||||
app.whenConnected(function () {
|
app.whenConnected(function () {
|
||||||
|
var filter = {
|
||||||
|
count: 20,
|
||||||
|
before: true,
|
||||||
|
};
|
||||||
|
|
||||||
|
var lastMessage = self.messages.last();
|
||||||
|
if (lastMessage && lastMessage.archivedId) {
|
||||||
|
filter.after = lastMessage.archivedId;
|
||||||
|
}
|
||||||
|
|
||||||
client.getHistory({
|
client.getHistory({
|
||||||
with: self.jid,
|
with: self.jid,
|
||||||
rsm: {
|
start: self.lastInteraction,
|
||||||
count: 20,
|
rsm: filter
|
||||||
before: true
|
|
||||||
}
|
|
||||||
}, function (err, res) {
|
}, function (err, res) {
|
||||||
if (err) return;
|
if (err) return;
|
||||||
|
|
||||||
@ -198,8 +207,15 @@ module.exports = HumanModel.define({
|
|||||||
if (original && original.correct(msg)) return;
|
if (original && original.correct(msg)) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var message = new Message(msg);
|
var message = new Message(msg);
|
||||||
message.archivedId = result.mam.id;
|
message.archivedId = result.mam.id;
|
||||||
|
|
||||||
|
var newInteraction = new Date(message.created);
|
||||||
|
if (!self.lastInteraction || newInteraction > self.lastInteraction) {
|
||||||
|
self.lastInteraction = newInteraction;
|
||||||
|
}
|
||||||
|
|
||||||
self.messages.add(message);
|
self.messages.add(message);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user