diff --git a/webapp/actions/channel_actions.jsx b/webapp/actions/channel_actions.jsx index 8364fe9b61..61c839652f 100644 --- a/webapp/actions/channel_actions.jsx +++ b/webapp/actions/channel_actions.jsx @@ -118,7 +118,7 @@ export function removeUserFromChannel(channelId, userId, success, error) { export function openDirectChannelToUser(user, success, error) { const channelName = Utils.getDirectChannelName(UserStore.getCurrentId(), user.id); - let channel = ChannelStore.getByName(channelName); + const channel = ChannelStore.getByName(channelName); if (channel) { PreferenceStore.setPreference(Preferences.CATEGORY_DIRECT_CHANNEL_SHOW, user.id, 'true'); @@ -137,16 +137,6 @@ export function openDirectChannelToUser(user, success, error) { return; } - channel = { - name: channelName, - last_post_at: 0, - total_msg_count: 0, - type: 'D', - display_name: user.username, - teammate_id: user.id, - status: UserStore.getStatus(user.id) - }; - Client.createDirectChannel( user.id, (data) => { diff --git a/webapp/components/channel_switch_modal.jsx b/webapp/components/channel_switch_modal.jsx index 7d15a9c451..17193d1969 100644 --- a/webapp/components/channel_switch_modal.jsx +++ b/webapp/components/channel_switch_modal.jsx @@ -18,6 +18,7 @@ import * as Utils from 'utils/utils.jsx'; import React from 'react'; import $ from 'jquery'; + export default class SwitchChannelModal extends React.Component { constructor() { super(); @@ -28,6 +29,8 @@ export default class SwitchChannelModal extends React.Component { this.onExited = this.onExited.bind(this); this.handleKeyDown = this.handleKeyDown.bind(this); this.handleSubmit = this.handleSubmit.bind(this); + this.switchToChannel = this.switchToChannel.bind(this); + this.suggestionProviders = [new SwitchChannelProvider()]; this.state = { @@ -92,16 +95,21 @@ export default class SwitchChannelModal extends React.Component { user, (ch) => { channel = ch; + this.switchToChannel(channel); }, () => { channel = null; + this.switchToChannel(channel); } ); } } else { channel = ChannelStore.getByName(this.state.text.trim()); + this.switchToChannel(channel); } + } + switchToChannel(channel) { if (channel !== null) { goToChannel(channel); this.onHide(); diff --git a/webapp/components/suggestion/channel_mention_provider.jsx b/webapp/components/suggestion/channel_mention_provider.jsx index 17dbb6e480..0058bcc73b 100644 --- a/webapp/components/suggestion/channel_mention_provider.jsx +++ b/webapp/components/suggestion/channel_mention_provider.jsx @@ -124,6 +124,7 @@ export default class ChannelMentionProvider { const mentions = wrapped.map((item) => '!' + item.channel.name); + SuggestionStore.clearSuggestions(suggestionId); SuggestionStore.addSuggestions(suggestionId, mentions, wrapped, ChannelMentionSuggestion, captured[2]); } } diff --git a/webapp/components/suggestion/emoticon_provider.jsx b/webapp/components/suggestion/emoticon_provider.jsx index af8cac0707..2af61ea9ea 100644 --- a/webapp/components/suggestion/emoticon_provider.jsx +++ b/webapp/components/suggestion/emoticon_provider.jsx @@ -91,6 +91,7 @@ export default class EmoticonProvider { const terms = matched.map((emoticon) => ':' + emoticon.name + ':'); if (terms.length > 0) { + SuggestionStore.clearSuggestions(suggestionId); SuggestionStore.addSuggestions(suggestionId, terms, matched, EmoticonSuggestion, text); hasSuggestions = true; diff --git a/webapp/components/suggestion/search_channel_provider.jsx b/webapp/components/suggestion/search_channel_provider.jsx index 1bfcda77d9..0f07b6e290 100644 --- a/webapp/components/suggestion/search_channel_provider.jsx +++ b/webapp/components/suggestion/search_channel_provider.jsx @@ -58,6 +58,7 @@ export default class SearchChannelProvider { privateChannels.sort((a, b) => a.name.localeCompare(b.name)); const privateChannelNames = privateChannels.map((channel) => channel.name); + SuggestionStore.clearSuggestions(suggestionId); SuggestionStore.addSuggestions(suggestionId, publicChannelNames, publicChannels, SearchChannelSuggestion, channelPrefix); SuggestionStore.addSuggestions(suggestionId, privateChannelNames, privateChannels, SearchChannelSuggestion, channelPrefix); } diff --git a/webapp/components/suggestion/switch_channel_provider.jsx b/webapp/components/suggestion/switch_channel_provider.jsx index 94622b5360..8921399ce3 100644 --- a/webapp/components/suggestion/switch_channel_provider.jsx +++ b/webapp/components/suggestion/switch_channel_provider.jsx @@ -1,15 +1,18 @@ // Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. -import React from 'react'; +import Suggestion from './suggestion.jsx'; import ChannelStore from 'stores/channel_store.jsx'; -import SuggestionStore from 'stores/suggestion_store.jsx'; -import Suggestion from './suggestion.jsx'; -import Constants from 'utils/constants.jsx'; -import StatusIcon from 'components/status_icon.jsx'; + +import {autocompleteUsersInTeam} from 'actions/user_actions.jsx'; + +import AppDispatcher from 'dispatcher/app_dispatcher.jsx'; +import {Constants, ActionTypes} from 'utils/constants.jsx'; import * as Utils from 'utils/utils.jsx'; +import React from 'react'; + class SwitchChannelSuggestion extends Suggestion { render() { const {item, isSelection} = this.props; @@ -31,8 +34,6 @@ class SwitchChannelSuggestion extends Suggestion { icon =