Browse Source

Remove `--larger` class on a edited message that's no longer just emojis

JC Brand 5 years ago
parent
commit
e305cc35b0
2 changed files with 36 additions and 5 deletions
  1. 34 4
      spec/emojis.js
  2. 2 1
      src/headless/converse-chatboxes.js

+ 34 - 4
spec/emojis.js

@@ -159,9 +159,9 @@
         });
 
         describe("A Chat Message", function () {
-            it("will display larger if it's a single emoji",
+            it("will display larger if it's only emojis",
                 mock.initConverse(
-                    null, ['rosterGroupsFetched', 'chatBoxesFetched', 'emojisInitialized'], {'use_system_emojis': false},
+                    null, ['rosterGroupsFetched', 'chatBoxesFetched', 'emojisInitialized'], {'use_system_emojis': true},
                     async function (done, _converse) {
 
                 await test_utils.waitForRoster(_converse, 'current');
@@ -176,7 +176,6 @@
                 await new Promise(resolve => _converse.on('chatBoxInitialized', resolve));
                 const view = _converse.api.chatviews.get(sender_jid);
                 await new Promise((resolve, reject) => view.once('messageInserted', resolve));
-
                 const chat_content = view.el.querySelector('.chat-content');
                 let message = chat_content.querySelector('.chat-msg__text');
                 expect(u.hasClass('chat-msg__text--larger', message)).toBe(true);
@@ -191,7 +190,38 @@
                 await new Promise((resolve, reject) => view.once('messageInserted', resolve));
                 message = chat_content.querySelector('.message:last-child .chat-msg__text');
                 expect(u.hasClass('chat-msg__text--larger', message)).toBe(false);
-                done();
+
+                // Test that a modified message that no longer contains only
+                // emojis now renders normally again.
+                const textarea = view.el.querySelector('textarea.chat-textarea');
+                textarea.value = ':poop: :innocent:';
+                view.onKeyDown({
+                    target: textarea,
+                    preventDefault: function preventDefault () {},
+                    keyCode: 13 // Enter
+                });
+                await new Promise((resolve, reject) => view.once('messageInserted', resolve));
+                expect(view.el.querySelectorAll('.chat-msg').length).toBe(3);
+                expect(chat_content.querySelector('.message:last-child .chat-msg__text').textContent).toBe('💩 😇');
+                expect(textarea.value).toBe('');
+                view.onKeyDown({
+                    target: textarea,
+                    keyCode: 38 // Up arrow
+                });
+                expect(textarea.value).toBe('💩 😇');
+                expect(view.model.messages.at(2).get('correcting')).toBe(true);
+                await u.waitUntil(() => u.hasClass('correcting', view.el.querySelector('.chat-msg:last-child')), 500);
+                textarea.value = textarea.value += 'This is no longer an emoji-only message';
+                view.onKeyDown({
+                    target: textarea,
+                    preventDefault: function preventDefault () {},
+                    keyCode: 13 // Enter
+                });
+                await new Promise((resolve, reject) => view.model.messages.once('rendered', resolve));
+                expect(view.model.messages.models.length).toBe(3);
+                message = chat_content.querySelector('.message:last-child .chat-msg__text');
+                expect(u.hasClass('chat-msg__text--larger', message)).toBe(false);
+                done()
             }));
         });
     });

+ 2 - 1
src/headless/converse-chatboxes.js

@@ -558,7 +558,7 @@ converse.plugins.add('converse-chatboxes', {
                 }
                 const older_versions = message.get('older_versions') || {};
                 if ((attrs.time < message.get('time')) && message.get('edited')) {
-                    // This is an older message which has been corrected already
+                    // This is an older message which has been corrected afterwards 
                     older_versions[attrs.time] = attrs['message'];
                     message.save({'older_versions': older_versions});
                 } else {
@@ -787,6 +787,7 @@ converse.plugins.add('converse-chatboxes', {
                         'message': attrs.message,
                         'older_versions': older_versions,
                         'references': attrs.references,
+                        'is_single_emoji':  attrs.message ? u.isSingleEmoji(attrs.message) : false,
                         'origin_id': _converse.connection.getUniqueId(),
                         'received': undefined
                     });