diff options
author | David Lu <david.lu97@outlook.com> | 2016-10-04 08:49:57 -0400 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2016-10-04 08:49:57 -0400 |
commit | 38c34017a3760e62fb08025c76fd3c7a25006e58 (patch) | |
tree | 2805ff99c7c6d1ff6b69de002c2f4e53fc469528 | |
parent | 2dd666cb8a16de3a7515e7dae5fe78c9b28b627f (diff) | |
download | chat-38c34017a3760e62fb08025c76fd3c7a25006e58.tar.gz chat-38c34017a3760e62fb08025c76fd3c7a25006e58.tar.bz2 chat-38c34017a3760e62fb08025c76fd3c7a25006e58.zip |
PLT-4200/3708 Fixed outside team DM switching, allowed switching to uncreated DMs (#4111)
* Fixed outside team DM switching, allowed switching to uncreated DMs
* Update channel_switch_modal.jsx
-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('__'); |