diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index 46d24a29..952e026e 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -35,7 +35,7 @@ export default class CodeEditor extends React.Component { name: 'Focus title', bindKey: {win: 'Esc', mac: 'Esc'}, exec: function (editor, e) { - remote.getCurrentWebContents().send('detail-edit') + remote.getCurrentWebContents().send('list-focus') }, readOnly: true }) diff --git a/browser/lib/dataStore.js b/browser/lib/dataStore.js index 60e3577c..e116b71a 100644 --- a/browser/lib/dataStore.js +++ b/browser/lib/dataStore.js @@ -8,6 +8,8 @@ const path = require('path') 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**' +let data = null + function getLocalPath () { return path.join(remote.app.getPath('userData'), 'local.json') } @@ -108,7 +110,8 @@ export function init () { } export function getData () { - return jetpack.read(getLocalPath(), 'json') + if (data == null) data = jetpack.read(getLocalPath(), 'json') + return data } export function setArticles (articles) { diff --git a/browser/main/HomePage/ArticleDetail/index.js b/browser/main/HomePage/ArticleDetail/index.js index 6c6e52c2..c711791e 100644 --- a/browser/main/HomePage/ArticleDetail/index.js +++ b/browser/main/HomePage/ArticleDetail/index.js @@ -4,9 +4,10 @@ import moment from 'moment' import _ from 'lodash' import { switchFolder, - cacheArticle, - saveArticle, - uncacheArticle + updateArticle, + // cacheArticle, + // saveArticle, + // uncacheArticle } from '../../actions' import linkState from 'browser/lib/linkState' import TagSelect from 'browser/components/TagSelect' @@ -20,19 +21,19 @@ const ipc = electron.ipcRenderer const remote = electron.remote const { Menu, MenuItem } = remote -const othersMenu = new Menu() -othersMenu.append(new MenuItem({ - label: 'Delete Post', - click: function () { - remote.getCurrentWebContents().send('detail-delete') - } -})) -othersMenu.append(new MenuItem({ - label: 'Discard Change', - click: function (item) { - remote.getCurrentWebContents().send('detail-uncache') - } -})) +// const othersMenu = new Menu() +// othersMenu.append(new MenuItem({ +// label: 'Delete Post', +// click: function () { +// remote.getCurrentWebContents().send('detail-delete') +// } +// })) +// othersMenu.append(new MenuItem({ +// label: 'Discard Change', +// click: function (item) { +// remote.getCurrentWebContents().send('detail-uncache') +// } +// })) const BRAND_COLOR = '#18AF90' const OSX = global.process.platform === 'darwin' @@ -116,7 +117,7 @@ export default class ArticleDetail extends React.Component { } this.editHandler = e => { if (isModalOpen()) return true - this.editArticle() + this.refs.editor.switchEditMode() } this.state = { @@ -134,7 +135,7 @@ export default class ArticleDetail extends React.Component { e.stopPropagation() } - ipc.on('detail-save', this.saveHandler) + // ipc.on('detail-save', this.saveHandler) ipc.on('detail-delete', this.deleteHandler) ipc.on('detail-uncache', this.uncacheHandler) ipc.on('detail-toggle-preview', this.togglePreviewHandler) @@ -144,11 +145,11 @@ export default class ArticleDetail extends React.Component { componentWillUnmount () { clearInterval(this.refreshTimer) - ipc.removeListener('detail-save', this.saveHandler) + // ipc.removeListener('detail-save', this.saveHandler) ipc.removeListener('detail-delete', this.deleteHandler) ipc.removeListener('detail-uncache', this.uncacheHandler) ipc.removeListener('detail-toggle-preview', this.togglePreviewHandler) - ipc.removeListener('detail-on', this.editHandler) + ipc.removeListener('detail-edit', this.editHandler) } componentWillReceiveProps (nextProps) { @@ -169,9 +170,17 @@ export default class ArticleDetail extends React.Component { } cacheArticle () { - let { dispatch } = this.props + let { dispatch, status, folders } = this.props - dispatch(cacheArticle(this.props.activeArticle.key, this.state.article)) + let input = Object.assign({}, this.props.activeArticle.key, this.state.article, {updatedAt: new Date()}) + + dispatch(updateArticle(input)) + + let targetFolderKey = this.state.article.FolderKey + if (status.targetFolders.length > 0) { + let targetFolder = _.findWhere(folders, {key: targetFolderKey}) + dispatch(switchFolder(targetFolder.name)) + } } renderEmpty () { @@ -185,19 +194,18 @@ export default class ArticleDetail extends React.Component { } handleSaveButtonClick (e) { - let { dispatch, folders, status } = this.props + // let { dispatch, folders, status } = this.props - let targetFolderKey = this.state.article.FolderKey - dispatch(saveArticle(this.props.activeArticle.key, this.state.article), true) - if (status.targetFolders.length > 0) { - let targetFolder = _.findWhere(folders, {key: targetFolderKey}) - dispatch(switchFolder(targetFolder.name)) - } + // let targetFolderKey = this.state.article.FolderKey + // dispatch(saveArticle(this.props.activeArticle.key, this.state.article), true) + // if (status.targetFolders.length > 0) { + // let targetFolder = _.findWhere(folders, {key: targetFolderKey}) + // dispatch(switchFolder(targetFolder.name)) + // } } handleOthersButtonClick (e) { - let size = remote.getCurrentWindow().getSize() - othersMenu.popup(size[0] - 150, 100) + this.deleteHandler() } handleFolderKeyChange (e) { @@ -293,7 +301,7 @@ export default class ArticleDetail extends React.Component { let isUnsaved = !!_.findWhere(modified, {key: activeArticle.key}) return ( -
+