Browse Source

Use `body` as attribute for the message body text

For error messages we still use the `message` attribute, since error
messages generally don't have a body, and if one does, it likely refers
to the `body` of a rejected message that the error refers to.

We're still setting both `body` and `message` attributes, but usage of
`message` for a normal `chat`, `groupchat` or `headline` stanza should
be considered deprecated.
JC Brand 3 years ago
parent
commit
f9a9d327d1

+ 7 - 6
src/headless/plugins/chat/model.js

@@ -244,7 +244,7 @@ const ChatBox = ModelWithContact.extend({
     async onMessageUploadChanged (message) {
         if (message.get('upload') === _converse.SUCCESS) {
             const attrs = {
-                'body': message.get('message'),
+                'body': message.get('body'),
                 'spoiler_hint': message.get('spoiler_hint'),
                 'oob_url': message.get('oob_url')
 
@@ -632,10 +632,10 @@ const ChatBox = ModelWithContact.extend({
             message.save({'older_versions': older_versions});
         } else {
             // This is a correction of an earlier message we already received
-            if(Object.keys(older_versions).length) {
-                older_versions[message.get('edited')] = message.get('message');
-            }else {
-                older_versions[message.get('time')] = message.get('message');
+            if (Object.keys(older_versions).length) {
+                older_versions[message.get('edited')] = message.getMessageText();
+            } else {
+                older_versions[message.get('time')] = message.getMessageText();
             }
             attrs = Object.assign(attrs, {'older_versions': older_versions});
             delete attrs['id']; // Delete id, otherwise a new cache entry gets created
@@ -976,7 +976,8 @@ const ChatBox = ModelWithContact.extend({
         let message = this.messages.findWhere('correcting')
         if (message) {
             const older_versions = message.get('older_versions') || {};
-            older_versions[message.get('time')] = message.getMessageText();
+            const edited_time = message.get('edited') || message.get('time');
+            older_versions[edited_time] = message.getMessageText();
             const plaintext = attrs.is_encrypted ? attrs.message : undefined;
 
             message.save({

+ 1 - 1
src/headless/plugins/muc/muc.js

@@ -2709,7 +2709,7 @@ const ChatRoomMixin = {
                 .map(ref => ref.value);
             return mentions.includes(nick);
         } else {
-            return new RegExp(`\\b${nick}\\b`).test(message.get('message'));
+            return new RegExp(`\\b${nick}\\b`).test(message.get('body'));
         }
     },
 

+ 1 - 1
src/plugins/chatview/tests/http-file-upload.js

@@ -246,7 +246,7 @@ describe("XEP-0363: HTTP File Upload", function () {
                         message.save({
                             'upload': _converse.SUCCESS,
                             'oob_url': message.get('get'),
-                            'message': message.get('get')
+                            'body': message.get('get'),
                         });
                         await u.waitUntil(() => view.querySelectorAll('.chat-msg__text').length);
                     });

+ 1 - 1
src/plugins/muc-views/tests/http-file-upload.js

@@ -112,7 +112,7 @@ describe("XEP-0363: HTTP File Upload", function () {
                         message.save({
                             'upload': _converse.SUCCESS,
                             'oob_url': message.get('get'),
-                            'message': message.get('get')
+                            'body': message.get('get'),
                         });
                         await u.waitUntil(() => view.querySelectorAll('.chat-msg__text').length);
                     });

+ 20 - 6
src/plugins/omemo/tests/corrections.js

@@ -92,14 +92,14 @@ describe("An OMEMO encrypted message", function() {
 
         const first_msg = view.model.messages.findWhere({'message': 'But soft, what light through yonder airlock breaks?'});
 
-        const new_text = 'But soft, what light through yonder window breaks?';
-        textarea.value = new_text;
+        const newer_text = 'But soft, what light through yonder door breaks?';
+        textarea.value = newer_text;
         message_form.onKeyDown({
             target: textarea,
             preventDefault: function preventDefault () {},
             keyCode: 13 // Enter
         });
-        await u.waitUntil(() => view.querySelector('.chat-msg__text').textContent.replace(/<!-.*?->/g, '') === new_text);
+        await u.waitUntil(() => view.querySelector('.chat-msg__text').textContent.replace(/<!-.*?->/g, '') === newer_text);
 
         await u.waitUntil(() => _converse.connection.sent_stanzas.filter(s => s.nodeName === 'message').length === 3);
         const msg = _converse.connection.sent_stanzas.pop();
@@ -127,10 +127,10 @@ describe("An OMEMO encrypted message", function() {
             `</message>`);
 
         const older_versions = first_msg.get('older_versions');
-        const keys = Object.keys(older_versions);
+        let keys = Object.keys(older_versions);
         expect(keys.length).toBe(1);
         expect(older_versions[keys[0]]).toBe('But soft, what light through yonder airlock breaks?');
-        expect(first_msg.get('plaintext')).toBe(new_text);
+        expect(first_msg.get('plaintext')).toBe(newer_text);
         expect(first_msg.get('is_encrypted')).toBe(true);
         expect(first_msg.get('body')).toBe(fallback_text);
         expect(first_msg.get('message')).toBe(fallback_text);
@@ -139,7 +139,21 @@ describe("An OMEMO encrypted message", function() {
             target: textarea,
             keyCode: 38 // Up arrow
         });
-        expect(textarea.value).toBe('But soft, what light through yonder window breaks?');
+        expect(textarea.value).toBe('But soft, what light through yonder door breaks?');
+
+        const newest_text = 'But soft, what light through yonder window breaks?';
+        textarea.value = newest_text;
+        message_form.onKeyDown({
+            target: textarea,
+            preventDefault: function preventDefault () {},
+            keyCode: 13 // Enter
+        });
+        await u.waitUntil(() => view.querySelector('.chat-msg__text').textContent.replace(/<!-.*?->/g, '') === newest_text);
+
+        keys = Object.keys(older_versions);
+        expect(keys.length).toBe(2);
+        expect(older_versions[keys[0]]).toBe('But soft, what light through yonder airlock breaks?');
+        expect(older_versions[keys[1]]).toBe('But soft, what light through yonder door breaks?');
     }));
 });
 

+ 1 - 1
src/plugins/omemo/tests/media-sharing.js

@@ -71,7 +71,7 @@ describe("The OMEMO module", function() {
             message.save({
                 'upload': _converse.SUCCESS,
                 'oob_url': message.get('get'),
-                'message': message.get('get')
+                'body': message.get('get')
             });
             await u.waitUntil(() => view.querySelectorAll('.chat-msg__text').length);
         });

+ 1 - 1
src/shared/chat/message-actions.js

@@ -71,7 +71,7 @@ class MessageActions extends CustomElement {
         // TODO: Use state intead of DOM querying
         // Then this code can also be put on the model
         const unsent_text = u.ancestor(this, '.chatbox')?.querySelector('.chat-textarea')?.value;
-        if (unsent_text && (!currently_correcting || currently_correcting.get('message') !== unsent_text)) {
+        if (unsent_text && (!currently_correcting || currently_correcting.getMessageText() !== unsent_text)) {
             if (!confirm(__('You have an unsent message which will be lost if you continue. Are you sure?'))) {
                 return;
             }