From 0b296dd8c2aefefe89787be5cc627d44cf431150 Mon Sep 17 00:00:00 2001
From: Joshua Borton <digitaltoad@gmail.com>
Date: Tue, 15 Nov 2016 14:23:26 -0500
Subject: Add Add `onExit` hook to new_channel_modal (#4344)

This delays updating the url with the new channel until after the modal
is exited which bypasses a state where the center textarea is focused
and then focus is removed due to how react-overlays handles restoring
focus to the last element focused before the modal was shown.
---
 webapp/components/new_channel_flow.jsx | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

(limited to 'webapp/components/new_channel_flow.jsx')

diff --git a/webapp/components/new_channel_flow.jsx b/webapp/components/new_channel_flow.jsx
index c6c265725..b37e6cf35 100644
--- a/webapp/components/new_channel_flow.jsx
+++ b/webapp/components/new_channel_flow.jsx
@@ -53,6 +53,7 @@ class NewChannelFlow extends React.Component {
         super(props);
 
         this.doSubmit = this.doSubmit.bind(this);
+        this.onModalExited = this.onModalExited.bind(this);
         this.typeSwitched = this.typeSwitched.bind(this);
         this.urlChangeRequested = this.urlChangeRequested.bind(this);
         this.urlChangeSubmitted = this.urlChangeSubmitted.bind(this);
@@ -117,8 +118,11 @@ class NewChannelFlow extends React.Component {
                             member: data2.member
                         });
 
+                        this.doOnModalExited = () => {
+                            browserHistory.push(TeamStore.getCurrentTeamRelativeUrl() + '/channels/' + data2.channel.name);
+                        };
+
                         this.props.onModalDismissed();
-                        browserHistory.push(TeamStore.getCurrentTeamRelativeUrl() + '/channels/' + data2.channel.name);
                     }
                 );
             },
@@ -143,6 +147,11 @@ class NewChannelFlow extends React.Component {
             }
         );
     }
+    onModalExited() {
+        if (this.doOnModalExited) {
+            this.doOnModalExited();
+        }
+    }
     typeSwitched() {
         if (this.state.channelType === 'P') {
             this.setState({channelType: 'O'});
@@ -223,6 +232,7 @@ class NewChannelFlow extends React.Component {
                     serverError={this.state.serverError}
                     onSubmitChannel={this.doSubmit}
                     onModalDismissed={this.props.onModalDismissed}
+                    onModalExited={this.onModalExited}
                     onTypeSwitched={this.typeSwitched}
                     onChangeURLPressed={this.urlChangeRequested}
                     onDataChanged={this.channelDataChanged}
@@ -233,6 +243,7 @@ class NewChannelFlow extends React.Component {
                     channelData={channelData}
                     serverError={this.state.serverError}
                     onSubmitChannel={this.doSubmit}
+                    onModalExited={this.onModalExited}
                     onModalDismissed={this.props.onModalDismissed}
                     onTypeSwitched={this.typeSwitched}
                     onChangeURLPressed={this.urlChangeRequested}
@@ -248,6 +259,7 @@ class NewChannelFlow extends React.Component {
                     serverError={this.state.serverError}
                     onModalSubmit={this.urlChangeSubmitted}
                     onModalDismissed={this.urlChangeDismissed}
+                    onModalExited={this.onModalExited}
                 />
             </span>
         );
-- 
cgit v1.2.3-1-g7c22

