diff --git a/background.js b/background.js index 0bbaf79..bb8ed45 100644 --- a/background.js +++ b/background.js @@ -2,3 +2,16 @@ browser.action.onClicked.addListener((() => browser.tabs.create({ url: '/pages/search/search.html' }))) + +browser.runtime.onMessage.addListener((message, sender) => { + switch (message.action) { + case 'closeSender': + Promise.resolve() + .then(() => browser.tabs.remove(sender.tab.id)) + .then(() => browser.sessions.getRecentlyClosed({maxResults: 1})) + .then(([sessionInfo]) => browser.sessions.forgetClosedTab( + sessionInfo.tab.windowId, + sessionInfo.tab.sessionId)) + break + } +}) diff --git a/manifest.json b/manifest.json index 0e15924..b653f3f 100644 --- a/manifest.json +++ b/manifest.json @@ -23,7 +23,8 @@ "manifest_version": 3, "name": "Tabswitcher", "permissions": [ - "tabs" + "tabs", + "sessions" ], "version": "1.0.0" } diff --git a/pages/search/search.js b/pages/search/search.js index f815007..54f31ef 100644 --- a/pages/search/search.js +++ b/pages/search/search.js @@ -6,7 +6,10 @@ const store = Store.init({ tabs: browser.tabs, windows: browser.windows, onStateUpdate: dom.updateSearchResults, - closeCurrentTab: () => window.close(), + closeCurrentTab: () => { + history.replaceState({}, '', '') + browser.runtime.sendMessage({action: 'closeSender'}) + }, }) void inputHandlers.attachInputHandlers(store)