import React, { PropTypes } from 'react' import ReactDOM from 'react-dom' import { connect, Provider } from 'react-redux' import reducer from './reducer' import { createStore } from 'redux' import FinderInput from './FinderInput' import FinderList from './FinderList' import FinderDetail from './FinderDetail' import { selectArticle, searchArticle, refreshData } from './actions' import _ from 'lodash' import activityRecord from 'boost/activityRecord' import remote from 'remote' var hideFinder = remote.getGlobal('hideFinder') import clipboard from 'clipboard' var notifier = require('node-notifier') var path = require('path') function getIconPath () { return path.resolve(global.__dirname, '../../resources/favicon-230x230.png') } require('../styles/finder/index.styl') const FOLDER_FILTER = 'FOLDER_FILTER' const TEXT_FILTER = 'TEXT_FILTER' const TAG_FILTER = 'TAG_FILTER' class FinderMain extends React.Component { constructor (props) { super(props) } componentDidMount () { ReactDOM.findDOMNode(this.refs.finderInput.refs.input).focus() } handleClick (e) { ReactDOM.findDOMNode(this.refs.finderInput.refs.input).focus() } handleKeyDown (e) { if (e.keyCode === 38) { this.selectPrevious() e.preventDefault() } if (e.keyCode === 40) { this.selectNext() e.preventDefault() } if (e.keyCode === 13) { this.saveToClipboard() e.preventDefault() } if (e.keyCode === 27) { hideFinder() e.preventDefault() } } saveToClipboard () { let { activeArticle } = this.props clipboard.writeText(activeArticle.content) activityRecord.emit('FINDER_COPY') notifier.notify({ icon: getIconPath(), 'title': 'Saved to Clipboard!', 'message': 'Paste it wherever you want!' }) hideFinder() } handleSearchChange (e) { let { dispatch } = this.props dispatch(searchArticle(e.target.value)) } selectArticle (article) { this.setState({currentArticle: article}) } selectPrevious () { let { activeArticle, dispatch } = this.props let index = this.refs.finderList.props.articles.indexOf(activeArticle) let previousArticle = this.refs.finderList.props.articles[index - 1] if (previousArticle != null) dispatch(selectArticle(previousArticle.key)) } selectNext () { let { activeArticle, dispatch } = this.props let index = this.refs.finderList.props.articles.indexOf(activeArticle) let previousArticle = this.refs.finderList.props.articles[index + 1] if (previousArticle != null) dispatch(selectArticle(previousArticle.key)) } render () { let { articles, activeArticle, status, dispatch } = this.props let saveToClipboard = () => this.saveToClipboard() return (