diff --git a/skins/base/css/molecules/MatrixToolbar.css b/skins/base/css/molecules/MatrixToolbar.css index 1e35ee270f..9dc846026f 100644 --- a/skins/base/css/molecules/MatrixToolbar.css +++ b/skins/base/css/molecules/MatrixToolbar.css @@ -25,4 +25,10 @@ limitations under the License. .mx_MatrixToolbar button { margin-left: 12px; +} + +.mx_MatrixToolbar_close { + float: right; + margin-top: 3px; + margin-right: 12px; } \ No newline at end of file diff --git a/skins/base/img/close-white.png b/skins/base/img/close-white.png new file mode 100644 index 0000000000..d8752ed9fe Binary files /dev/null and b/skins/base/img/close-white.png differ diff --git a/skins/base/views/molecules/MatrixToolbar.js b/skins/base/views/molecules/MatrixToolbar.js index c8b4c97cdc..f72304e1fa 100644 --- a/skins/base/views/molecules/MatrixToolbar.js +++ b/skins/base/views/molecules/MatrixToolbar.js @@ -24,15 +24,21 @@ var LogoutButton = ComponentBroker.get("atoms/LogoutButton"); var EnableNotificationsButton = ComponentBroker.get("atoms/EnableNotificationsButton"); var MatrixToolbarController = require("../../../../src/controllers/molecules/MatrixToolbar"); +var Notifier = ComponentBroker.get('organisms/Notifier'); module.exports = React.createClass({ displayName: 'MatrixToolbar', mixins: [MatrixToolbarController], + hideToolbar: function() { + Notifier.setToolbarHidden(true); + }, + render: function() { return (
You are not receiving desktop notifications. +
); } diff --git a/skins/base/views/pages/MatrixChat.js b/skins/base/views/pages/MatrixChat.js index 15da07f9d3..1b75679272 100644 --- a/skins/base/views/pages/MatrixChat.js +++ b/skins/base/views/pages/MatrixChat.js @@ -75,7 +75,7 @@ module.exports = React.createClass({ break; } - if (Notifier.supportsDesktopNotifications() && !Notifier.isEnabled()) { + if (Notifier.supportsDesktopNotifications() && !Notifier.isEnabled() && !Notifier.isToolbarHidden()) { return (
diff --git a/src/controllers/organisms/Notifier.js b/src/controllers/organisms/Notifier.js index cd99d32076..0d493bf340 100644 --- a/src/controllers/organisms/Notifier.js +++ b/src/controllers/organisms/Notifier.js @@ -27,10 +27,14 @@ var dis = require("../../dispatcher"); * } */ +// XXX: This isn't an organism surely in the atomic sense of the word +// what on earth is it doing here?! + module.exports = { start: function() { this.boundOnRoomTimeline = this.onRoomTimeline.bind(this); MatrixClientPeg.get().on('Room.timeline', this.boundOnRoomTimeline); + this.state = { 'toolbarHidden' : false }; }, stop: function() { @@ -82,6 +86,8 @@ module.exports = { value: false }); } + + this.setToolbarHidden(false); }, isEnabled: function() { @@ -94,6 +100,18 @@ module.exports = { return enabled === 'true'; }, + setToolbarHidden: function(hidden) { + this.state.toolbarHidden = hidden; + dis.dispatch({ + action: "notifier_enabled", + value: this.isEnabled() + }); + }, + + isToolbarHidden: function() { + return this.state.toolbarHidden; + }, + onRoomTimeline: function(ev, room, toStartOfTimeline) { if (toStartOfTimeline) return; if (ev.sender && ev.sender.userId == MatrixClientPeg.get().credentials.userId) return;