diff options
-rw-r--r-- | webapp/components/channel_switch_modal.jsx | 36 | ||||
-rw-r--r-- | webapp/utils/utils.jsx | 7 |
2 files changed, 35 insertions, 8 deletions
diff --git a/webapp/components/channel_switch_modal.jsx b/webapp/components/channel_switch_modal.jsx index 57bc8b2d0..ec257bab5 100644 --- a/webapp/components/channel_switch_modal.jsx +++ b/webapp/components/channel_switch_modal.jsx @@ -27,14 +27,30 @@ 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.handleDmUserChange = this.handleDmUserChange.bind(this); this.suggestionProviders = [new SwitchChannelProvider()]; this.state = { + dmUsers: UserStore.getDirectProfiles(), text: '', error: '' }; } + componentDidMount() { + UserStore.addDmListChangeListener(this.handleDmUserChange); + } + + componentWillUnmount() { + UserStore.removeDmListChangeListener(this.handleDmUserChange); + } + + handleDmUserChange() { + this.setState({ + dmUsers: UserStore.getDirectProfiles() + }); + } + componentDidUpdate(prevProps) { if (this.props.show && !prevProps.show) { const textbox = this.refs.search.getTextbox(); @@ -83,7 +99,25 @@ export default class SwitchChannelModal extends React.Component { if (name.indexOf(Utils.localizeMessage('channel_switch_modal.dm', '(Direct Message)')) > 0) { const dmUsername = name.substr(0, name.indexOf(Utils.localizeMessage('channel_switch_modal.dm', '(Direct Message)')) - 1); - channel = ChannelStore.getByName(Utils.getDirectChannelNameByUsername(dmUsername, UserStore.getCurrentUser().username).trim()); + let user = null; + for (const id in this.state.dmUsers) { + if (this.state.dmUsers[id].username === dmUsername) { + user = this.state.dmUsers[id]; + break; + } + } + + if (user) { + Utils.openDirectChannelToUser( + user, + (ch) => { + channel = ch; + }, + () => { + channel = null; + } + ); + } } else { channel = ChannelStore.getByName(this.state.text.trim()); } diff --git a/webapp/utils/utils.jsx b/webapp/utils/utils.jsx index 5a47b0a63..73765495c 100644 --- a/webapp/utils/utils.jsx +++ b/webapp/utils/utils.jsx @@ -1032,13 +1032,6 @@ export function getDirectChannelName(id, otherId) { return handle; } -export function getDirectChannelNameByUsername(username, otherUsername) { - const id = UserStore.getProfileByUsername(username).id; - const otherId = UserStore.getProfileByUsername(otherUsername).id; - - return getDirectChannelName(id, otherId); -} - // Used to get the id of the other user from a DM channel export function getUserIdFromChannelName(channel) { var ids = channel.name.split('__'); |