Match a message of only emojis (instead of just a single emoji)
This commit is contained in:
parent
1f673b7aae
commit
88ea9f8b61
@ -218,6 +218,25 @@
|
||||
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);
|
||||
|
||||
textarea.value = ':smile: Hello world!';
|
||||
view.onKeyDown({
|
||||
target: textarea,
|
||||
preventDefault: function preventDefault () {},
|
||||
keyCode: 13 // Enter
|
||||
});
|
||||
await new Promise(resolve => view.once('messageInserted', resolve));
|
||||
|
||||
textarea.value = ':smile: :smiley: :imp:';
|
||||
view.onKeyDown({
|
||||
target: textarea,
|
||||
preventDefault: function preventDefault () {},
|
||||
keyCode: 13 // Enter
|
||||
});
|
||||
await new Promise(resolve => view.once('messageInserted', resolve));
|
||||
|
||||
message = chat_content.querySelector('.message:last-child .chat-msg__text');
|
||||
expect(u.hasClass('chat-msg__text--larger', message)).toBe(true);
|
||||
done()
|
||||
}));
|
||||
});
|
||||
|
@ -747,7 +747,7 @@ converse.plugins.add('converse-chat', {
|
||||
'origin_id': origin_id,
|
||||
'fullname': _converse.xmppstatus.get('fullname'),
|
||||
'from': _converse.bare_jid,
|
||||
'is_single_emoji': text ? u.isSingleEmoji(text) : false,
|
||||
'is_single_emoji': text ? u.isOnlyEmojis(text) : false,
|
||||
'sender': 'me',
|
||||
'time': (new Date()).toISOString(),
|
||||
'message': text ? u.httpToGeoUri(u.shortnameToUnicode(text), _converse) : undefined,
|
||||
@ -810,7 +810,7 @@ converse.plugins.add('converse-chat', {
|
||||
'message': attrs.message,
|
||||
'older_versions': older_versions,
|
||||
'references': attrs.references,
|
||||
'is_single_emoji': attrs.message ? u.isSingleEmoji(attrs.message) : false,
|
||||
'is_single_emoji': attrs.message ? u.isOnlyEmojis(attrs.message) : false,
|
||||
'origin_id': u.getUniqueId(),
|
||||
'received': undefined
|
||||
});
|
||||
@ -989,7 +989,7 @@ converse.plugins.add('converse-chat', {
|
||||
'chat_state': chat_state,
|
||||
'is_archived': this.isArchived(original_stanza),
|
||||
'is_delayed': !!delay,
|
||||
'is_single_emoji': text ? await u.isSingleEmoji(text) : false,
|
||||
'is_single_emoji': text ? await u.isOnlyEmojis(text) : false,
|
||||
'is_spoiler': !!spoiler,
|
||||
'message': text,
|
||||
'msgid': msgid,
|
||||
|
@ -324,18 +324,21 @@ converse.plugins.add('converse-emoji', {
|
||||
|
||||
/**
|
||||
* Determines whether the passed in string is just a single emoji shortname;
|
||||
* @method u.isSingleEmoji
|
||||
* @method u.isOnlyEmojis
|
||||
* @param {string} shortname - A string which migh be just an emoji shortname
|
||||
* @returns {boolean}
|
||||
*/
|
||||
isSingleEmoji (shortname) {
|
||||
shortname = shortname.trim();
|
||||
if (!shortname || (shortname.length > 2 && !shortname.startsWith(':'))) {
|
||||
return;
|
||||
isOnlyEmojis (text) {
|
||||
const words = text.trim().split(/\s+/);
|
||||
if (words.length === 0 || words.length > 6) {
|
||||
return false;
|
||||
}
|
||||
const result = twemoji.default.parse(u.shortnameToUnicode(shortname));
|
||||
const match = result.match(/<img class="emoji" draggable="false" alt=".*?" src=".*?\.png"\/>/);
|
||||
return match && match.length === 1;
|
||||
const rejects = words.filter(text => {
|
||||
const result = twemoji.default.parse(u.shortnameToUnicode(text));
|
||||
const match = result.match(/<img class="emoji" draggable="false" alt=".*?" src=".*?\.png"\/>/);
|
||||
return !match || match.length !== 1;
|
||||
});
|
||||
return rejects.length === 0;
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -742,7 +742,7 @@ converse.plugins.add('converse-muc', {
|
||||
'origin_id': origin_id,
|
||||
'from': `${this.get('jid')}/${this.get('nick')}`,
|
||||
'fullname': this.get('nick'),
|
||||
'is_single_emoji': text ? u.isSingleEmoji(text) : false,
|
||||
'is_single_emoji': text ? u.isOnlyEmojis(text) : false,
|
||||
'is_spoiler': is_spoiler,
|
||||
'message': text ? u.httpToGeoUri(u.shortnameToUnicode(text), _converse) : undefined,
|
||||
'nick': this.get('nick'),
|
||||
|
Loading…
Reference in New Issue
Block a user