summaryrefslogtreecommitdiffstats
path: root/web/react
diff options
context:
space:
mode:
authornickago <ngonella@calpoly.edu>2015-07-23 09:20:37 -0700
committernickago <ngonella@calpoly.edu>2015-07-23 10:40:29 -0700
commitdbbe40e893419d78e23b0d73c8bd6a30478cde2c (patch)
treef1bddf3b77789c226da21b73b7d198eed8e0fa05 /web/react
parent0acab11cf46a9e279d16e803ad32b8aa67e20679 (diff)
downloadchat-dbbe40e893419d78e23b0d73c8bd6a30478cde2c.tar.gz
chat-dbbe40e893419d78e23b0d73c8bd6a30478cde2c.tar.bz2
chat-dbbe40e893419d78e23b0d73c8bd6a30478cde2c.zip
Added a condition to close event listeners on modals when the component
is unmounted, and set all unsaved data to be cleared from user settings
Diffstat (limited to 'web/react')
-rw-r--r--web/react/components/edit_channel_modal.jsx10
-rw-r--r--web/react/components/rename_channel_modal.jsx10
-rw-r--r--web/react/components/rename_team_modal.jsx11
-rw-r--r--web/react/components/user_settings.jsx36
4 files changed, 40 insertions, 27 deletions
diff --git a/web/react/components/edit_channel_modal.jsx b/web/react/components/edit_channel_modal.jsx
index 0398dba93..a35a531b5 100644
--- a/web/react/components/edit_channel_modal.jsx
+++ b/web/react/components/edit_channel_modal.jsx
@@ -30,15 +30,19 @@ module.exports = React.createClass({
handleUserInput: function(e) {
this.setState({ description: e.target.value });
},
+ handleClose: function() {
+ this.setState({description: "", server_error: ""});
+ },
componentDidMount: function() {
var self = this;
$(this.refs.modal.getDOMNode()).on('show.bs.modal', function(e) {
var button = e.relatedTarget;
self.setState({ description: $(button).attr('data-desc'), title: $(button).attr('data-title'), channel_id: $(button).attr('data-channelid'), server_error: "" });
});
- $(this.refs.modal.getDOMNode()).on('hidden.bs.modal', function() {
- self.setState({description: ""});
- })
+ $(this.refs.modal.getDOMNode()).on('hidden.bs.modal', this.handleClose)
+ },
+ componentWillUnmount: function() {
+ $(this.refs.modal.getDOMNode()).off('hidden.bs.modal', this.handleClose)
},
getInitialState: function() {
return { description: "", title: "", channel_id: "" };
diff --git a/web/react/components/rename_channel_modal.jsx b/web/react/components/rename_channel_modal.jsx
index 5488b34c6..9e4a25f85 100644
--- a/web/react/components/rename_channel_modal.jsx
+++ b/web/react/components/rename_channel_modal.jsx
@@ -89,15 +89,19 @@ module.exports = React.createClass({
this.refs.channel_name.getDOMNode().value = channel_name;
this.setState({ channel_name: channel_name })
},
+ handleClose: function() {
+ this.setState({display_name: "", channel_name: "", display_name_error: "", server_error: "", name_error: ""});
+ },
componentDidMount: function() {
var self = this;
$(this.refs.modal.getDOMNode()).on('show.bs.modal', function(e) {
var button = $(e.relatedTarget);
self.setState({ display_name: button.attr('data-display'), title: button.attr('data-name'), channel_id: button.attr('data-channelid') });
});
- $(this.refs.modal.getDOMNode()).on('hidden.bs.modal', function() {
- self.setState({display_name: "", channel_name: "", display_name_error: "", server_error: "", name_error: ""});
- });
+ $(this.refs.modal.getDOMNode()).on('hidden.bs.modal', this.handleClose);
+ },
+ componentWillUnmount: function() {
+ $(this.refs.modal.getDOMNode()).off('hidden.bs.modal', this.handleClose);
},
getInitialState: function() {
return { display_name: "", channel_name: "", channel_id: "" };
diff --git a/web/react/components/rename_team_modal.jsx b/web/react/components/rename_team_modal.jsx
index 79836e4a8..dfd775a3b 100644
--- a/web/react/components/rename_team_modal.jsx
+++ b/web/react/components/rename_team_modal.jsx
@@ -44,11 +44,14 @@ module.exports = React.createClass({
onNameChange: function() {
this.setState({ name: this.refs.name.getDOMNode().value })
},
+ handleClose: function() {
+ this.setState({ name: this.props.teamDisplayName, name_error: "", server_error: ""});
+ },
componentDidMount: function() {
- var self = this;
- $(this.refs.modal.getDOMNode()).on('hidden.bs.modal', function(e) {
- self.setState({ name: self.props.teamDisplayName, name_error: "", server_error: ""});
- });
+ $(this.refs.modal.getDOMNode()).on('hidden.bs.modal', this.handleClose);
+ },
+ componentWillUnmount: function() {
+ $(this.refs.modal.getDOMNode()).off('hidden.bs.modal', this.handleClose);
},
getInitialState: function() {
return { name: this.props.teamDisplayName };
diff --git a/web/react/components/user_settings.jsx b/web/react/components/user_settings.jsx
index 17b8a5e30..b50754ab5 100644
--- a/web/react/components/user_settings.jsx
+++ b/web/react/components/user_settings.jsx
@@ -11,6 +11,7 @@ var client = require('../utils/client.jsx');
var AsyncClient = require('../utils/async_client.jsx');
var utils = require('../utils/utils.jsx');
var Constants = require('../utils/constants.jsx');
+var assign = require('object-assign');
function getNotificationsStateFromStores() {
var user = UserStore.getCurrentUser();
@@ -96,16 +97,18 @@ var NotificationsTab = React.createClass({
);
},
handleClose: function() {
- this.setState({server_error: null});
+ $(this.getDOMNode()).find(".form-control").each(function() {
+ this.value = "";
+ });
+
+ this.setState(assign({},getNotificationsStateFromStores(),{server_error: null}));
},
componentDidMount: function() {
UserStore.addChangeListener(this._onChange);
-
$('#user_settings1').on('hidden.bs.modal', this.handleClose);
},
componentWillUnmount: function() {
UserStore.removeChangeListener(this._onChange);
-
$('#user_settings1').off('hidden.bs.modal', this.handleClose);
},
_onChange: function() {
@@ -510,15 +513,10 @@ var SecurityTab = React.createClass({
$("#user_settings1").modal('hide');
},
handleClose: function() {
- if(this.props.activeSection === 'password') {
- this.refs.curPass.getDOMNode().value = "";
- this.refs.newPass.getDOMNode().value = "";
- this.refs.reNewPass.getDOMNode().value = "";
-
- this.setState({current_password: '', new_password: '', confirm_password: ''});
- }
-
- this.setState({server_error: null, password_error: null});
+ $(this.getDOMNode()).find(".form-control").each(function() {
+ this.value = "";
+ });
+ this.setState({current_password: '', new_password: '', confirm_password: '', server_error: null, password_error: null});
},
componentDidMount: function() {
$('#user_settings1').on('hidden.bs.modal', this.handleClose);
@@ -542,7 +540,7 @@ var SecurityTab = React.createClass({
<div className="form-group">
<label className="col-sm-5 control-label">Current Password</label>
<div className="col-sm-7">
- <input ref="curPass" className="form-control" type="password" onChange={this.updateCurrentPassword} value={this.state.current_password}/>
+ <input className="form-control" type="password" onChange={this.updateCurrentPassword} value={this.state.current_password}/>
</div>
</div>
);
@@ -550,7 +548,7 @@ var SecurityTab = React.createClass({
<div className="form-group">
<label className="col-sm-5 control-label">New Password</label>
<div className="col-sm-7">
- <input ref="newPass" className="form-control" type="password" onChange={this.updateNewPassword} value={this.state.new_password}/>
+ <input className="form-control" type="password" onChange={this.updateNewPassword} value={this.state.new_password}/>
</div>
</div>
);
@@ -558,7 +556,7 @@ var SecurityTab = React.createClass({
<div className="form-group">
<label className="col-sm-5 control-label">Retype New Password</label>
<div className="col-sm-7">
- <input ref="reNewPass" className="form-control" type="password" onChange={this.updateConfirmPassword} value={this.state.confirm_password}/>
+ <input className="form-control" type="password" onChange={this.updateConfirmPassword} value={this.state.confirm_password}/>
</div>
</div>
);
@@ -760,7 +758,11 @@ var GeneralTab = React.createClass({
this.props.updateSection(section);
},
handleClose: function() {
- this.setState({client_error: null, server_error: null, email_error: null});
+ $(this.getDOMNode()).find(".form-control").each(function() {
+ this.value = "";
+ });
+
+ this.setState(assign({}, this.getInitialState(), {client_error: null, server_error: null, email_error: null}));
},
componentDidMount: function() {
$('#user_settings1').on('hidden.bs.modal', this.handleClose);
@@ -1012,7 +1014,7 @@ var AppearanceTab = React.createClass({
this.setState({ theme: hex.toLowerCase() });
},
handleClose: function() {
- this.setState({server_error: null});
+ this.setState({server_error: null});
},
componentDidMount: function() {
if (this.props.activeSection === "theme") {