diff --git a/data/actions.js b/data/actions.js index 6784b63..64460d0 100644 --- a/data/actions.js +++ b/data/actions.js @@ -3,20 +3,54 @@ // "use strict"; +async function runTasks() { + let prefs = await getPrefs(); + console.log("Empty 'em: Emptying.. Start"); + + // + // Empty Junk folders before Trash. That way, the Junk messages sent to Trash will be cleaned as well. + // + if (prefs.prefs.selectJunkDelete) { + console.log("Empty 'em: Emptying Junk folders"); + await browser.folder_actions.emptyJunkFolders(); + } else { + console.log("Empty 'em: Skipping Junk folders by preference"); + } + + // + // Empty Trash folders + // + if (prefs.prefs.selectTrashDelete) { + console.log("Empty 'em: Emptying Trash folders"); + await browser.folder_actions.emptyTrashFolders(); + } else { + console.log("Empty 'em: Skipping Trash folders by preference"); + } + + // + // Once done, send the Done notification + // + console.log("Empty 'em: Emptying.. Done"); + if (prefs.prefs.disableDoneNotification) { + console.log("Empty 'em: Not sending Done notification by preference"); + } else { + let msg = (prefs.prefs.selectTrashDelete && prefs.prefs.selectJunkDelete) ? "Cleaned Trash and Junk folders" : + (prefs.prefs.selectJunkDelete) ? "Cleaned Junk folders" : + (prefs.prefs.selectTrashDelete) ? "Cleaned Trash folders" : + "Nothing selected to be cleaned"; + + browser.notifications.create("emptyem-done-notify", { + "type": "basic", + "iconUrl": browser.extension.getURL("icons/icon.png"), + "title": "Empty 'em done!", + "message": msg + }); + } +} + // Browser actions function emptyEm() { - console.log("Empty-em: Emptying.. Start"); - browser.folder_actions.emptyTrashFolders(); - browser.folder_actions.emptyJunkFolders(); - console.log("Empty-em: Emptying.. Done"); - - // TODO: Do this on done event - browser.notifications.create("emptyem-done-notify", { - "type": "basic", - "iconUrl": browser.extension.getURL("icons/icon.png"), - "title": "Empty 'em done!", - "message": "Cleaned Trash and Junk folders" - }); + runTasks(); } // Handlers diff --git a/folder_actions-api/api.js b/folder_actions-api/api.js index 35334f6..21c19a5 100644 --- a/folder_actions-api/api.js +++ b/folder_actions-api/api.js @@ -96,9 +96,7 @@ this.folder_actions = class extends ExtensionAPI { } debugMsg(msg) { - if (this.provider.options.consoleDebug > 0) { - console.log(msg); - } + console.log(msg); } getFolderInfo() { @@ -160,26 +158,26 @@ this.folder_actions = class extends ExtensionAPI { return { folder_actions: { - emptyFolder: function(folderName) { + emptyFolder: async function(folderName) { let finfo = self.getFolderInfo(); }, - emptyTrashFolders: function() { + emptyTrashFolders: async function() { let finfo = self.getFolderInfo(); - finfo.map(function(info) { + finfo.map(async function(info) { if (info.trashFolder) { self.debugMsg("emptyTrashFolders: Considering " + info.trashFolder.URI); self.debugMsg("emptyTrashFolders: canDeleteMessages? " + info.trashFolder.canDeleteMessages); self.debugMsg("emptyTrashFolders: hasSubFolders? " + info.trashFolder.hasSubFolders); self.debugMsg(info.trashFolder); - info.trashFolder.emptyTrash(null,null); + await info.trashFolder.emptyTrash(null,null); } }); }, - emptyJunkFolders: function() { + emptyJunkFolders: async function() { let finfo = self.getFolderInfo(); - finfo.map(function(info) { + finfo.map(async function(info) { if (info.junkFolder) { self.debugMsg("emptyTrashFolders: Considering " + info.junkFolder.URI); self.debugMsg("emptyTrashFolders: canDeleteMessages? " + info.junkFolder.canDeleteMessages); @@ -194,7 +192,7 @@ this.folder_actions = class extends ExtensionAPI { junk_msgs.appendElement(msg_hdr, false); } if (junk_msgs.length) { - info.junkFolder.deleteMessages(junk_msgs, mw, false, false, null, true); + await info.junkFolder.deleteMessages(junk_msgs, mw, false, false, null, true); } } }); diff --git a/manifest.json b/manifest.json index 3648ad7..e1832b3 100644 --- a/manifest.json +++ b/manifest.json @@ -31,7 +31,7 @@ }, "background": { - "scripts": ["data/actions.js"] + "scripts": ["data/jquery.min.js", "data/common.js", "data/actions.js"] }, "experiment_apis": {