diff --git a/browser/components/SideNavFilter.js b/browser/components/SideNavFilter.js
index dba26f92..2f839a84 100644
--- a/browser/components/SideNavFilter.js
+++ b/browser/components/SideNavFilter.js
@@ -17,7 +17,7 @@ import styles from './SideNavFilter.styl'
const SideNavFilter = ({
isFolded, isHomeActive, handleAllNotesButtonClick,
isStarredActive, handleStarredButtonClick, isTrashedActive, handleTrashedButtonClick, counterDelNote,
- counterTotalNote, counterStarredNote
+ counterTotalNote, counterStarredNote, handleFilterButtonContextMenu
}) => (
@@ -26,9 +26,9 @@ const SideNavFilter = ({
>
All Notes
@@ -40,9 +40,9 @@ const SideNavFilter = ({
>
Starred
@@ -54,12 +54,12 @@ const SideNavFilter = ({
>
-
Trash
+
Trash
{counterDelNote}
diff --git a/browser/main/SideNav/index.js b/browser/main/SideNav/index.js
index 9b95ae3e..2120220b 100644
--- a/browser/main/SideNav/index.js
+++ b/browser/main/SideNav/index.js
@@ -1,6 +1,9 @@
import PropTypes from 'prop-types'
import React from 'react'
import CSSModules from 'browser/lib/CSSModules'
+const { remote } = require('electron')
+const { Menu } = remote
+import dataApi from 'browser/main/lib/dataApi'
import styles from './SideNav.styl'
import { openModal } from 'browser/main/lib/modal'
import PreferencesModal from '../modals/PreferencesModal'
@@ -89,6 +92,7 @@ class SideNav extends React.Component {
counterTotalNote={data.noteMap._map.size - data.trashedSet._set.size}
counterStarredNote={data.starredSet._set.size}
counterDelNote={data.trashedSet._set.size}
+ handleFilterButtonContextMenu={this.handleFilterButtonContextMenu.bind(this)}
/>
@@ -139,6 +143,34 @@ class SideNav extends React.Component {
router.push(`/tags/${name}`)
}
+ emptyTrash (entries) {
+ const { dispatch } = this.props
+ const deletionPromises = entries.map((storageAndNoteKey) => {
+ const storageKey = storageAndNoteKey.split('-')[0]
+ const noteKey = storageAndNoteKey.split('-')[1]
+ return dataApi.deleteNote(storageKey, noteKey)
+ })
+ Promise.all(deletionPromises)
+ .then((arrayOfStorageAndNoteKeys) => {
+ arrayOfStorageAndNoteKeys.forEach(({ storageKey, noteKey }) => {
+ dispatch({ type: 'DELETE_NOTE', storageKey, noteKey })
+ })
+ })
+ .catch((err) => {
+ console.error('Cannot Delete note: ' + err)
+ })
+ console.log('Trash emptied')
+ }
+
+ handleFilterButtonContextMenu (event) {
+ const { data } = this.props
+ const entries = data.trashedSet.toJS()
+ const menu = Menu.buildFromTemplate([
+ { label: 'Empty Trash', click: () => this.emptyTrash(entries) }
+ ])
+ menu.popup()
+ }
+
render () {
const { data, location, config, dispatch } = this.props