summaryrefslogtreecommitdiffstats
path: root/webapp
diff options
context:
space:
mode:
authorDavid Lu <david.lu97@outlook.com>2016-10-04 08:49:57 -0400
committerChristopher Speller <crspeller@gmail.com>2016-10-04 08:49:57 -0400
commit38c34017a3760e62fb08025c76fd3c7a25006e58 (patch)
tree2805ff99c7c6d1ff6b69de002c2f4e53fc469528 /webapp
parent2dd666cb8a16de3a7515e7dae5fe78c9b28b627f (diff)
downloadchat-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
Diffstat (limited to 'webapp')
-rw-r--r--webapp/components/channel_switch_modal.jsx36
-rw-r--r--webapp/utils/utils.jsx7
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('__');