From a8231f7bf9b8a0d3bdaf7fc1d6ce6ee1d61df4dc Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Thu, 5 Oct 2017 08:26:57 +0100
Subject: [PATCH 1/8] Remove redundant stale onKeyDown
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
src/components/views/dialogs/TextInputDialog.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/views/dialogs/TextInputDialog.js b/src/components/views/dialogs/TextInputDialog.js
index c924da7745..5ea4191e5e 100644
--- a/src/components/views/dialogs/TextInputDialog.js
+++ b/src/components/views/dialogs/TextInputDialog.js
@@ -68,7 +68,7 @@ export default React.createClass({
From 6a4e3792d4aa563c521eadfd1bc858a343894742 Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Fri, 6 Oct 2017 12:07:38 +0100
Subject: [PATCH 2/8] split handlers into state and non-states
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
src/TextForEvent.js | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/src/TextForEvent.js b/src/TextForEvent.js
index a21eb5c251..fa8efe028f 100644
--- a/src/TextForEvent.js
+++ b/src/TextForEvent.js
@@ -291,12 +291,15 @@ function textForWidgetEvent(event) {
const handlers = {
'm.room.message': textForMessageEvent,
- 'm.room.name': textForRoomNameEvent,
- 'm.room.topic': textForTopicEvent,
- 'm.room.member': textForMemberEvent,
'm.call.invite': textForCallInviteEvent,
'm.call.answer': textForCallAnswerEvent,
'm.call.hangup': textForCallHangupEvent,
+};
+
+const stateHandlers = {
+ 'm.room.name': textForRoomNameEvent,
+ 'm.room.topic': textForTopicEvent,
+ 'm.room.member': textForMemberEvent,
'm.room.third_party_invite': textForThreePidInviteEvent,
'm.room.history_visibility': textForHistoryVisibilityEvent,
'm.room.encryption': textForEncryptionEvent,
@@ -307,8 +310,8 @@ const handlers = {
module.exports = {
textForEvent: function(ev) {
- const hdlr = handlers[ev.getType()];
- if (!hdlr) return '';
- return hdlr(ev);
+ const handler = ev.isState() ? stateHandlers[ev.getType()] : handlers[ev.getType()];
+ if (handler) return handler(ev);
+ return '';
},
};
From 91ba939e23eef52634a5618041008cbe30c73e2b Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Fri, 6 Oct 2017 12:10:07 +0100
Subject: [PATCH 3/8] tiny bit of de-lint for consistency
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
src/TextForEvent.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/TextForEvent.js b/src/TextForEvent.js
index fa8efe028f..ccb4c29a9c 100644
--- a/src/TextForEvent.js
+++ b/src/TextForEvent.js
@@ -243,7 +243,7 @@ function textForPowerEvent(event) {
if (to !== from) {
diff.push(
_t('%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s', {
- userId: userId,
+ userId,
fromPowerLevel: Roles.textualPowerLevel(from, userDefault),
toPowerLevel: Roles.textualPowerLevel(to, userDefault),
}),
@@ -254,7 +254,7 @@ function textForPowerEvent(event) {
return '';
}
return _t('%(senderName)s changed the power level of %(powerLevelDiffText)s.', {
- senderName: senderName,
+ senderName,
powerLevelDiffText: diff.join(", "),
});
}
From 152499a17d0683a565608a7f019ae99740a29b97 Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Fri, 6 Oct 2017 12:16:54 +0100
Subject: [PATCH 4/8] DRY map lookup
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
src/TextForEvent.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/TextForEvent.js b/src/TextForEvent.js
index ccb4c29a9c..6345403f09 100644
--- a/src/TextForEvent.js
+++ b/src/TextForEvent.js
@@ -310,7 +310,7 @@ const stateHandlers = {
module.exports = {
textForEvent: function(ev) {
- const handler = ev.isState() ? stateHandlers[ev.getType()] : handlers[ev.getType()];
+ const handler = (ev.isState() ? stateHandlers : handlers)[ev.getType()];
if (handler) return handler(ev);
return '';
},
From 92be3af990ecd96cfa1bbef3bc2cdab3554b819b Mon Sep 17 00:00:00 2001
From: David Baker
Date: Tue, 10 Oct 2017 19:16:42 +0100
Subject: [PATCH 5/8] Make it clearer which HS you're logging into
Otherwise there's no indication without clicking 'custom server'
---
src/components/structures/login/Login.js | 1 +
src/components/views/elements/Dropdown.js | 10 ++++++++++
src/components/views/login/PasswordLogin.js | 14 +++++++++++++-
src/i18n/strings/en_EN.json | 3 ++-
4 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/src/components/structures/login/Login.js b/src/components/structures/login/Login.js
index a6c0a70c66..b88aa094dc 100644
--- a/src/components/structures/login/Login.js
+++ b/src/components/structures/login/Login.js
@@ -290,6 +290,7 @@ module.exports = React.createClass({
onPhoneNumberChanged={this.onPhoneNumberChanged}
onForgotPasswordClick={this.props.onForgotPasswordClick}
loginIncorrect={this.state.loginIncorrect}
+ hsUrl={this.state.enteredHomeserverUrl}
/>
);
case 'm.login.cas':
diff --git a/src/components/views/elements/Dropdown.js b/src/components/views/elements/Dropdown.js
index c049c38a68..1b2117bb6a 100644
--- a/src/components/views/elements/Dropdown.js
+++ b/src/components/views/elements/Dropdown.js
@@ -26,6 +26,12 @@ class MenuOption extends React.Component {
this._onClick = this._onClick.bind(this);
}
+ getDefaultProps() {
+ return {
+ disabled: false,
+ }
+ }
+
_onMouseEnter() {
this.props.onMouseEnter(this.props.dropdownKey);
}
@@ -153,6 +159,8 @@ export default class Dropdown extends React.Component {
}
_onInputClick(ev) {
+ if (this.props.disabled) return;
+
if (!this.state.expanded) {
this.setState({
expanded: true,
@@ -329,4 +337,6 @@ Dropdown.propTypes = {
// in the dropped-down menu.
getShortOption: React.PropTypes.func,
value: React.PropTypes.string,
+ // negative for consistency with HTML
+ disabled: React.PropTypes.bool,
}
diff --git a/src/components/views/login/PasswordLogin.js b/src/components/views/login/PasswordLogin.js
index 9f855616fc..4e37e30f65 100644
--- a/src/components/views/login/PasswordLogin.js
+++ b/src/components/views/login/PasswordLogin.js
@@ -186,6 +186,17 @@ class PasswordLogin extends React.Component {
const loginField = this.renderLoginField(this.state.loginType);
+ let matrixIdText = '';
+ if (this.props.hsUrl) {
+ try {
+ const parsedHsUrl = new URL(this.props.hsUrl);
+ matrixIdText = _t('%(serverName)s Matrix ID', {serverName: parsedHsUrl.hostname});
+ } catch (e) {
+ console.log(e);
+ // pass
+ }
+ }
+
return (