1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-13 09:46:22 +00:00

refactored to prevent duplicate code

This commit is contained in:
Maurits Lourens
2017-12-21 17:41:08 +01:00
parent 3bba5442bd
commit aabfe820ac
3 changed files with 73 additions and 73 deletions

View File

@@ -176,17 +176,11 @@ class MarkdownNoteDetail extends React.Component {
handleTrashButtonClick (e) { handleTrashButtonClick (e) {
const { note } = this.state const { note } = this.state
const { isTrashed } = note const { isTrashed } = note
const { config } = this.props const { confirmDeletion } = this.props
if (isTrashed) { if (isTrashed) {
const dialogueButtonIndex = dialog.showMessageBox(remote.getCurrentWindow(), { if (confirmDeletion(true)) {
type: 'warning', const {note, dispatch} = this.props
message: 'Confirm note deletion',
detail: 'This will permanently remove this note.',
buttons: ['Confirm', 'Cancel']
})
if (dialogueButtonIndex === 1) return
const { note, dispatch } = this.props
dataApi dataApi
.deleteNote(note.storage, note.key) .deleteNote(note.storage, note.key)
.then((data) => { .then((data) => {
@@ -199,16 +193,9 @@ class MarkdownNoteDetail extends React.Component {
} }
ee.once('list:moved', dispatchHandler) ee.once('list:moved', dispatchHandler)
}) })
} else {
if (config.ui.confirmDeletion) {
const dialogueButtonIndex = dialog.showMessageBox(remote.getCurrentWindow(), {
type: 'warning',
message: 'Confirm note deletion',
detail: 'Are you sure you want to move the note to the trash?',
buttons: ['Confirm', 'Cancel']
})
if (dialogueButtonIndex === 1) return
} }
} else {
if (confirmDeletion()) {
note.isTrashed = true note.isTrashed = true
this.setState({ this.setState({
@@ -217,6 +204,7 @@ class MarkdownNoteDetail extends React.Component {
this.save() this.save()
}) })
} }
}
ee.emit('list:next') ee.emit('list:next')
} }
@@ -457,7 +445,8 @@ MarkdownNoteDetail.propTypes = {
style: PropTypes.shape({ style: PropTypes.shape({
left: PropTypes.number left: PropTypes.number
}), }),
ignorePreviewPointerEvents: PropTypes.bool ignorePreviewPointerEvents: PropTypes.bool,
confirmDeletion: PropTypes.bool.isRequired
} }
export default CSSModules(MarkdownNoteDetail, styles) export default CSSModules(MarkdownNoteDetail, styles)

View File

@@ -175,17 +175,11 @@ class SnippetNoteDetail extends React.Component {
handleTrashButtonClick (e) { handleTrashButtonClick (e) {
const { note } = this.state const { note } = this.state
const { isTrashed } = note const { isTrashed } = note
const { config } = this.props const { confirmDeletion } = this.props
if (isTrashed) { if (isTrashed) {
const dialogueButtonIndex = dialog.showMessageBox(remote.getCurrentWindow(), { if (confirmDeletion(true)) {
type: 'warning', const {note, dispatch} = this.props
message: 'Confirm note deletion',
detail: 'This will permanently remove this note.',
buttons: ['Confirm', 'Cancel']
})
if (dialogueButtonIndex === 1) return
const { note, dispatch } = this.props
dataApi dataApi
.deleteNote(note.storage, note.key) .deleteNote(note.storage, note.key)
.then((data) => { .then((data) => {
@@ -198,17 +192,9 @@ class SnippetNoteDetail extends React.Component {
} }
ee.once('list:moved', dispatchHandler) ee.once('list:moved', dispatchHandler)
}) })
} else {
if (config.ui.confirmDeletion) {
const dialogueButtonIndex = dialog.showMessageBox(remote.getCurrentWindow(), {
type: 'warning',
message: 'Confirm note deletion',
detail: 'Are you sure you want to move the note to the trash?',
buttons: ['Confirm', 'Cancel']
})
if (dialogueButtonIndex === 1) return
} }
} else {
if (confirmDeletion()) {
note.isTrashed = true note.isTrashed = true
this.setState({ this.setState({
@@ -217,6 +203,8 @@ class SnippetNoteDetail extends React.Component {
this.save() this.save()
}) })
} }
}
ee.emit('list:next') ee.emit('list:next')
} }
@@ -740,7 +728,8 @@ SnippetNoteDetail.propTypes = {
style: PropTypes.shape({ style: PropTypes.shape({
left: PropTypes.number left: PropTypes.number
}), }),
ignorePreviewPointerEvents: PropTypes.bool ignorePreviewPointerEvents: PropTypes.bool,
confirmDeletion: PropTypes.bool.isRequired
} }
export default CSSModules(SnippetNoteDetail, styles) export default CSSModules(SnippetNoteDetail, styles)

View File

@@ -32,6 +32,26 @@ class Detail extends React.Component {
ee.off('detail:delete', this.deleteHandler) ee.off('detail:delete', this.deleteHandler)
} }
confirmDeletion (permanent) {
if (this.props.config.ui.confirmDeletion || permanent) {
const electron = require('electron')
const { remote } = electron
const { dialog } = remote
const alertConfig = {
type: 'warning',
message: 'Confirm note deletion',
detail: 'This will permanently remove this note.',
buttons: ['Confirm', 'Cancel']
}
const dialogueButtonIndex = dialog.showMessageBox(remote.getCurrentWindow(), alertConfig)
return dialogueButtonIndex === 0
}
return true
}
render () { render () {
const { location, data, config } = this.props const { location, data, config } = this.props
let note = null let note = null
@@ -64,6 +84,7 @@ class Detail extends React.Component {
<SnippetNoteDetail <SnippetNoteDetail
note={note} note={note}
config={config} config={config}
confirmDeletion={(permanent) => this.confirmDeletion(permanent)}
ref='root' ref='root'
{..._.pick(this.props, [ {..._.pick(this.props, [
'dispatch', 'dispatch',
@@ -80,6 +101,7 @@ class Detail extends React.Component {
<MarkdownNoteDetail <MarkdownNoteDetail
note={note} note={note}
config={config} config={config}
confirmDeletion={(permanent) => this.confirmDeletion(permanent)}
ref='root' ref='root'
{..._.pick(this.props, [ {..._.pick(this.props, [
'dispatch', 'dispatch',