function onCreated() { if (browser.runtime.lastError) { console.log(`Error: ${browser.runtime.lastError}`); } } function onError(error) { console.log(`Error: ${error}`); } function showResult(response) { console.log(`Response: ${response}`); var title = browser.i18n.getMessage("notificationTitle") || "Docspell Response"; var content = ""; if (response == 0) { content = browser.i18n.getMessage("notificationSuccess"); } else { content = browser.i18n.getMessage("notificationFailure"); } browser.notifications.create({ "type": "basic", "iconUrl": browser.extension.getURL("icons/logo-48.png"), "title": title, "message": content }); } function pushDocspell(items) { for (let item of items) { console.log(`Pushing to docspell: ${item.filename}`); var sending = browser.runtime.sendNativeMessage("docspell", item.filename); sending.then(showResult, onError); } } function onStartedDownload(id) { console.log(`Started downloading: ${id}`); browser.downloads.onChanged.addListener(function(delta) { if (delta.id == id) { if (delta.state && delta.state.current === "complete") { console.log(`Download ${delta.id} has completed.`); var searching = browser.downloads.search({id}); searching.then(pushDocspell, onError); } } }); } function onFailed(error) { console.log(`Download failed: ${error}`); } function downloadAsFile(url) { console.log(`Downloading: ${url}`); var downloading = browser.downloads.download({ url: url, saveAs: false, conflictAction : 'uniquify' }); downloading.then(onStartedDownload, onFailed); } browser.contextMenus.create({ id: "separator-2", type: "separator", contexts: ["all"] }, onCreated); browser.contextMenus.create({ id: "docspell-push", title: "Download and push to Docspell", contexts: ["all"] }, onCreated); browser.contextMenus.onClicked.addListener(function(info, tab) { switch (info.menuItemId) { case "docspell-push": if (info.linkUrl) { downloadAsFile(info.linkUrl); } break; } }); console.log("Docspell Extension loaded");