diff --git a/background.js b/background.js index bb8ed45..953ee42 100644 --- a/background.js +++ b/background.js @@ -3,15 +3,44 @@ browser.action.onClicked.addListener((() => url: '/pages/search/search.html' }))) +/* */ + +let registeredTabs = [] + +const addRegisteredTab = (tabId) => + registeredTabs = [tabId, ...registeredTabs] + +const removeRegisteredTab = (tabId) => + registeredTabs = registeredTabs.filter((x) => x !== tabId) + +/* */ + +browser.tabs.onRemoved.addListener((tabId) => { + console.log(tabId, registeredTabs) + if (!registeredTabs.includes(tabId)) { + return + } + + removeRegisteredTab(tabId) + + const timeout = () => new Promise((resolve) => + setTimeout(resolve, 500)) + + timeout() + .then(() => browser.sessions.getRecentlyClosed({maxResults: 1})) + .then((x) => (console.log(x), x)) + .then(([sessionInfo]) => browser.sessions.forgetClosedTab( + sessionInfo.tab.windowId, + sessionInfo.tab.sessionId)) +}) + 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)) + browser.tabs.remove(sender.tab.id) + break + case 'registerSender': + addRegisteredTab(sender.tab.id) break } }) diff --git a/pages/search/modules/bridge.js b/pages/search/modules/bridge.js new file mode 100644 index 0000000..28194af --- /dev/null +++ b/pages/search/modules/bridge.js @@ -0,0 +1,3 @@ +export const registerTab = () => { + browser.runtime.sendMessage({action: 'registerSender'}) +} diff --git a/pages/search/search.js b/pages/search/search.js index 54f31ef..a69500a 100644 --- a/pages/search/search.js +++ b/pages/search/search.js @@ -1,4 +1,5 @@ import * as Store from './modules/store.js' +import * as bridge from './modules/bridge.js' import * as dom from './modules/dom.js' import * as inputHandlers from './modules/inputHandlers.js' @@ -12,5 +13,7 @@ const store = Store.init({ }, }) -void inputHandlers.attachInputHandlers(store) +void bridge.registerTab() void dom.enableFaviconFallback() + +void inputHandlers.attachInputHandlers(store)