diff options
Diffstat (limited to 'webapp/components/suggestion/at_mention_provider.jsx')
-rw-r--r-- | webapp/components/suggestion/at_mention_provider.jsx | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/webapp/components/suggestion/at_mention_provider.jsx b/webapp/components/suggestion/at_mention_provider.jsx index d1a03deb5..6118b8d98 100644 --- a/webapp/components/suggestion/at_mention_provider.jsx +++ b/webapp/components/suggestion/at_mention_provider.jsx @@ -4,6 +4,7 @@ import Suggestion from './suggestion.jsx'; import ChannelStore from 'stores/channel_store.jsx'; +import SuggestionStore from 'stores/suggestion_store.jsx'; import {autocompleteUsersInChannel} from 'actions/user_actions.jsx'; @@ -106,13 +107,24 @@ export default class AtMentionProvider { } componentWillUnmount() { - clearTimeout(this.timeoutId); + this.clearTimeout(this.timeoutId); + } + + clearTimeout() { + if (this.timeoutId) { + clearTimeout(this.timeoutId); + this.timeoutId = ''; + + return true; + } + + return false; } handlePretextChanged(suggestionId, pretext) { - clearTimeout(this.timeoutId); + const hadSuggestions = this.clearTimeout(this.timeoutId); - const captured = (/(?:^|\W)@([a-z0-9\-\._]*)$/i).exec(pretext.toLowerCase()); + const captured = (/(?:^|\W)@([a-z0-9\-._]*)$/i).exec(pretext.toLowerCase()); if (captured) { const prefix = captured[1]; @@ -160,5 +172,10 @@ export default class AtMentionProvider { Constants.AUTOCOMPLETE_TIMEOUT ); } + + if (hadSuggestions) { + // Clear the suggestions since the user has now typed something invalid + SuggestionStore.clearSuggestions(suggestionId); + } } } |