import React, { PropTypes } from 'react' import { findWhere } from 'lodash' import { setSearchFilter, switchFolder, switchMode, switchArticle, updateArticle, clearNewArticle, EDIT_MODE } from 'boost/actions' import { openModal } from 'boost/modal' import FolderMark from 'boost/components/FolderMark' import Preferences from 'boost/components/modal/Preferences' import CreateNewFolder from 'boost/components/modal/CreateNewFolder' import keygen from 'boost/keygen' const BRAND_COLOR = '#18AF90' const preferenceTutorialElement = ( Preference ) const newPostTutorialElement = ( Create a new post!! press `⌘ + Enter` or `a` ) const newFolderTutorialElement = ( Create a new folder!! ) export default class ArticleNavigator extends React.Component { handlePreferencesButtonClick (e) { openModal(Preferences) } handleNewPostButtonClick (e) { let { dispatch, folders, status } = this.props let { targetFolders } = status let FolderKey = targetFolders.length > 0 ? targetFolders[0].key : folders[0].key let newArticle = { id: null, key: keygen(), title: '', content: '', mode: 'markdown', tags: [], FolderKey: FolderKey, status: 'NEW' } dispatch(clearNewArticle()) dispatch(updateArticle(newArticle)) dispatch(switchArticle(newArticle.key, true)) dispatch(switchMode(EDIT_MODE)) } handleNewFolderButton (e) { let { activeUser } = this.props openModal(CreateNewFolder, {user: activeUser}) } handleFolderButtonClick (name) { return e => { let { dispatch } = this.props dispatch(switchFolder(name)) } } handleAllFoldersButtonClick (e) { let { dispatch } = this.props dispatch(setSearchFilter('')) } render () { let { status, user, folders, allArticles } = this.props let { targetFolders } = status if (targetFolders == null) targetFolders = [] let folderElememts = folders.map((folder, index) => { let isActive = findWhere(targetFolders, {key: folder.key}) let articleCount = allArticles.filter(article => article.FolderKey === folder.key && article.status !== 'NEW').length return ( ) }) return (
{user.name}
localStorage
{status.isTutorialOpen ? preferenceTutorialElement : null}
{status.isTutorialOpen ? newPostTutorialElement : null}
Folders
{status.isTutorialOpen ? newFolderTutorialElement : null}
{folderElememts}
) } } ArticleNavigator.propTypes = { activeUser: PropTypes.object, folders: PropTypes.array, allArticles: PropTypes.array, status: PropTypes.shape({ folderId: PropTypes.number }), dispatch: PropTypes.func }