import MainBackground from "./main.background"; import NotificationBackground from "./notification.background"; export default class TabsBackground { constructor( private main: MainBackground, private notificationBackground: NotificationBackground ) {} async init() { if (!chrome.tabs) { return; } chrome.tabs.onActivated.addListener(async (activeInfo: chrome.tabs.TabActiveInfo) => { await this.main.refreshBadgeAndMenu(); this.main.messagingService.send("tabActivated"); this.main.messagingService.send("tabChanged"); }); chrome.tabs.onReplaced.addListener(async (addedTabId: number, removedTabId: number) => { if (this.main.onReplacedRan) { return; } this.main.onReplacedRan = true; await this.notificationBackground.checkNotificationQueue(); await this.main.refreshBadgeAndMenu(); this.main.messagingService.send("tabReplaced"); this.main.messagingService.send("tabChanged"); }); chrome.tabs.onUpdated.addListener( async (tabId: number, changeInfo: chrome.tabs.TabChangeInfo, tab: chrome.tabs.Tab) => { if (this.main.onUpdatedRan) { return; } this.main.onUpdatedRan = true; await this.notificationBackground.checkNotificationQueue(tab); await this.main.refreshBadgeAndMenu(); this.main.messagingService.send("tabUpdated"); this.main.messagingService.send("tabChanged"); } ); } }