mirror of
https://github.com/moparisthebest/kaiwa
synced 2024-11-25 10:42:17 -05:00
Fix backbone clobbering messages because of ids
This commit is contained in:
parent
2bb319bcbb
commit
a3fc8512d2
@ -6,6 +6,7 @@ var async = require('async');
|
|||||||
var crypto = require('crypto');
|
var crypto = require('crypto');
|
||||||
var log = require('andlog');
|
var log = require('andlog');
|
||||||
var uuid = require('node-uuid');
|
var uuid = require('node-uuid');
|
||||||
|
var HumanModel = require('human-model');
|
||||||
var Contact = require('../models/contact');
|
var Contact = require('../models/contact');
|
||||||
var Resource = require('../models/resource');
|
var Resource = require('../models/resource');
|
||||||
var Message = require('../models/message');
|
var Message = require('../models/message');
|
||||||
@ -250,12 +251,11 @@ module.exports = function (client, app) {
|
|||||||
|
|
||||||
client.on('chat', function (msg) {
|
client.on('chat', function (msg) {
|
||||||
msg = msg.toJSON();
|
msg = msg.toJSON();
|
||||||
|
msg.mid = msg.id || uuid.v4();
|
||||||
|
delete msg.id;
|
||||||
|
|
||||||
var contact = me.getContact(msg.from, msg.to);
|
var contact = me.getContact(msg.from, msg.to);
|
||||||
if (contact && !msg.replace) {
|
if (contact && !msg.replace) {
|
||||||
if (!msg.id) {
|
|
||||||
msg.id = uuid.v4();
|
|
||||||
}
|
|
||||||
|
|
||||||
var message = new Message(msg);
|
var message = new Message(msg);
|
||||||
|
|
||||||
if (msg.archived) {
|
if (msg.archived) {
|
||||||
@ -268,18 +268,19 @@ module.exports = function (client, app) {
|
|||||||
|
|
||||||
message.acked = true;
|
message.acked = true;
|
||||||
contact.addMessage(message, true);
|
contact.addMessage(message, true);
|
||||||
contact.lockedResource = msg.from.full;
|
if (msg.from.bare == contact.jid.bare) {
|
||||||
|
contact.lockedResource = msg.from.full;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
client.on('groupchat', function (msg) {
|
client.on('groupchat', function (msg) {
|
||||||
msg = msg.toJSON();
|
msg = msg.toJSON();
|
||||||
|
msg.mid = msg.id || uuid.v4();
|
||||||
|
delete msg.id;
|
||||||
|
|
||||||
var contact = me.getContact(msg.from, msg.to);
|
var contact = me.getContact(msg.from, msg.to);
|
||||||
if (contact && !msg.replace) {
|
if (contact && !msg.replace) {
|
||||||
if (!msg.id) {
|
|
||||||
msg.id = uuid.v4();
|
|
||||||
}
|
|
||||||
|
|
||||||
var message = new Message(msg);
|
var message = new Message(msg);
|
||||||
message.acked = true;
|
message.acked = true;
|
||||||
contact.addMessage(message, true);
|
contact.addMessage(message, true);
|
||||||
@ -292,7 +293,7 @@ module.exports = function (client, app) {
|
|||||||
if (!contact) return;
|
if (!contact) return;
|
||||||
|
|
||||||
var id = msg.replace;
|
var id = msg.replace;
|
||||||
var original = contact.messages.get(id);
|
var original = HumanModel.registry.lookup('message', id, 'messages');
|
||||||
|
|
||||||
if (!original) return;
|
if (!original) return;
|
||||||
|
|
||||||
@ -342,7 +343,7 @@ module.exports = function (client, app) {
|
|||||||
if (stanza.body) {
|
if (stanza.body) {
|
||||||
var contact = me.getContact(stanza.to, stanza.from);
|
var contact = me.getContact(stanza.to, stanza.from);
|
||||||
if (contact) {
|
if (contact) {
|
||||||
var msg = contact.messages.get(stanza.id);
|
var msg = HumanModel.registry.lookup('message', stanza.id, 'messages');
|
||||||
if (msg) {
|
if (msg) {
|
||||||
msg.acked = true;
|
msg.acked = true;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/*global app, me*/
|
/*global app, me*/
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
var uuid = require('node-uuid');
|
||||||
var HumanModel = require('human-model');
|
var HumanModel = require('human-model');
|
||||||
var templates = require('../templates');
|
var templates = require('../templates');
|
||||||
var htmlify = require('../helpers/htmlify');
|
var htmlify = require('../helpers/htmlify');
|
||||||
@ -9,11 +10,14 @@ var htmlify = require('../helpers/htmlify');
|
|||||||
module.exports = HumanModel.define({
|
module.exports = HumanModel.define({
|
||||||
initialize: function (attrs) {
|
initialize: function (attrs) {
|
||||||
this._created = new Date(Date.now());
|
this._created = new Date(Date.now());
|
||||||
|
if (attrs.mid) {
|
||||||
|
HumanModel.registry._getCache('messages')['message' + attrs.mid] = this;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
type: 'message',
|
type: 'message',
|
||||||
props: {
|
props: {
|
||||||
|
mid: ['string', true],
|
||||||
owner: 'string',
|
owner: 'string',
|
||||||
id: ['string', true, ''],
|
|
||||||
to: ['object', true],
|
to: ['object', true],
|
||||||
from: ['object', true],
|
from: ['object', true],
|
||||||
body: ['string', true, ''],
|
body: ['string', true, ''],
|
||||||
|
@ -86,8 +86,6 @@ module.exports = HumanModel.define({
|
|||||||
|
|
||||||
this.messages.add(message);
|
this.messages.add(message);
|
||||||
if (mine) {
|
if (mine) {
|
||||||
// Grab and save the existing message object that was updated
|
|
||||||
message = this.messages.get(message.id);
|
|
||||||
this.lastSentMessage = message;
|
this.lastSentMessage = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,7 +178,7 @@ module.exports = BasePage.extend(chatHelpers).extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
var id = client.sendMessage(message);
|
var id = client.sendMessage(message);
|
||||||
message.id = id;
|
message.mid = id;
|
||||||
message.from = me.jid;
|
message.from = me.jid;
|
||||||
|
|
||||||
if (this.editMode) {
|
if (this.editMode) {
|
||||||
|
@ -182,11 +182,11 @@ module.exports = BasePage.extend(chatHelpers).extend({
|
|||||||
chatState: 'active'
|
chatState: 'active'
|
||||||
};
|
};
|
||||||
if (this.editMode) {
|
if (this.editMode) {
|
||||||
message.replace = this.model.lastSentMessage.id || this.model.lastSentMessage.cid;
|
message.replace = this.model.lastSentMessage.mid || this.model.lastSentMessage.cid;
|
||||||
}
|
}
|
||||||
|
|
||||||
var id = client.sendMessage(message);
|
var id = client.sendMessage(message);
|
||||||
message.id = id;
|
message.mid = id;
|
||||||
message.from = client.JID(this.model.jid.bare + '/' + this.model.nick);
|
message.from = client.JID(this.model.jid.bare + '/' + this.model.nick);
|
||||||
|
|
||||||
if (this.editMode) {
|
if (this.editMode) {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
CACHE MANIFEST
|
CACHE MANIFEST
|
||||||
# 0.0.1 1387301758200
|
# 0.0.1 1387390012229
|
||||||
|
|
||||||
CACHE:
|
CACHE:
|
||||||
/app.js
|
/app.js
|
||||||
|
Loading…
Reference in New Issue
Block a user