Only own messages should be editable.

Fixes #1139
This commit is contained in:
JC Brand 2018-07-21 08:12:33 +02:00
parent acd9a18696
commit 6a790916d3
3 changed files with 41 additions and 18 deletions

18
dist/converse.js vendored
View File

@ -70234,6 +70234,12 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
}
},
getOwnMessages() {
return f(this.model.messages.filter({
'sender': 'me'
}));
},
editLaterMessage() {
let message;
let idx = this.model.messages.findLastIndex('correcting');
@ -70243,9 +70249,10 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
while (idx < this.model.messages.length - 1) {
idx += 1;
const candidate = this.model.messages.at(idx);
if (this.model.messages.at(idx).get('message')) {
message = this.model.messages.at(idx);
if (candidate.get('sender') === 'me' && candidate.get('message')) {
message = candidate;
break;
}
}
@ -70268,15 +70275,16 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
while (idx > 0) {
idx -= 1;
const candidate = this.model.messages.at(idx);
if (this.model.messages.at(idx).get('message')) {
message = this.model.messages.at(idx);
if (candidate.get('sender') === 'me' && candidate.get('message')) {
message = candidate;
break;
}
}
}
message = message || _.findLast(this.model.messages.models, msg => msg.get('message'));
message = message || this.getOwnMessages().findLast(msg => msg.get('message'));
if (message) {
this.insertIntoTextArea(message.get('message'), true);

View File

@ -1720,7 +1720,7 @@
'<img class="chat-image img-thumbnail" src="http://localhost:8000/logo/conversejs-filled.svg">'+
'</a>');
done();
});
}).catch(_.partial(console.error, _));
}));
});
});
@ -1801,7 +1801,7 @@
expect(older_msgs[0].textContent).toBe('But soft, what light through yonder airlock breaks?');
expect(older_msgs[1].textContent).toBe('But soft, what light through yonder chimney breaks?');
done();
});
}).catch(_.partial(console.error, _));
}));
it("can be sent as a correction",
@ -1812,9 +1812,9 @@
let msg_id, view;
test_utils.openAndEnterChatRoom(_converse, 'lounge', 'localhost', 'dummy')
.then(() => {
const jid = 'lounge@localhost';
const room = _converse.api.rooms.get(jid);
view = _converse.chatboxviews.get(jid);
const room_jid = 'lounge@localhost';
const room = _converse.api.rooms.get(room_jid);
view = _converse.chatboxviews.get(room_jid);
const textarea = view.el.querySelector('textarea.chat-textarea');
expect(textarea.value).toBe('');
@ -1874,6 +1874,15 @@
expect(view.el.querySelectorAll('.chat-msg').length).toBe(1);
expect(u.hasClass('correcting', view.el.querySelector('.chat-msg'))).toBe(false);
// Check that messages from other users are skipped
view.model.onMessage($msg({
'from': room_jid+'/someone-else',
'id': (new Date()).getTime(),
'to': 'dummy@localhost',
'type': 'groupchat'
}).c('body').t('Hello world').tree());
expect(view.el.querySelectorAll('.chat-msg').length).toBe(2);
// Test that pressing the down arrow cancels message correction
expect(textarea.value).toBe('');
view.keyPressed({
@ -1882,7 +1891,7 @@
});
expect(textarea.value).toBe('But soft, what light through yonder window breaks?');
expect(view.model.messages.at(0).get('correcting')).toBe(true);
expect(view.el.querySelectorAll('.chat-msg').length).toBe(1);
expect(view.el.querySelectorAll('.chat-msg').length).toBe(2);
expect(u.hasClass('correcting', view.el.querySelector('.chat-msg'))).toBe(true);
expect(textarea.value).toBe('But soft, what light through yonder window breaks?');
view.keyPressed({
@ -1891,10 +1900,10 @@
});
expect(textarea.value).toBe('');
expect(view.model.messages.at(0).get('correcting')).toBe(false);
expect(view.el.querySelectorAll('.chat-msg').length).toBe(1);
expect(view.el.querySelectorAll('.chat-msg').length).toBe(2);
expect(u.hasClass('correcting', view.el.querySelector('.chat-msg'))).toBe(false);
done();
});
}).catch(_.partial(console.error, _));
}));
});
}));

View File

@ -927,6 +927,10 @@
}
},
getOwnMessages () {
return f(this.model.messages.filter({'sender': 'me'}));
},
editLaterMessage () {
let message;
let idx = this.model.messages.findLastIndex('correcting');
@ -934,8 +938,9 @@
this.model.messages.at(idx).save('correcting', false);
while (idx < this.model.messages.length-1) {
idx += 1;
if (this.model.messages.at(idx).get('message')) {
message = this.model.messages.at(idx);
const candidate = this.model.messages.at(idx);
if (candidate.get('sender') === 'me' && candidate.get('message')) {
message = candidate;
break;
}
}
@ -955,13 +960,14 @@
this.model.messages.at(idx).save('correcting', false);
while (idx > 0) {
idx -= 1;
if (this.model.messages.at(idx).get('message')) {
message = this.model.messages.at(idx);
const candidate = this.model.messages.at(idx);
if (candidate.get('sender') === 'me' && candidate.get('message')) {
message = candidate;
break;
}
}
}
message = message || _.findLast(this.model.messages.models, (msg) => msg.get('message'));
message = message || this.getOwnMessages().findLast((msg) => msg.get('message'));
if (message) {
this.insertIntoTextArea(message.get('message'), true);
message.save('correcting', true);