Add close tabs link in toast message after saving window's tabs

This commit is contained in:
alteist 2021-02-22 14:35:55 +06:00
parent 6824eb21d4
commit 73d48d8dd5
2 changed files with 39 additions and 17 deletions

View File

@ -125,11 +125,12 @@ async function sendMessageToActiveTab(message) {
} }
} }
function toast(message, noteId = null) { function toast(message, noteId = null, tabIds = null) {
sendMessageToActiveTab({ sendMessageToActiveTab({
name: 'toast', name: 'toast',
message: message, message: message,
noteId: noteId noteId: noteId,
tabIds: tabIds
}); });
} }
@ -302,7 +303,11 @@ async function saveTabs() {
return; 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) { 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') { else if (request.name === 'load-script') {
return await browser.tabs.executeScript({file: request.file}); return await browser.tabs.executeScript({file: request.file});
} }

View File

@ -209,6 +209,17 @@ function getImages(container) {
return images; 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) { async function prepareMessageResponse(message) {
console.info('Message: ' + message.name); console.info('Message: ' + message.name);
@ -216,21 +227,24 @@ async function prepareMessageResponse(message) {
let messageText; let messageText;
if (message.noteId) { if (message.noteId) {
messageText = document.createElement('span'); messageText = document.createElement('p');
messageText.setAttribute("style", "padding: 0; margin: 0")
messageText.appendChild(document.createTextNode(message.message + " ")); messageText.appendChild(document.createTextNode(message.message + " "));
openNoteLink = createLink(
{name: 'openNoteInTrilium',noteId: message.noteId},
"Open in Trilium."
)
messageText.appendChild(openNoteLink);
const link = document.createElement('a'); if (message.tabIds) {
link.href = "javascript:"; messageText.appendChild(document.createElement("br"));
link.style.color = "lightskyblue"; closeTabsLink = createLink(
link.appendChild(document.createTextNode("Open in Trilium.")); {name: 'closeTabs', tabIds: message.tabIds},
link.addEventListener("click", () => { "Close saved tabs.",
browser.runtime.sendMessage(null, { "tomato"
name: 'openNoteInTrilium', )
noteId: message.noteId messageText.appendChild(closeTabsLink);
}) }
});
messageText.appendChild(link);
} }
else { else {
messageText = message.message; messageText = message.message;
@ -304,4 +318,4 @@ async function requireLib(libPath) {
await browser.runtime.sendMessage({name: 'load-script', file: libPath}); await browser.runtime.sendMessage({name: 'load-script', file: libPath});
} }
} }