diff options
Diffstat (limited to 'src/components/emoji-input/suggestor.js')
| -rw-r--r-- | src/components/emoji-input/suggestor.js | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/components/emoji-input/suggestor.js b/src/components/emoji-input/suggestor.js new file mode 100644 index 00000000..f1a0d0da --- /dev/null +++ b/src/components/emoji-input/suggestor.js @@ -0,0 +1,38 @@ +export default function suggest (data) { + return input => { + const trimmed = input.trim() + const firstChar = trimmed[0] + console.log(`'${trimmed}'`, firstChar, firstChar === ':') + if (firstChar === ':' && data.emoji) { + return suggestEmoji(data.emoji)(trimmed) + } + if (firstChar === '@' && data.users) { + return suggestUsers(data.users)(trimmed) + } + return [] + } +} + +function suggestEmoji (emojis) { + return input => { + const shortcode = input.toLowerCase().substr(1) + console.log(shortcode) + return emojis.filter(emoji => emoji.shortcode.toLowerCase().startsWith(shortcode)) + } +} + +function suggestUsers (users) { + return input => { + const shortcode = input.toLowerCase().substr(1) + return users.filter( + user => + user.screen_name.toLowerCase().startsWith('@' + shortcode) || + user.name.toLowerCase().startsWith(shortcode) + ).map(({ screen_name, name, profile_image_url_original }) => ({ + shortcode: screen_name, + detail: name, + image_url: profile_image_url_original, + replacement: '@' + screen_name + })) + } +} |
