diff --git a/atom-lib/updater.js b/atom-lib/updater.js deleted file mode 100644 index 38a112fb..00000000 --- a/atom-lib/updater.js +++ /dev/null @@ -1,42 +0,0 @@ -var autoUpdater = require('auto-updater') -var nn = require('node-notifier') -var app = require('app') -var path = require('path') - -var version = app.getVersion() -var versionText = (version == null || version.length === 0) ? 'DEV version' : 'v' + version -var versionNotified = false -autoUpdater - .on('error', function (err, message) { - console.error(err) - console.error(message) - console.log(path.resolve(__dirname, '../resources/favicon-230x230.png')) - nn.notify({ - title: 'Error! ' + versionText, - icon: path.resolve(__dirname, '../resources/favicon-230x230.png'), - message: message - }) - }) - // .on('checking-for-update', function () { - // // Connecting - // console.log('checking...') - // }) - .on('update-available', function () { - nn.notify({ - title: 'Update is available!! ' + versionText, - icon: path.resolve(__dirname, '../resources/favicon-230x230.png'), - message: 'Download started.. wait for the update ready.' - }) - }) - .on('update-not-available', function () { - if (!versionNotified) { - nn.notify({ - title: 'Latest Build!! ' + versionText, - icon: path.resolve(__dirname, '../resources/favicon-230x230.png'), - message: 'Hope you to enjoy our app :D' - }) - versionNotified = true - } - }) - -module.exports = autoUpdater diff --git a/browser/finder/index.js b/browser/finder/index.js index 8ef40501..5c0b699d 100644 --- a/browser/finder/index.js +++ b/browser/finder/index.js @@ -14,10 +14,8 @@ 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') +function notify (...args) { + return new window.Notification(...args) } require('../styles/finder/index.styl') @@ -66,10 +64,8 @@ class FinderMain extends React.Component { clipboard.writeText(activeArticle.content) activityRecord.emit('FINDER_COPY') - notifier.notify({ - icon: getIconPath(), - 'title': 'Saved to Clipboard!', - 'message': 'Paste it wherever you want!' + notify('Saved to Clipboard!', { + body: 'Paste it wherever you want!' }) hideFinder() } diff --git a/browser/main/HomePage.js b/browser/main/HomePage.js index c40b4dfb..780f8b52 100644 --- a/browser/main/HomePage.js +++ b/browser/main/HomePage.js @@ -28,6 +28,13 @@ class HomePage extends React.Component { } handleKeyDown (e) { + if (process.env.BOOST_ENV === 'development' && e.keyCode === 73 && e.metaKey && e.altKey) { + e.preventDefault() + e.stopPropagation() + require('remote').require('browser-window').getFocusedWindow().toggleDevTools() + return + } + if (isModalOpen()) { if (e.keyCode === 27) closeModal() return @@ -218,42 +225,6 @@ function remap (state) { let activeArticle = _.findWhere(articles, {key: status.articleKey}) if (activeArticle == null) activeArticle = articles[0] - // remove Unsaved new article if user is not CREATE_MODE - if (status.mode !== CREATE_MODE) { - let targetIndex = _.findIndex(articles, article => article.status === NEW) - - if (targetIndex >= 0) articles.splice(targetIndex, 1) - } - - // switching CREATE_MODE - // restrict - // 1. team have one folder at least - // or Change IDLE MODE - if (status.mode === CREATE_MODE) { - let newArticle = _.findWhere(articles, {status: 'NEW'}) - console.log('targetFolders') - let FolderKey = targetFolders.length > 0 - ? targetFolders[0].key - : folders[0].key - - if (newArticle == null) { - newArticle = { - id: null, - key: keygen(), - title: '', - content: '', - mode: 'markdown', - tags: [], - FolderKey: FolderKey, - status: NEW - } - articles.unshift(newArticle) - } - activeArticle = newArticle - } else if (status.mode === CREATE_MODE) { - status.mode = IDLE_MODE - } - return { folders, status, diff --git a/browser/main/HomePage/ArticleDetail.js b/browser/main/HomePage/ArticleDetail.js index 45b094ed..de3ffd54 100644 --- a/browser/main/HomePage/ArticleDetail.js +++ b/browser/main/HomePage/ArticleDetail.js @@ -7,7 +7,6 @@ import MarkdownPreview from 'boost/components/MarkdownPreview' import CodeEditor from 'boost/components/CodeEditor' import { IDLE_MODE, - CREATE_MODE, EDIT_MODE, switchMode, switchArticle, @@ -15,6 +14,7 @@ import { clearSearch, lockStatus, unlockStatus, + clearNewArticle, updateArticle, destroyArticle, NEW @@ -114,7 +114,7 @@ export default class ArticleDetail extends React.Component { componentDidUpdate (prevProps) { let isModeChanged = prevProps.status.mode !== this.props.status.mode - if (isModeChanged && this.props.status.mode !== IDLE_MODE) { + if (isModeChanged && this.props.status.mode === EDIT_MODE) { ReactDOM.findDOMNode(this.refs.title).focus() } } @@ -124,6 +124,7 @@ export default class ArticleDetail extends React.Component { let isArticleChanged = nextProps.activeArticle != null && (nextProps.activeArticle.key !== this.state.article.key) let isModeChanged = nextProps.status.mode !== this.props.status.mode + // Reset article input if (isArticleChanged || (isModeChanged && nextProps.status.mode !== IDLE_MODE)) { Object.assign(nextState, { @@ -248,12 +249,15 @@ export default class ArticleDetail extends React.Component { let { activeArticle, dispatch } = this.props dispatch(unlockStatus()) - if (activeArticle.status === NEW) dispatch(switchArticle(null)) + if (activeArticle.status === NEW) { + dispatch(clearNewArticle()) + dispatch(switchArticle(null)) + } dispatch(switchMode(IDLE_MODE)) } handleSaveButtonClick (e) { - let { dispatch, folders, filters } = this.props + let { dispatch, folders, status } = this.props let article = this.state.article let newArticle = Object.assign({}, article) @@ -277,7 +281,7 @@ export default class ArticleDetail extends React.Component { // Searchを初期化し、更新先のFolder filterをかける // かかれていない時に // Searchを初期化する - if (filters.folder.length !== 0) dispatch(switchFolder(folder.name)) + if (status.targetFolders.length > 0) dispatch(switchFolder(folder.name)) else dispatch(clearSearch()) dispatch(switchArticle(newArticle.key)) } @@ -319,8 +323,6 @@ export default class ArticleDetail extends React.Component { let article = this.state.article article.tags = tags - this.setState({article: article}) - let _isTagChanged = _.difference(article.tags, this.props.activeArticle.tags).length > 0 || _.difference(this.props.activeArticle.tags, article.tags).length > 0 let { isTitleChanged, isContentChanged, isArticleEdited, isModeChanged } = this.state @@ -500,7 +502,6 @@ export default class ArticleDetail extends React.Component { if (activeArticle == null) return this.renderEmpty() switch (status.mode) { - case CREATE_MODE: case EDIT_MODE: return this.renderEdit() case IDLE_MODE: diff --git a/browser/main/HomePage/ArticleNavigator.js b/browser/main/HomePage/ArticleNavigator.js index d4c21131..49063bb4 100644 --- a/browser/main/HomePage/ArticleNavigator.js +++ b/browser/main/HomePage/ArticleNavigator.js @@ -1,10 +1,11 @@ import React, { PropTypes } from 'react' import { findWhere } from 'lodash' -import { setSearchFilter, switchFolder, switchMode, CREATE_MODE } from 'boost/actions' +import { setSearchFilter, switchFolder, switchMode, switchArticle, updateArticle, 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' import remote from 'remote' let userName = remote.getGlobal('process').env.USER @@ -65,9 +66,27 @@ export default class ArticleNavigator extends React.Component { } handleNewPostButtonClick (e) { - let { dispatch } = this.props + let { dispatch, folders, status } = this.props + let { targetFolders } = status - dispatch(switchMode(CREATE_MODE)) + 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(updateArticle(newArticle)) + dispatch(switchArticle(newArticle.key, true)) + dispatch(switchMode(EDIT_MODE)) } handleNewFolderButton (e) { @@ -94,7 +113,7 @@ export default class ArticleNavigator extends React.Component { let folderElememts = folders.map((folder, index) => { let isActive = findWhere(targetFolders, {key: folder.key}) - let articleCount = allArticles.filter(article => article.FolderKey === folder.key).length + let articleCount = allArticles.filter(article => article.FolderKey === folder.key && article.status !== 'NEW').length return (