import React, { PropTypes } from 'react' import CSSModules from 'browser/lib/CSSModules' import styles from './SideNav.styl' import actions from 'browser/main/actions' import { openModal, isModalOpen } from 'browser/lib/modal' import Preferences from '../../modal/Preferences' import CreateNewFolder from '../../modal/CreateNewFolder' import Repository from './Repository' import NewRepositoryModal from '../../modal/NewRepositoryModal' const ipc = require('electron').ipcRenderer const BRAND_COLOR = '#18AF90' const OSX = global.process.platform === 'darwin' const preferenceTutorialElement = ( Preference ) const newFolderTutorialElement = ( Create a new folder!! {'press ' + (OSX ? '`⌘ + Shift + n`' : '`^ + Shift + n`')} ) class SideNav extends React.Component { constructor (props) { super(props) this.newFolderHandler = e => { if (isModalOpen()) return true this.handleNewFolderButton(e) } } componentDidMount () { ipc.on('nav-new-folder', this.newFolderHandler) } componentWillUnmount () { ipc.removeListener('nav-new-folder', this.newFolderHandler) } handlePreferencesButtonClick (e) { openModal(Preferences) } handleNewFolderButton (e) { let { user } = this.props openModal(CreateNewFolder, {user: user}) } handleFolderButtonClick (name) { return e => { let { dispatch } = this.props dispatch(actions.switchFolder(name)) } } handleAllFoldersButtonClick (e) { let { dispatch } = this.props dispatch(actions.setSearchFilter('')) } handleNewRepositoryButtonClick (e) { openModal(NewRepositoryModal) } render () { let { repositories } = this.props let repositorieElements = repositories.map((repo) => { return }) return (
{repositories.length > 0 ? repositorieElements : (
Empty
)}
) } } SideNav.propTypes = { dispatch: PropTypes.func, status: PropTypes.shape({ folderId: PropTypes.number }), user: PropTypes.object, folders: PropTypes.array, allArticles: PropTypes.array, articles: PropTypes.array, modified: PropTypes.array, activeArticle: PropTypes.shape({ key: PropTypes.string }), repositories: PropTypes.array } export default CSSModules(SideNav, styles)