From 393fd26a42ac885443ae2485cfd0cdb3f6559813 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sun, 24 Feb 2019 02:42:41 +0000 Subject: [PATCH 1/3] Settings button in Room Context Menu Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .../context_menus/RoomTileContextMenu.js | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/components/views/context_menus/RoomTileContextMenu.js b/src/components/views/context_menus/RoomTileContextMenu.js index 521282488e..23c5411e2d 100644 --- a/src/components/views/context_menus/RoomTileContextMenu.js +++ b/src/components/views/context_menus/RoomTileContextMenu.js @@ -271,6 +271,28 @@ module.exports = React.createClass({ ); }, + _onClickSettings: function() { + dis.dispatch({ + action: 'view_room', + room_id: this.props.room.roomId, + }, true); + dis.dispatch({ action: 'open_room_settings' }); + if (this.props.onFinished) { + this.props.onFinished(); + } + }, + + _renderSettingsMenu: function() { + return ( +
+
+ + { _t('Settings') } +
+
+ ); + }, + _renderLeaveMenu: function(membership) { if (!membership) { return null; @@ -350,13 +372,17 @@ module.exports = React.createClass({ // Can't set notif level or tags on non-join rooms if (myMembership !== 'join') { - return this._renderLeaveMenu(myMembership); + return
+ { this._renderSettingsMenu() } + { this._renderLeaveMenu(myMembership) } +
; } return (
{ this._renderNotifMenu() }
+ { this._renderSettingsMenu() } { this._renderLeaveMenu(myMembership) }
{ this._renderRoomTagMenu() } From d4b6ce69321ca3d4313ed5ceca005347941e0df5 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 25 Feb 2019 23:08:51 +0000 Subject: [PATCH 2/3] Apply PR feedback, don't change room to go to its settings Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- res/css/views/dialogs/_RoomSettingsDialog.scss | 10 ++++++++++ .../views/context_menus/RoomTileContextMenu.js | 11 ++++++----- src/components/views/dialogs/RoomSettingsDialog.js | 6 +++++- src/stores/RoomViewStore.js | 2 +- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/res/css/views/dialogs/_RoomSettingsDialog.scss b/res/css/views/dialogs/_RoomSettingsDialog.scss index de675abe32..e2a0238756 100644 --- a/res/css/views/dialogs/_RoomSettingsDialog.scss +++ b/res/css/views/dialogs/_RoomSettingsDialog.scss @@ -32,3 +32,13 @@ limitations under the License. .mx_RoomSettingsDialog_warningIcon:before { mask-image: url('$(res)/img/feather-icons/warning-triangle.svg'); } + +.mx_RoomSettingsDialog .mx_Dialog_title { + -ms-text-overflow: ellipsis; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + margin: 0 auto; + padding-left: 40px; + padding-right: 80px; +} diff --git a/src/components/views/context_menus/RoomTileContextMenu.js b/src/components/views/context_menus/RoomTileContextMenu.js index 23c5411e2d..f494fbd961 100644 --- a/src/components/views/context_menus/RoomTileContextMenu.js +++ b/src/components/views/context_menus/RoomTileContextMenu.js @@ -273,10 +273,9 @@ module.exports = React.createClass({ _onClickSettings: function() { dis.dispatch({ - action: 'view_room', + action: 'open_room_settings', room_id: this.props.room.roomId, - }, true); - dis.dispatch({ action: 'open_room_settings' }); + }); if (this.props.onFinished) { this.props.onFinished(); } @@ -373,8 +372,9 @@ module.exports = React.createClass({ // Can't set notif level or tags on non-join rooms if (myMembership !== 'join') { return
- { this._renderSettingsMenu() } { this._renderLeaveMenu(myMembership) } +
+ { this._renderSettingsMenu() }
; } @@ -382,10 +382,11 @@ module.exports = React.createClass({
{ this._renderNotifMenu() }
- { this._renderSettingsMenu() } { this._renderLeaveMenu(myMembership) }
{ this._renderRoomTagMenu() } +
+ { this._renderSettingsMenu() }
); }, diff --git a/src/components/views/dialogs/RoomSettingsDialog.js b/src/components/views/dialogs/RoomSettingsDialog.js index c73edb179c..1d53425755 100644 --- a/src/components/views/dialogs/RoomSettingsDialog.js +++ b/src/components/views/dialogs/RoomSettingsDialog.js @@ -23,6 +23,7 @@ import RolesRoomSettingsTab from "../settings/tabs/RolesRoomSettingsTab"; import GeneralRoomSettingsTab from "../settings/tabs/GeneralRoomSettingsTab"; import SecurityRoomSettingsTab from "../settings/tabs/SecurityRoomSettingsTab"; import sdk from "../../../index"; +import MatrixClientPeg from "../../../MatrixClientPeg"; export default class RoomSettingsDialog extends React.Component { static propTypes = { @@ -60,9 +61,12 @@ export default class RoomSettingsDialog extends React.Component { render() { const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog'); + const room = MatrixClientPeg.get().getRoom(this.props.roomId); + const title = _t("Room Settings") + ' - ' + room.name; + return ( + onFinished={this.props.onFinished} title={title}>
diff --git a/src/stores/RoomViewStore.js b/src/stores/RoomViewStore.js index 7d425ec94c..73eff6f6d4 100644 --- a/src/stores/RoomViewStore.js +++ b/src/stores/RoomViewStore.js @@ -119,7 +119,7 @@ class RoomViewStore extends Store { case 'open_room_settings': { const RoomSettingsDialog = sdk.getComponent("dialogs.RoomSettingsDialog"); Modal.createTrackedDialog('Room settings', '', RoomSettingsDialog, { - roomId: this._state.roomId, + roomId: payload.room_id || this._state.roomId, }, 'mx_SettingsDialog'); break; } From 7029695224a8547a0df1c30b8fc74240bf8cd967 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 25 Feb 2019 23:26:24 +0000 Subject: [PATCH 3/3] make it i18n friendly Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/views/dialogs/RoomSettingsDialog.js | 6 ++---- src/i18n/strings/en_EN.json | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/components/views/dialogs/RoomSettingsDialog.js b/src/components/views/dialogs/RoomSettingsDialog.js index 52b5805234..22b7857264 100644 --- a/src/components/views/dialogs/RoomSettingsDialog.js +++ b/src/components/views/dialogs/RoomSettingsDialog.js @@ -61,12 +61,10 @@ export default class RoomSettingsDialog extends React.Component { render() { const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog'); - const room = MatrixClientPeg.get().getRoom(this.props.roomId); - const title = _t("Room Settings") + ' - ' + room.name; - + const roomName = MatrixClientPeg.get().getRoom(this.props.roomId).name; return ( + onFinished={this.props.onFinished} title={_t("Room Settings - %(roomName)s", {roomName})}>
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 979bbd0553..6bf8ccfaf3 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1116,7 +1116,7 @@ "To help avoid duplicate issues, please view existing issues first (and add a +1) or create a new issue if you can't find it.": "To help avoid duplicate issues, please view existing issues first (and add a +1) or create a new issue if you can't find it.", "Report bugs & give feedback": "Report bugs & give feedback", "Go back": "Go back", - "Room Settings": "Room Settings", + "Room Settings - %(roomName)s": "Room Settings - %(roomName)s", "Failed to upgrade room": "Failed to upgrade room", "The room upgrade could not be completed": "The room upgrade could not be completed", "Upgrade this room to version %(version)s": "Upgrade this room to version %(version)s",