From 2d44144b696d15561673bcafe0f1abdd015a1a50 Mon Sep 17 00:00:00 2001 From: Christoph Scholz Date: Wed, 9 Oct 2019 11:32:25 +0200 Subject: [PATCH] prevent message correction for files --- CHANGES.md | 4 ++++ src/converse-chatview.js | 4 ++-- src/headless/converse-chatboxes.js | 20 ++++++++++---------- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 2c12e32ac..bc7ea9616 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,9 @@ # Changelog +## 5.0.5 + +- Prevent editing of sent file uploads. + ## 5.0.4 (2019-10-08) - New config option [allow_message_corrections](https://conversejs.org/docs/html/configuration.html#allow_message_corrections) diff --git a/src/converse-chatview.js b/src/converse-chatview.js index 2066d526d..4e86e4794 100644 --- a/src/converse-chatview.js +++ b/src/converse-chatview.js @@ -954,7 +954,7 @@ converse.plugins.add('converse-chatview', { while (idx < this.model.messages.length-1) { idx += 1; const candidate = this.model.messages.at(idx); - if (candidate.get('sender') === 'me' && candidate.get('message')) { + if (candidate.get('editable')) { message = candidate; break; } @@ -982,7 +982,7 @@ converse.plugins.add('converse-chatview', { } } } - message = message || this.getOwnMessages().reverse().find(m => m.get('message')); + message = message || this.getOwnMessages().reverse().find(m => m.get('editable')); if (message) { this.insertIntoTextArea(message.get('message'), true, true); message.save('correcting', true); diff --git a/src/headless/converse-chatboxes.js b/src/headless/converse-chatboxes.js index 9eb412b99..d56d6fd27 100644 --- a/src/headless/converse-chatboxes.js +++ b/src/headless/converse-chatboxes.js @@ -785,7 +785,7 @@ converse.plugins.add('converse-chatboxes', { return; } if (_converse.allow_message_corrections === 'all') { - attrs.editable = true; + attrs.editable = !(attrs.file || 'oob_url' in attrs); } else if ((_converse.allow_message_corrections === 'last') && (send_time > this.get('time_sent'))) { this.set({'time_sent': send_time}); @@ -793,7 +793,7 @@ converse.plugins.add('converse-chatboxes', { if (msg) { msg.save({'editable': false}); } - attrs.editable = true; + attrs.editable = !(attrs.file || 'oob_url' in attrs); } }, @@ -889,14 +889,14 @@ converse.plugins.add('converse-chatboxes', { 'ephemeral': true }); } else { - const message = this.messages.create( - Object.assign( - this.getOutgoingMessageAttributes(), { - 'file': true, - 'progress': 0, - 'slot_request_url': slot_request_url - }), {'silent': true} - ); + const attrs = Object.assign( + this.getOutgoingMessageAttributes(), { + 'file': true, + 'progress': 0, + 'slot_request_url': slot_request_url + }); + this.setEditable(attrs, (new Date()).toISOString()); + const message = this.messages.create(attrs, {'silent': true}); message.file = file; this.messages.trigger('add', message); message.getRequestSlotURL();