Added support for emojis with multiple aliases to autocomplete (#5097)

Этот коммит содержится в:
Harrison Healey
2017-01-17 15:49:05 -05:00
коммит произвёл Christopher Speller
родитель 0685afd1d1
Коммит a5b5dabf4a

Просмотреть файл

@@ -14,7 +14,7 @@ const MIN_EMOTICON_LENGTH = 2;
class EmoticonSuggestion extends Suggestion { class EmoticonSuggestion extends Suggestion {
render() { render() {
const text = this.props.term; const text = this.props.term;
const emoticon = this.props.item; const emoji = this.props.item.emoji;
let className = 'emoticon-suggestion'; let className = 'emoticon-suggestion';
if (this.props.isSelection) { if (this.props.isSelection) {
@@ -30,7 +30,7 @@ class EmoticonSuggestion extends Suggestion {
<img <img
alt={text} alt={text}
className='emoticon-suggestion__image' className='emoticon-suggestion__image'
src={EmojiStore.getEmojiImageUrl(emoticon)} src={EmojiStore.getEmojiImageUrl(emoji)}
title={text} title={text}
/> />
</div> </div>
@@ -73,15 +73,24 @@ export default class EmoticonProvider {
// check for named emoji // check for named emoji
for (const [name, emoji] of EmojiStore.getEmojis()) { for (const [name, emoji] of EmojiStore.getEmojis()) {
if (name.indexOf(partialName) !== -1) { if (emoji.aliases) {
matched.push(emoji); // This is a system emoji so it may have multiple names
for (const alias of emoji.aliases) {
if (alias.indexOf(partialName) !== -1) {
matched.push({name: alias, emoji});
break;
}
}
} else if (name.indexOf(partialName) !== -1) {
// This is a custom emoji so it only has one name
matched.push({name, emoji});
} }
} }
// sort the emoticons so that emoticons starting with the entered text come first // sort the emoticons so that emoticons starting with the entered text come first
matched.sort((a, b) => { matched.sort((a, b) => {
const aName = a.name || a.aliases[0]; const aName = a.name;
const bName = b.name || b.aliases[0]; const bName = b.name;
const aPrefix = aName.startsWith(partialName); const aPrefix = aName.startsWith(partialName);
const bPrefix = bName.startsWith(partialName); const bPrefix = bName.startsWith(partialName);
@@ -95,7 +104,7 @@ export default class EmoticonProvider {
return 1; return 1;
}); });
const terms = matched.map((emoticon) => ':' + (emoticon.name || emoticon.aliases[0]) + ':'); const terms = matched.map((item) => ':' + item.name + ':');
SuggestionStore.clearSuggestions(suggestionId); SuggestionStore.clearSuggestions(suggestionId);
if (terms.length > 0) { if (terms.length > 0) {