From e46c494651388ca5126c82c37785df992ad1094b Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 28 Jul 2018 07:38:29 +0900 Subject: [PATCH] Fix #2000 --- .../common/views/directives/autocomplete.ts | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/client/app/common/views/directives/autocomplete.ts b/src/client/app/common/views/directives/autocomplete.ts index 10c37a06e..b252cf5c1 100644 --- a/src/client/app/common/views/directives/autocomplete.ts +++ b/src/client/app/common/views/directives/autocomplete.ts @@ -69,25 +69,25 @@ class Autocomplete { */ private onInput() { const caretPos = this.textarea.selectionStart; - const text = this.text.substr(0, caretPos); + const text = this.text.substr(0, caretPos).split('\n').pop(); const mentionIndex = text.lastIndexOf('@'); const hashtagIndex = text.lastIndexOf('#'); const emojiIndex = text.lastIndexOf(':'); - const start = Math.min( - mentionIndex == -1 ? Infinity : mentionIndex, - hashtagIndex == -1 ? Infinity : hashtagIndex, - emojiIndex == -1 ? Infinity : emojiIndex); + const max = Math.max( + mentionIndex, + hashtagIndex, + emojiIndex); - if (start == Infinity) { + if (max == -1) { this.close(); return; } - const isMention = mentionIndex == start; - const isHashtag = hashtagIndex == start; - const isEmoji = emojiIndex == start; + const isMention = mentionIndex != -1; + const isHashtag = hashtagIndex != -1; + const isEmoji = emojiIndex != -1; let opened = false; @@ -99,15 +99,15 @@ class Autocomplete { } } - if (isHashtag || opened == false) { + if (isHashtag && opened == false) { const hashtag = text.substr(hashtagIndex + 1); - if (!hashtag.includes(' ') && !hashtag.includes('\n')) { + if (!hashtag.includes(' ')) { this.open('hashtag', hashtag); opened = true; } } - if (isEmoji || opened == false) { + if (isEmoji && opened == false) { const emoji = text.substr(emojiIndex + 1); if (emoji != '' && emoji.match(/^[\+\-a-z0-9_]+$/)) { this.open('emoji', emoji);