From 07bb5e198fe3763be3794c6aadda2b3af1e34b2e Mon Sep 17 00:00:00 2001 From: Mark Banner Date: Mon, 17 Nov 2014 14:18:46 +0000 Subject: [PATCH] Bug 1074681 - When Loop "rooms" are enabled, hide the old call url generation UI. r=mikedeboer --- browser/components/loop/content/js/panel.js | 50 ++++++++++++------- browser/components/loop/content/js/panel.jsx | 48 +++++++++++------- .../loop/content/shared/css/panel.css | 1 - .../loop/test/desktop-local/panel_test.js | 10 +--- 4 files changed, 64 insertions(+), 45 deletions(-) diff --git a/browser/components/loop/content/js/panel.js b/browser/components/loop/content/js/panel.js index 9e7e361e1098..761a7a5f2236 100644 --- a/browser/components/loop/content/js/panel.js +++ b/browser/components/loop/content/js/panel.js @@ -31,13 +31,19 @@ loop.panel = (function(_, mozL10n) { getDefaultProps: function() { return { - buttonsHidden: false, - selectedTab: "call" + buttonsHidden: false }; }, getInitialState: function() { - return {selectedTab: this.props.selectedTab}; + // XXX Work around props.selectedTab being undefined initially. + // When we don't need to rely on the pref, this can move back to + // getDefaultProps (bug 1100258). + return { + selectedTab: this.props.selectedTab || + (navigator.mozLoop.getLoopBoolPref("rooms.enabled") ? + "rooms" : "call") + }; }, handleSelectTab: function(event) { @@ -678,13 +684,17 @@ loop.panel = (function(_, mozL10n) { } }, + _roomsEnabled: function() { + return navigator.mozLoop.getLoopBoolPref("rooms.enabled"); + }, + _onStatusChanged: function() { var profile = navigator.mozLoop.userProfile; var currUid = this.state.userProfile ? this.state.userProfile.uid : null; var newUid = profile ? profile.uid : null; if (currUid != newUid) { // On profile change (login, logout), switch back to the default tab. - this.selectTab("call"); + this.selectTab(this._roomsEnabled() ? "rooms" : "call"); this.setState({userProfile: profile}); } this.updateServiceErrors(); @@ -692,17 +702,28 @@ loop.panel = (function(_, mozL10n) { /** * The rooms feature is hidden by default for now. Once it gets mainstream, - * this method can be safely removed. + * this method can be simplified. */ - _renderRoomsTab: function() { - if (!navigator.mozLoop.getLoopBoolPref("rooms.enabled")) { - return null; + _renderRoomsOrCallTab: function() { + if (!this._roomsEnabled()) { + return ( + Tab({name: "call"}, + React.DOM.div({className: "content-area"}, + CallUrlResult({client: this.props.client, + notifications: this.props.notifications, + callUrl: this.props.callUrl}), + ToSView(null) + ) + ) + ); } + return ( Tab({name: "rooms"}, RoomList({dispatcher: this.props.dispatcher, store: this.props.roomStore, - userDisplayName: this._getUserDisplayName()}) + userDisplayName: this._getUserDisplayName()}), + ToSView(null) ) ); }, @@ -735,21 +756,14 @@ loop.panel = (function(_, mozL10n) { render: function() { var NotificationListView = sharedViews.NotificationListView; + return ( React.DOM.div(null, NotificationListView({notifications: this.props.notifications, clearOnDocumentHidden: true}), TabView({ref: "tabView", selectedTab: this.props.selectedTab, buttonsHidden: !this.state.userProfile && !this.props.showTabButtons}, - Tab({name: "call"}, - React.DOM.div({className: "content-area"}, - CallUrlResult({client: this.props.client, - notifications: this.props.notifications, - callUrl: this.props.callUrl}), - ToSView(null) - ) - ), - this._renderRoomsTab(), + this._renderRoomsOrCallTab(), Tab({name: "contacts"}, ContactsList({selectTab: this.selectTab, startForm: this.startForm}) diff --git a/browser/components/loop/content/js/panel.jsx b/browser/components/loop/content/js/panel.jsx index bdef66103928..4a2afe337913 100644 --- a/browser/components/loop/content/js/panel.jsx +++ b/browser/components/loop/content/js/panel.jsx @@ -31,13 +31,19 @@ loop.panel = (function(_, mozL10n) { getDefaultProps: function() { return { - buttonsHidden: false, - selectedTab: "call" + buttonsHidden: false }; }, getInitialState: function() { - return {selectedTab: this.props.selectedTab}; + // XXX Work around props.selectedTab being undefined initially. + // When we don't need to rely on the pref, this can move back to + // getDefaultProps (bug 1100258). + return { + selectedTab: this.props.selectedTab || + (navigator.mozLoop.getLoopBoolPref("rooms.enabled") ? + "rooms" : "call") + }; }, handleSelectTab: function(event) { @@ -678,13 +684,17 @@ loop.panel = (function(_, mozL10n) { } }, + _roomsEnabled: function() { + return navigator.mozLoop.getLoopBoolPref("rooms.enabled"); + }, + _onStatusChanged: function() { var profile = navigator.mozLoop.userProfile; var currUid = this.state.userProfile ? this.state.userProfile.uid : null; var newUid = profile ? profile.uid : null; if (currUid != newUid) { // On profile change (login, logout), switch back to the default tab. - this.selectTab("call"); + this.selectTab(this._roomsEnabled() ? "rooms" : "call"); this.setState({userProfile: profile}); } this.updateServiceErrors(); @@ -692,17 +702,28 @@ loop.panel = (function(_, mozL10n) { /** * The rooms feature is hidden by default for now. Once it gets mainstream, - * this method can be safely removed. + * this method can be simplified. */ - _renderRoomsTab: function() { - if (!navigator.mozLoop.getLoopBoolPref("rooms.enabled")) { - return null; + _renderRoomsOrCallTab: function() { + if (!this._roomsEnabled()) { + return ( + +
+ + +
+
+ ); } + return ( + ); }, @@ -735,21 +756,14 @@ loop.panel = (function(_, mozL10n) { render: function() { var NotificationListView = sharedViews.NotificationListView; + return (
- -
- - -
-
- {this._renderRoomsTab()} + {this._renderRoomsOrCallTab()} diff --git a/browser/components/loop/content/shared/css/panel.css b/browser/components/loop/content/shared/css/panel.css index 38d8c6ea6757..974643fe91e1 100644 --- a/browser/components/loop/content/shared/css/panel.css +++ b/browser/components/loop/content/shared/css/panel.css @@ -140,7 +140,6 @@ body { /* Rooms */ .rooms { - background: #f5f5f5; min-height: 100px; } diff --git a/browser/components/loop/test/desktop-local/panel_test.js b/browser/components/loop/test/desktop-local/panel_test.js index 8b3ecd9ba25c..9e260868222d 100644 --- a/browser/components/loop/test/desktop-local/panel_test.js +++ b/browser/components/loop/test/desktop-local/panel_test.js @@ -184,7 +184,7 @@ describe("loop.panel", function() { view = createTestPanelView(); - [callTab, roomsTab, contactsTab] = + [roomsTab, contactsTab] = TestUtils.scryRenderedDOMComponentsWithClass(view, "tab"); }); @@ -203,14 +203,6 @@ describe("loop.panel", function() { expect(roomsTab.getDOMNode().classList.contains("selected")) .to.be.true; }); - - it("should select call tab when clicking tab button", function() { - TestUtils.Simulate.click( - view.getDOMNode().querySelector("li[data-tab-name=\"call\"]")); - - expect(callTab.getDOMNode().classList.contains("selected")) - .to.be.true; - }); }); describe("loop.rooms.enabled off", function() {