{
- this._onContinueClicked();
+ this.props.onFinished();
},
});
},
- _onContinueClicked: function() {
- this.props.onFinished(true);
- },
-
_onPasswordChangeError: function(err) {
let errMsg = err.error || "";
if (err.httpStatus === 403) {
diff --git a/src/components/views/elements/EditableText.js b/src/components/views/elements/EditableText.js
index ce1817c272..1f49bcddae 100644
--- a/src/components/views/elements/EditableText.js
+++ b/src/components/views/elements/EditableText.js
@@ -1,5 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -14,15 +15,9 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-'use strict';
-
-const React = require('react');
+import React from 'react';
import PropTypes from 'prop-types';
-const KEY_TAB = 9;
-const KEY_SHIFT = 16;
-const KEY_WINDOWS = 91;
-
module.exports = React.createClass({
displayName: 'EditableText',
@@ -66,9 +61,7 @@ module.exports = React.createClass({
},
componentWillReceiveProps: function(nextProps) {
- if (nextProps.initialValue !== this.props.initialValue ||
- nextProps.initialValue !== this.value
- ) {
+ if (nextProps.initialValue !== this.props.initialValue || nextProps.initialValue !== this.value) {
this.value = nextProps.initialValue;
if (this.refs.editable_div) {
this.showPlaceholder(!this.value);
@@ -139,7 +132,7 @@ module.exports = React.createClass({
this.showPlaceholder(false);
}
- if (ev.key == "Enter") {
+ if (ev.key === "Enter") {
ev.stopPropagation();
ev.preventDefault();
}
@@ -156,9 +149,9 @@ module.exports = React.createClass({
this.value = ev.target.textContent;
}
- if (ev.key == "Enter") {
+ if (ev.key === "Enter") {
this.onFinish(ev);
- } else if (ev.key == "Escape") {
+ } else if (ev.key === "Escape") {
this.cancelEdit();
}
@@ -193,7 +186,7 @@ module.exports = React.createClass({
const submit = (ev.key === "Enter") || shouldSubmit;
this.setState({
phase: this.Phases.Display,
- }, function() {
+ }, () => {
if (this.value !== this.props.initialValue) {
self.onValueChanged(submit);
}
@@ -204,23 +197,35 @@ module.exports = React.createClass({
const sel = window.getSelection();
sel.removeAllRanges();
- if (this.props.blurToCancel) {this.cancelEdit();} else {this.onFinish(ev, this.props.blurToSubmit);}
+ if (this.props.blurToCancel) {
+ this.cancelEdit();
+ } else {
+ this.onFinish(ev, this.props.blurToSubmit);
+ }
this.showPlaceholder(!this.value);
},
render: function() {
- let editable_el;
+ const {className, editable, initialValue, label, labelClassName} = this.props;
+ let editableEl;
- if (!this.props.editable || (this.state.phase == this.Phases.Display && (this.props.label || this.props.labelClassName) && !this.value)) {
+ if (!editable || (this.state.phase === this.Phases.Display && (label || labelClassName) && !this.value)) {
// show the label
- editable_el = { this.props.label || this.props.initialValue }
;
+ editableEl =
+ { label || initialValue }
+
;
} else {
// show the content editable div, but manually manage its contents as react and contentEditable don't play nice together
- editable_el = ;
+ editableEl = ;
}
- return editable_el;
+ return editableEl;
},
});
diff --git a/src/components/views/globals/PasswordNagBar.js b/src/components/views/globals/PasswordNagBar.js
index 93f4fe06e5..4233363b95 100644
--- a/src/components/views/globals/PasswordNagBar.js
+++ b/src/components/views/globals/PasswordNagBar.js
@@ -1,5 +1,6 @@
/*
Copyright 2017 Vector Creations Ltd
+Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -14,28 +15,15 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-'use strict';
-
import React from 'react';
import sdk from '../../../index';
import Modal from '../../../Modal';
-import dis from '../../../dispatcher';
import { _t } from '../../../languageHandler';
export default React.createClass({
onUpdateClicked: function() {
const SetPasswordDialog = sdk.getComponent('dialogs.SetPasswordDialog');
- Modal.createTrackedDialog('Set Password Dialog', 'Password Nag Bar', SetPasswordDialog, {
- onFinished: (passwordChanged) => {
- if (!passwordChanged) {
- return;
- }
- // Notify SessionStore that the user's password was changed
- dis.dispatch({
- action: 'password_changed',
- });
- },
- });
+ Modal.createTrackedDialog('Set Password Dialog', 'Password Nag Bar', SetPasswordDialog);
},
render: function() {
diff --git a/src/components/views/settings/ChangePassword.js b/src/components/views/settings/ChangePassword.js
index 9cac25e6cc..b2ffe531b5 100644
--- a/src/components/views/settings/ChangePassword.js
+++ b/src/components/views/settings/ChangePassword.js
@@ -1,5 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -14,14 +15,13 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-'use strict';
-
const React = require('react');
import PropTypes from 'prop-types';
const MatrixClientPeg = require("../../../MatrixClientPeg");
const Modal = require("../../../Modal");
const sdk = require("../../../index");
+import dis from "../../../dispatcher";
import Promise from 'bluebird';
import AccessibleButton from '../elements/AccessibleButton';
import { _t } from '../../../languageHandler';
@@ -143,6 +143,9 @@ module.exports = React.createClass({
});
cli.setPassword(authDict, newPassword).then(() => {
+ // Notify SessionStore that the user's password was changed
+ dis.dispatch({action: 'password_changed'});
+
if (this.props.shouldAskForEmail) {
return this._optionallySetEmail().then((confirmed) => {
this.props.onFinished({