From 09a097dfacfc97d43e20775e62f417610dcb9228 Mon Sep 17 00:00:00 2001 From: NejcZdovc Date: Fri, 28 Jul 2017 09:26:29 +0900 Subject: [PATCH] Fixes logic for components Addresses #9283 --- .../components/navigation/browserAction.js | 3 +- .../navigation/buttons/bookmarkButton.js | 72 +++++-------------- .../navigation/buttons/homeButton.js | 39 +++++----- .../buttons/navigationBarButtonContainer.js | 6 +- .../navigation/buttons/reloadButton.js | 27 ++----- .../navigation/buttons/stopButton.js | 35 ++++++--- .../components/navigation/navigationBar.js | 70 ++++++------------ app/renderer/components/navigation/urlBar.js | 30 ++------ .../components/navigation/urlBarIcon.js | 9 +-- test/navbar-components/navigationBarTest.js | 24 ++----- 10 files changed, 105 insertions(+), 210 deletions(-) diff --git a/app/renderer/components/navigation/browserAction.js b/app/renderer/components/navigation/browserAction.js index cc086426143..ef7cd1fb31e 100644 --- a/app/renderer/components/navigation/browserAction.js +++ b/app/renderer/components/navigation/browserAction.js @@ -84,7 +84,8 @@ class BrowserAction extends React.Component { // TODO(bridiver) should have some visual notification of hover/press return + containerFor={styles.browserActionButton} + > this.onToggleBookmark()) ipc.on(messages.SHORTCUT_ACTIVE_FRAME_REMOVE_BOOKMARK, () => this.onToggleBookmark()) } + onToggleBookmark () { + if (this.props.isBookmarked) { + windowActions.editBookmark(true, this.props.bookmarkKey) + } else { + windowActions.onBookmarkAdded(true, this.props.bookmarkKey) + } + } + render () { return ( ) @@ -105,4 +65,4 @@ const styles = StyleSheet.create({ } }) -module.exports = ReduxComponent.connect(BookmarkButton) +module.exports = BookmarkButton diff --git a/app/renderer/components/navigation/buttons/homeButton.js b/app/renderer/components/navigation/buttons/homeButton.js index 718ec955fb2..689080b7885 100644 --- a/app/renderer/components/navigation/buttons/homeButton.js +++ b/app/renderer/components/navigation/buttons/homeButton.js @@ -3,11 +3,10 @@ * You can obtain one at http://mozilla.org/MPL/2.0/. */ const React = require('react') -const Immutable = require('immutable') const {StyleSheet} = require('aphrodite/no-important') // Components -const ReduxComponent = require('../../reduxComponent') +const ImmutableComponent = require('../../immutableComponent') const {NormalizedButton} = require('../../common/browserButton') // Actions @@ -16,23 +15,32 @@ const appActions = require('../../../../../js/actions/appActions') // Constants const settings = require('../../../../../js/constants/settings') -// State -const tabState = require('../../../../common/state/tabState') -const frameStateUtil = require('../../../../../js/state/frameStateUtil') - // Utils -const eventUtil = require('../../../../../js/lib/eventUtil') const {getSetting} = require('../../../../../js/settings') +const eventUtil = require('../../../../../js/lib/eventUtil') +// Styles const homeButtonIcon = require('../../../../../img/toolbar/home_btn.svg') -class HomeButton extends React.Component { +class HomeButton extends ImmutableComponent { constructor (props) { super(props) this.onHome = this.onHome.bind(this) } + componentDidMount () { + this.homeButton.addEventListener('auxclick', this.onHome) + } + + componentWillUnmount () { + this.homeButton.removeEventListener('auxclick', this.onHome) + } + onHome (e) { + if (e.button === 2) { + return + } + getSetting(settings.HOMEPAGE).split('|') .forEach((homepage, i) => { if (i === 0 && !eventUtil.isForSecondaryAction(e)) { @@ -46,18 +54,6 @@ class HomeButton extends React.Component { }) } - mergeProps (state, dispatchProps, ownProps) { - const currentWindow = state.get('currentWindow') - const activeFrame = frameStateUtil.getActiveFrame(currentWindow) || Immutable.Map() - const activeTabId = activeFrame.get('tabId', tabState.TAB_ID_NONE) - - const props = {} - - props.activeTabId = activeTabId - - return props - } - // BEM Level: navigationBar__buttonContainer render () { return { this.homeButton = node }} onClick={this.onHome} /> } @@ -77,4 +74,4 @@ const styles = StyleSheet.create({ } }) -module.exports = ReduxComponent.connect(HomeButton) +module.exports = HomeButton diff --git a/app/renderer/components/navigation/buttons/navigationBarButtonContainer.js b/app/renderer/components/navigation/buttons/navigationBarButtonContainer.js index 7b5aed340cc..9dca68c3cdd 100644 --- a/app/renderer/components/navigation/buttons/navigationBarButtonContainer.js +++ b/app/renderer/components/navigation/buttons/navigationBarButtonContainer.js @@ -4,6 +4,8 @@ const React = require('react') const {StyleSheet, css} = require('aphrodite/no-important') + +const ImmutableComponent = require('../../immutableComponent') const globalStyles = require('../../styles/global') // This component normalizes the wrapper for buttons called on files @@ -11,9 +13,7 @@ const globalStyles = require('../../styles/global') // visual regressions and style inconsistency. // Ref https://github.com/brave/browser-laptop/pull/9299#discussion_r124714562 -// TODO (Cezar): Check if stateless components can benefit -// from reduxComponent by setting ownProps to stateless props. -class NavigationBarButtonContainer extends React.Component { +class NavigationBarButtonContainer extends ImmutableComponent { render () { return (
} } diff --git a/app/renderer/components/navigation/navigationBar.js b/app/renderer/components/navigation/navigationBar.js index 50c4b5ad36a..1c00db4da96 100644 --- a/app/renderer/components/navigation/navigationBar.js +++ b/app/renderer/components/navigation/navigationBar.js @@ -4,7 +4,7 @@ const React = require('react') const Immutable = require('immutable') -const ipc = require('electron').ipcRenderer +const {StyleSheet, css} = require('aphrodite/no-important') // Components const ReduxComponent = require('../reduxComponent') @@ -19,16 +19,11 @@ const HomeButton = require('./buttons/homeButton') const BookmarkButton = require('./buttons/bookmarkButton') const PublisherToggle = require('./publisherToggle') -// Actions -const windowActions = require('../../../../js/actions/windowActions') - // Constants -const messages = require('../../../../js/constants/messages') const settings = require('../../../../js/constants/settings') // State const tabState = require('../../../common/state/tabState') -const menuBarState = require('../../../common/state/menuBarState') const publisherState = require('../../../common/lib/publisherUtil') const frameStateUtil = require('../../../../js/state/frameStateUtil') @@ -37,29 +32,14 @@ const cx = require('../../../../js/lib/classSet') const {getBaseUrl} = require('../../../../js/lib/appUrlUtil') const siteUtil = require('../../../../js/state/siteUtil') const {getSetting} = require('../../../../js/settings') -const {isDarwin} = require('../../../common/lib/platformUtil') -const {isFullScreen} = require('../../currentWindow') +const platformUtil = require('../../../common/lib/platformUtil') -const {StyleSheet, css} = require('aphrodite/no-important') +// Styles const globalStyles = require('../styles/global') -class NavigationBar extends React.Component { - constructor (props) { - super(props) - this.onStop = this.onStop.bind(this) - } - - onStop () { - // TODO (bridiver) - remove shortcut - ipc.emit(messages.SHORTCUT_ACTIVE_FRAME_STOP) - windowActions.onStop(this.props.isFocused, this.props.shouldRenderSuggestions) - } - - componentDidMount () { - ipc.on(messages.SHORTCUT_ACTIVE_FRAME_BOOKMARK, () => this.onToggleBookmark()) - ipc.on(messages.SHORTCUT_ACTIVE_FRAME_REMOVE_BOOKMARK, () => this.onToggleBookmark()) - } +const isDarwin = platformUtil.isDarwin() +class NavigationBar extends React.Component { mergeProps (state, ownProps) { const currentWindow = state.get('currentWindow') const activeFrame = frameStateUtil.getActiveFrame(currentWindow) || Immutable.Map() @@ -96,7 +76,7 @@ class NavigationBar extends React.Component { props.titleMode = titleMode props.isBookmarked = activeFrameKey !== undefined && activeTab && activeTab.get('bookmarked') - props.isWideURLbarEnabled = getSetting(settings.WIDE_URL_BAR) + props.isWideUrlBarEnabled = getSetting(settings.WIDE_URL_BAR) props.showBookmarkHanger = bookmarkDetail.get('isBookmarkHanger', false) props.isLoading = loading props.showPublisherToggle = publisherState.shouldShowAddPublisherButton(state, location, publisherId) @@ -107,31 +87,17 @@ class NavigationBar extends React.Component { props.shouldRenderSuggestions = navbar.getIn(['urlbar', 'suggestions', 'shouldRender']) === true props.activeTabId = activeTabId props.bookmarkKey = siteUtil.getSiteKey(activeFrame) - props.showHomeButton = !props.titleMode && getSetting(settings.SHOW_HOME_BUTTON) - - props.location = location - props.isDarwin = isDarwin() - props.isFullScreen = isFullScreen() - props.bookmarkDetail = bookmarkDetail - props.menubarVisible = menuBarState.isMenuBarVisible(currentWindow) - props.siteSettings = state.get('siteSettings') - props.synopsis = state.getIn(['publisherInfo', 'synopsis']) || new Immutable.Map() - props.locationInfo = state.get('locationInfo') return props } render () { - if (this.props.dontRender) { - return null - } - return