From ac4ceccb4f9c909cda2cadc6ec9ff8686b54e4aa Mon Sep 17 00:00:00 2001 From: Rokt33r Date: Sat, 21 Nov 2015 06:35:27 +0900 Subject: [PATCH 1/7] show devtool only devmode --- browser/main/HomePage.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/browser/main/HomePage.js b/browser/main/HomePage.js index c40b4dfb..422e5717 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 @@ -226,12 +233,8 @@ function remap (state) { } // 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 @@ -250,8 +253,6 @@ function remap (state) { articles.unshift(newArticle) } activeArticle = newArticle - } else if (status.mode === CREATE_MODE) { - status.mode = IDLE_MODE } return { From 1c9cb4516cab328f14e39d41f2b2211c037a4c9b Mon Sep 17 00:00:00 2001 From: Rokt33r Date: Sat, 21 Nov 2015 06:36:50 +0900 Subject: [PATCH 2/7] =?UTF-8?q?=E5=88=9D=E6=9C=9F=E8=A8=98=E4=BA=8B?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E4=BF=AE=E6=AD=A3cmd=20->=20ctrl?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/dataStore.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/dataStore.js b/lib/dataStore.js index f05be868..a09c74a4 100644 --- a/lib/dataStore.js +++ b/lib/dataStore.js @@ -1,6 +1,6 @@ import keygen from 'boost/keygen' -let defaultContent = 'Boost is a brand new note App for programmers.\n\n> 下に日本語版があります。\n\n# \u25CEfeature\n\nBoost has some preponderant functions for efficient engineer\'s task.See some part of it.\n\n1. classify information by\u300CFolders\u300D\n2. deal with great variety of syntax\n3. Finder function\n\n\uFF0A\u3000\uFF0A\u3000\uFF0A\u3000\uFF0A\n\n# 1. classify information by \u300CFolders\u300D- access the information you needed easily.\n\n\u300CFolders\u300D which on the left side bar. Press plus button now. flexible way of classification.\n- Create Folder every language or flamework\n- Make Folder for your own casual memos\n\n# 2. Deal with a great variety of syntax \u2013 instead of your brain\nSave handy all information related with programming\n- Use markdown and gather api specification\n- Well using module and snippet\n\nSave them on Boost, you don\'t need to rewrite or re-search same code again.\n\n# 3. Load Finder function \u2013 now you don\'t need to spell command by hand typing.\n\n**Shift +cmd+tab** press buttons at same time.\nThen, the window will show up for search Boost contents that instant.\n\nUsing cursor key to chose, press enter, cmd+v to paste and\u2026 please check it out by your own eye.\n\n- Such command spl or linux which programmers often use but troublesome to hand type\n\n- (Phrases commonly used for e-mail or customer support)\n\nWe support preponderant efficiency\n\n\uFF0A\u3000\uFF0A\u3000\uFF0A\u3000\uFF0A\n\n## \u25CEfor more information\nFrequently updated with this blog ( http:\/\/blog-jp.b00st.io )\n\nHave wonderful programmer life!\n\n## Hack your memory**\n\n\n\n# 日本語版\n\n**Boost**は全く新しいエンジニアライクのノートアプリです。\n\n# ◎特徴\nBoostはエンジニアの仕事を圧倒的に効率化するいくつかの機能を備えています。\nその一部をご紹介します。\n1. Folderで情報を分類\n2. 豊富なsyantaxに対応\n3. Finder機能\n4. チーム機能(リアルタイム搭載)\n\n* * * *\n\n# 1. Folderで情報を分類、欲しい情報にすぐアクセス。\n左側のバーに存在する「Folders」。\n今すぐプラスボタンを押しましょう。\n分類の仕方も自由自在です。\n- 言語やフレームワークごとにFolderを作成\n- 自分用のカジュアルなメモをまとめる場としてFolderを作成\n\n\n# 2. 豊富なsyntaxに対応、自分の脳の代わりに。\nプログラミングに関する情報を全て、手軽に保存しましょう。\n- mdで、apiの仕様をまとめる\n- よく使うモジュールやスニペット\n\nBoostに保存しておくことで、何度も同じコードを書いたり調べたりする必要がなくなります。\n\n# 3. Finder機能を搭載、もうコマンドを手打ちする必要はありません。\n**「shift+cmd+tab」** を同時に押してみてください。\nここでは、一瞬でBoostの中身を検索するウィンドウを表示させることができます。\n\n矢印キーで選択、Enterを押し、cmd+vでペーストすると…続きはご自身の目でお確かめください。\n- sqlやlinux等の、よく使うが手打ちが面倒なコマンド\n- (メールやカスタマーサポート等でよく使うフレーズ)\n\n私たちは、圧倒的な効率性を支援します。\n\* * * *\n\n\n## ◎詳しくは\nこちらのブログ( http://blog-jp.b00st.io )にて随時更新しています。\n\nそれでは素晴らしいエンジニアライフを!\n\n## Hack your memory**' +let defaultContent = 'Boost is a brand new note App for programmers.\n\n> 下に日本語版があります。\n\n# \u25CEfeature\n\nBoost has some preponderant functions for efficient engineer\'s task.See some part of it.\n\n1. classify information by\u300CFolders\u300D\n2. deal with great variety of syntax\n3. Finder function\n\n\uFF0A\u3000\uFF0A\u3000\uFF0A\u3000\uFF0A\n\n# 1. classify information by \u300CFolders\u300D- access the information you needed easily.\n\n\u300CFolders\u300D which on the left side bar. Press plus button now. flexible way of classification.\n- Create Folder every language or flamework\n- Make Folder for your own casual memos\n\n# 2. Deal with a great variety of syntax \u2013 instead of your brain\nSave handy all information related with programming\n- Use markdown and gather api specification\n- Well using module and snippet\n\nSave them on Boost, you don\'t need to rewrite or re-search same code again.\n\n# 3. Load Finder function \u2013 now you don\'t need to spell command by hand typing.\n\n**Shift +ctrl+tab** press buttons at same time.\nThen, the window will show up for search Boost contents that instant.\n\nUsing cursor key to chose, press enter, cmd+v to paste and\u2026 please check it out by your own eye.\n\n- Such command spl or linux which programmers often use but troublesome to hand type\n\n- (Phrases commonly used for e-mail or customer support)\n\nWe support preponderant efficiency\n\n\uFF0A\u3000\uFF0A\u3000\uFF0A\u3000\uFF0A\n\n## \u25CEfor more information\nFrequently updated with this blog ( http:\/\/blog-jp.b00st.io )\n\nHave wonderful programmer life!\n\n## Hack your memory**\n\n\n\n# 日本語版\n\n**Boost**は全く新しいエンジニアライクのノートアプリです。\n\n# ◎特徴\nBoostはエンジニアの仕事を圧倒的に効率化するいくつかの機能を備えています。\nその一部をご紹介します。\n1. Folderで情報を分類\n2. 豊富なsyantaxに対応\n3. Finder機能\n4. チーム機能(リアルタイム搭載)\n\n* * * *\n\n# 1. Folderで情報を分類、欲しい情報にすぐアクセス。\n左側のバーに存在する「Folders」。\n今すぐプラスボタンを押しましょう。\n分類の仕方も自由自在です。\n- 言語やフレームワークごとにFolderを作成\n- 自分用のカジュアルなメモをまとめる場としてFolderを作成\n\n\n# 2. 豊富なsyntaxに対応、自分の脳の代わりに。\nプログラミングに関する情報を全て、手軽に保存しましょう。\n- mdで、apiの仕様をまとめる\n- よく使うモジュールやスニペット\n\nBoostに保存しておくことで、何度も同じコードを書いたり調べたりする必要がなくなります。\n\n# 3. Finder機能を搭載、もうコマンドを手打ちする必要はありません。\n**「shift+ctrl+tab」** を同時に押してみてください。\nここでは、一瞬でBoostの中身を検索するウィンドウを表示させることができます。\n\n矢印キーで選択、Enterを押し、cmd+vでペーストすると…続きはご自身の目でお確かめください。\n- sqlやlinux等の、よく使うが手打ちが面倒なコマンド\n- (メールやカスタマーサポート等でよく使うフレーズ)\n\n私たちは、圧倒的な効率性を支援します。\n\* * * *\n\n\n## ◎詳しくは\nこちらのブログ( http://blog-jp.b00st.io )にて随時更新しています。\n\nそれでは素晴らしいエンジニアライフを!\n\n## Hack your memory**' export function init () { console.log('initialize data store') From 263cb581c476cc88b0cafdc0b42e81184f697ad3 Mon Sep 17 00:00:00 2001 From: Rokt33r Date: Sat, 21 Nov 2015 06:37:23 +0900 Subject: [PATCH 3/7] =?UTF-8?q?=E9=96=8B=E7=99=BA=E4=B8=AD=E3=81=AE?= =?UTF-8?q?=E3=82=82=E3=81=AE=E3=81=AF=E3=83=87=E3=83=BC=E3=82=BF=E3=82=92?= =?UTF-8?q?=E9=80=81=E3=82=89=E3=81=AA=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/activityRecord.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/activityRecord.js b/lib/activityRecord.js index 71e61a82..b79e2447 100644 --- a/lib/activityRecord.js +++ b/lib/activityRecord.js @@ -47,6 +47,10 @@ Post all records(except today) and remove all posted records */ export function postRecords (data) { + if (process.env.BOOST_ENV === 'development') { + console.log('post failed - on development') + return + } let records = getAllRecords() records = records.filter(record => { return !isSameDate(new Date(), record.date) From 3b34698e8b1b7941edb11d9c432a90a0b3145d10 Mon Sep 17 00:00:00 2001 From: Rokt33r Date: Sat, 21 Nov 2015 16:03:20 +0900 Subject: [PATCH 4/7] =?UTF-8?q?Default=E6=96=87=E6=9B=B8=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/dataStore.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/dataStore.js b/lib/dataStore.js index a09c74a4..3b8c772a 100644 --- a/lib/dataStore.js +++ b/lib/dataStore.js @@ -1,6 +1,6 @@ import keygen from 'boost/keygen' -let defaultContent = 'Boost is a brand new note App for programmers.\n\n> 下に日本語版があります。\n\n# \u25CEfeature\n\nBoost has some preponderant functions for efficient engineer\'s task.See some part of it.\n\n1. classify information by\u300CFolders\u300D\n2. deal with great variety of syntax\n3. Finder function\n\n\uFF0A\u3000\uFF0A\u3000\uFF0A\u3000\uFF0A\n\n# 1. classify information by \u300CFolders\u300D- access the information you needed easily.\n\n\u300CFolders\u300D which on the left side bar. Press plus button now. flexible way of classification.\n- Create Folder every language or flamework\n- Make Folder for your own casual memos\n\n# 2. Deal with a great variety of syntax \u2013 instead of your brain\nSave handy all information related with programming\n- Use markdown and gather api specification\n- Well using module and snippet\n\nSave them on Boost, you don\'t need to rewrite or re-search same code again.\n\n# 3. Load Finder function \u2013 now you don\'t need to spell command by hand typing.\n\n**Shift +ctrl+tab** press buttons at same time.\nThen, the window will show up for search Boost contents that instant.\n\nUsing cursor key to chose, press enter, cmd+v to paste and\u2026 please check it out by your own eye.\n\n- Such command spl or linux which programmers often use but troublesome to hand type\n\n- (Phrases commonly used for e-mail or customer support)\n\nWe support preponderant efficiency\n\n\uFF0A\u3000\uFF0A\u3000\uFF0A\u3000\uFF0A\n\n## \u25CEfor more information\nFrequently updated with this blog ( http:\/\/blog-jp.b00st.io )\n\nHave wonderful programmer life!\n\n## Hack your memory**\n\n\n\n# 日本語版\n\n**Boost**は全く新しいエンジニアライクのノートアプリです。\n\n# ◎特徴\nBoostはエンジニアの仕事を圧倒的に効率化するいくつかの機能を備えています。\nその一部をご紹介します。\n1. Folderで情報を分類\n2. 豊富なsyantaxに対応\n3. Finder機能\n4. チーム機能(リアルタイム搭載)\n\n* * * *\n\n# 1. Folderで情報を分類、欲しい情報にすぐアクセス。\n左側のバーに存在する「Folders」。\n今すぐプラスボタンを押しましょう。\n分類の仕方も自由自在です。\n- 言語やフレームワークごとにFolderを作成\n- 自分用のカジュアルなメモをまとめる場としてFolderを作成\n\n\n# 2. 豊富なsyntaxに対応、自分の脳の代わりに。\nプログラミングに関する情報を全て、手軽に保存しましょう。\n- mdで、apiの仕様をまとめる\n- よく使うモジュールやスニペット\n\nBoostに保存しておくことで、何度も同じコードを書いたり調べたりする必要がなくなります。\n\n# 3. Finder機能を搭載、もうコマンドを手打ちする必要はありません。\n**「shift+ctrl+tab」** を同時に押してみてください。\nここでは、一瞬でBoostの中身を検索するウィンドウを表示させることができます。\n\n矢印キーで選択、Enterを押し、cmd+vでペーストすると…続きはご自身の目でお確かめください。\n- sqlやlinux等の、よく使うが手打ちが面倒なコマンド\n- (メールやカスタマーサポート等でよく使うフレーズ)\n\n私たちは、圧倒的な効率性を支援します。\n\* * * *\n\n\n## ◎詳しくは\nこちらのブログ( http://blog-jp.b00st.io )にて随時更新しています。\n\nそれでは素晴らしいエンジニアライフを!\n\n## Hack your memory**' +let defaultContent = 'Boost is a brand new note App for programmers.\n\n> 下に日本語版があります。\n\n# \u25CEfeature\n\nBoost has some preponderant functions for efficient engineer\'s task.See some part of it.\n\n1. classify information by\u300CFolders\u300D\n2. deal with great variety of syntax\n3. Finder function\n\n\uFF0A\u3000\uFF0A\u3000\uFF0A\u3000\uFF0A\n\n# 1. classify information by \u300CFolders\u300D- access the information you needed easily.\n\n\u300CFolders\u300D which on the left side bar. Press plus button now. flexible way of classification.\n- Create Folder every language or flamework\n- Make Folder for your own casual memos\n\n# 2. Deal with a great variety of syntax \u2013 instead of your brain\nSave handy all information related with programming\n- Use markdown and gather api specification\n- Well using module and snippet\n\nSave them on Boost, you don\'t need to rewrite or re-search same code again.\n\n# 3. Load Finder function \u2013 now you don\'t need to spell command by hand typing.\n\n**Shift +ctrl+tab** press buttons at same time.\nThen, the window will show up for search Boost contents that instant.\n\nUsing cursor key to chose, press enter, cmd+v to paste and\u2026 please check it out by your own eye.\n\n- Such command spl or linux which programmers often use but troublesome to hand type\n\n- (Phrases commonly used for e-mail or customer support)\n\nWe support preponderant efficiency\n\n\uFF0A\u3000\uFF0A\u3000\uFF0A\u3000\uFF0A\n\n## \u25CEfor more information\nFrequently updated with this blog ( http:\/\/blog-jp.b00st.io )\n\nHave wonderful programmer life!\n\n## Hack your memory**\n\n\n\n# 日本語版\n\n**Boost**は全く新しいエンジニアライクのノートアプリです。\n\n# ◎特徴\nBoostはエンジニアの仕事を圧倒的に効率化するいくつかの機能を備えています。\nその一部をご紹介します。\n1. Folderで情報を分類\n2. 豊富なsyantaxに対応\n3. Finder機能\n\n\n* * * *\n\n# 1. Folderで情報を分類、欲しい情報にすぐアクセス。\n左側のバーに存在する「Folders」。\n今すぐプラスボタンを押しましょう。\n分類の仕方も自由自在です。\n- 言語やフレームワークごとにFolderを作成\n- 自分用のカジュアルなメモをまとめる場としてFolderを作成\n\n\n# 2. 豊富なsyntaxに対応、自分の脳の代わりに。\nプログラミングに関する情報を全て、手軽に保存しましょう。\n- mdで、apiの仕様をまとめる\n- よく使うモジュールやスニペット\n\nBoostに保存しておくことで、何度も同じコードを書いたり調べたりする必要がなくなります。\n\n# 3. Finder機能を搭載、もうコマンドを手打ちする必要はありません。\n**「shift+ctrl+tab」** を同時に押してみてください。\nここでは、一瞬でBoostの中身を検索するウィンドウを表示させることができます。\n\n矢印キーで選択、Enterを押し、cmd+vでペーストすると…続きはご自身の目でお確かめください。\n- sqlやlinux等の、よく使うが手打ちが面倒なコマンド\n- (メールやカスタマーサポート等でよく使うフレーズ)\n\n私たちは、圧倒的な効率性を支援します。\n\* * * *\n\n\n## ◎詳しくは\nこちらのブログ( http://blog-jp.b00st.io )にて随時更新しています。\n\nそれでは素晴らしいエンジニアライフを!\n\n## Hack your memory**' export function init () { console.log('initialize data store') From 7d9894bef786b49e1b7c615b0e2c2b5453c88962 Mon Sep 17 00:00:00 2001 From: Rokt33r Date: Sat, 21 Nov 2015 22:07:59 +0900 Subject: [PATCH 5/7] cleanup notification code --- browser/finder/index.js | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) 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() } From 954b3e9fc542bb152bc1be321453d5a94b9f063e Mon Sep 17 00:00:00 2001 From: Rokt33r Date: Sun, 22 Nov 2015 15:03:48 +0900 Subject: [PATCH 6/7] =?UTF-8?q?fix:=20=E6=96=B0=E3=81=97=E3=81=84=E8=A8=98?= =?UTF-8?q?=E4=BA=8B=E3=82=92=E6=9B=B8=E3=81=8F=E6=99=82=E3=81=AB=E7=99=BA?= =?UTF-8?q?=E7=94=9F=E3=81=99=E3=82=8B=E3=83=90=E3=82=B0=E4=B8=80=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- browser/main/HomePage.js | 30 ------------- browser/main/HomePage/ArticleDetail.js | 17 ++++---- browser/main/HomePage/ArticleNavigator.js | 27 ++++++++++-- lib/actions.js | 15 +++++-- lib/components/modal/EditedAlert.js | 3 +- lib/reducer.js | 51 +++++++++++++++++++---- package.json | 2 +- 7 files changed, 89 insertions(+), 56 deletions(-) diff --git a/browser/main/HomePage.js b/browser/main/HomePage.js index 422e5717..780f8b52 100644 --- a/browser/main/HomePage.js +++ b/browser/main/HomePage.js @@ -225,36 +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 - if (status.mode === CREATE_MODE) { - let newArticle = _.findWhere(articles, {status: 'NEW'}) - 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 - } - 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 (