diff --git a/background.js b/background.js index edd3fda23..49f94eaf4 100644 --- a/background.js +++ b/background.js @@ -125,11 +125,12 @@ async function sendMessageToActiveTab(message) { } } -function toast(message, noteId = null) { +function toast(message, noteId = null, tabIds = null) { sendMessageToActiveTab({ name: 'toast', message: message, - noteId: noteId + noteId: noteId, + tabIds: tabIds }); } @@ -302,7 +303,11 @@ async function saveTabs() { return; } - toast(`${tabs.length} links have been saved to Trilium.`, resp.noteId); + toast( + `${tabs.length} links have been saved to Trilium.`, + resp.noteId, + tabs.map(tab=>{return tab.id}) + ); } browser.contextMenus.onClicked.addListener(async function(info, tab) { @@ -371,6 +376,9 @@ browser.runtime.onMessage.addListener(async request => { } } } + else if (request.name === 'closeTabs') { + return await browser.tabs.remove(request.tabIds) + } else if (request.name === 'load-script') { return await browser.tabs.executeScript({file: request.file}); } diff --git a/content.js b/content.js index 1fb006636..326323b00 100644 --- a/content.js +++ b/content.js @@ -209,6 +209,17 @@ function getImages(container) { return images; } +function createLink(clickMessage, text, color = "lightskyblue") { + const link = document.createElement('a'); + link.href = "javascript:"; + link.style.color = color; + link.appendChild(document.createTextNode(text)); + link.addEventListener("click", () => { + browser.runtime.sendMessage(null, clickMessage) + }); + return link +} + async function prepareMessageResponse(message) { console.info('Message: ' + message.name); @@ -216,21 +227,24 @@ async function prepareMessageResponse(message) { let messageText; if (message.noteId) { - messageText = document.createElement('span'); + messageText = document.createElement('p'); + messageText.setAttribute("style", "padding: 0; margin: 0") messageText.appendChild(document.createTextNode(message.message + " ")); + openNoteLink = createLink( + {name: 'openNoteInTrilium',noteId: message.noteId}, + "Open in Trilium." + ) + messageText.appendChild(openNoteLink); - const link = document.createElement('a'); - link.href = "javascript:"; - link.style.color = "lightskyblue"; - link.appendChild(document.createTextNode("Open in Trilium.")); - link.addEventListener("click", () => { - browser.runtime.sendMessage(null, { - name: 'openNoteInTrilium', - noteId: message.noteId - }) - }); - - messageText.appendChild(link); + if (message.tabIds) { + messageText.appendChild(document.createElement("br")); + closeTabsLink = createLink( + {name: 'closeTabs', tabIds: message.tabIds}, + "Close saved tabs.", + "tomato" + ) + messageText.appendChild(closeTabsLink); + } } else { messageText = message.message; @@ -304,4 +318,4 @@ async function requireLib(libPath) { await browser.runtime.sendMessage({name: 'load-script', file: libPath}); } -} \ No newline at end of file +}