@@ -7,19 +7,34 @@ import CodeEditor from 'browser/components/CodeEditor'
77import {
88 switchFolder ,
99 cacheArticle ,
10- saveArticle
10+ saveArticle ,
11+ uncacheArticle
1112} from '../../actions'
1213import linkState from 'browser/lib/linkState'
1314import TagSelect from 'browser/components/TagSelect'
1415import ModeSelect from 'browser/components/ModeSelect'
15- import activityRecord from 'browser/lib/activityRecord'
1616import ShareButton from './ShareButton'
1717import { openModal , isModalOpen } from 'browser/lib/modal'
1818import DeleteArticleModal from '../../modal/DeleteArticleModal'
1919
2020const electron = require ( 'electron' )
21- const clipboard = electron . clipboard
2221const ipc = electron . ipcRenderer
22+ const remote = electron . remote
23+ const { Menu, MenuItem } = remote
24+
25+ const othersMenu = new Menu ( )
26+ othersMenu . append ( new MenuItem ( {
27+ label : 'Delete Post' ,
28+ click : function ( ) {
29+ remote . getCurrentWebContents ( ) . send ( 'detail-delete' )
30+ }
31+ } ) )
32+ othersMenu . append ( new MenuItem ( {
33+ label : 'Discard Change' ,
34+ click : function ( item ) {
35+ remote . getCurrentWebContents ( ) . send ( 'detail-uncache' )
36+ }
37+ } ) )
2338
2439const OSX = global . process . platform === 'darwin'
2540const BRAND_COLOR = '#18AF90'
@@ -81,10 +96,6 @@ const modeSelectTutorialElement = (
8196 </ svg >
8297)
8398
84- function notify ( ...args ) {
85- return new window . Notification ( ...args )
86- }
87-
8899export default class ArticleDetail extends React . Component {
89100 constructor ( props ) {
90101 super ( props )
@@ -97,6 +108,10 @@ export default class ArticleDetail extends React.Component {
97108 if ( isModalOpen ( ) ) return true
98109 this . handleDeleteButtonClick ( )
99110 }
111+ this . uncacheHandler = e => {
112+ if ( isModalOpen ( ) ) return true
113+ this . handleUncache ( )
114+ }
100115 this . togglePreviewHandler = e => {
101116 if ( isModalOpen ( ) ) return true
102117 this . handleTogglePreviewButtonClick ( )
@@ -123,6 +138,7 @@ export default class ArticleDetail extends React.Component {
123138
124139 ipc . on ( 'detail-save' , this . saveHandler )
125140 ipc . on ( 'detail-delete' , this . deleteHandler )
141+ ipc . on ( 'detail-uncache' , this . uncacheHandler )
126142 ipc . on ( 'detail-toggle-preview' , this . togglePreviewHandler )
127143 ipc . on ( 'detail-edit' , this . editHandler )
128144 }
@@ -132,6 +148,7 @@ export default class ArticleDetail extends React.Component {
132148
133149 ipc . removeListener ( 'detail-save' , this . saveHandler )
134150 ipc . removeListener ( 'detail-delete' , this . deleteHandler )
151+ ipc . removeListener ( 'detail-uncache' , this . uncacheHandler )
135152 ipc . removeListener ( 'detail-toggle-preview' , this . togglePreviewHandler )
136153 ipc . removeListener ( 'detail-on' , this . editHandler )
137154 }
@@ -169,14 +186,6 @@ export default class ArticleDetail extends React.Component {
169186 )
170187 }
171188
172- handleClipboardButtonClick ( e ) {
173- activityRecord . emit ( 'MAIN_DETAIL_COPY' )
174- clipboard . writeText ( this . props . activeArticle . content )
175- notify ( 'Saved to Clipboard!' , {
176- body : 'Paste it wherever you want!'
177- } )
178- }
179-
180189 handleSaveButtonClick ( e ) {
181190 let { dispatch, folders, status } = this . props
182191
@@ -188,6 +197,11 @@ export default class ArticleDetail extends React.Component {
188197 }
189198 }
190199
200+ handleOthersButtonClick ( e ) {
201+ let size = remote . getCurrentWindow ( ) . getSize ( )
202+ othersMenu . popup ( size [ 0 ] - 150 , 100 )
203+ }
204+
191205 handleFolderKeyChange ( e ) {
192206 let article = this . state . article
193207 article . FolderKey = e . target . value
@@ -244,6 +258,13 @@ export default class ArticleDetail extends React.Component {
244258 }
245259 }
246260
261+ handleUncache ( e ) {
262+ if ( this . props . activeArticle ) {
263+ let { dispatch, activeArticle } = this . props
264+ dispatch ( uncacheArticle ( activeArticle . key ) )
265+ }
266+ }
267+
247268 handleTitleKeyDown ( e ) {
248269 if ( e . keyCode === 9 && ! e . shiftKey ) {
249270 e . preventDefault ( )
@@ -303,28 +324,16 @@ export default class ArticleDetail extends React.Component {
303324 />
304325
305326 < div className = 'ArticleDetail-info-control' >
306- {
307- this . state . article . mode === 'markdown'
308- ? < button onClick = { e => this . handleTogglePreviewButtonClick ( e ) } >
309- { this . state . previewMode ? < i className = 'fa fa-fw fa-code' /> : < i className = 'fa fa-fw fa-image' /> } < span className = 'tooltip' > Toggle preview ({ OSX ? '⌘ + p' : '^ + p' } )</ span >
310- </ button >
311- : null
312- }
313-
314327 < ShareButton
315328 article = { activeArticle }
316329 user = { user }
317330 />
318331
319- < button onClick = { e => this . handleClipboardButtonClick ( e ) } >
320- < i className = 'fa fa-fw fa-clipboard' /> < span className = 'tooltip' > Copy to clipboard</ span >
321- </ button >
322-
323332 < button onClick = { e => this . handleSaveButtonClick ( e ) } >
324333 < i className = 'fa fa-fw fa-save' /> < span className = 'tooltip' > Save ({ OSX ? '⌘ + s' : '^ + s' } )</ span >
325334 </ button >
326- < button onClick = { e => this . handleDeleteButtonClick ( e ) } >
327- < i className = 'fa fa-fw fa-trash' /> < span className = 'tooltip' > Delete (^ + Del) </ span >
335+ < button onClick = { e => this . handleOthersButtonClick ( e ) } >
336+ < i className = 'fa fa-fw fa-angle-down' / >
328337 </ button >
329338 </ div >
330339 </ div >
0 commit comments