/* * notion-enhancer * (c) 2021 dragonwocky (https://dragonwocky.me/) * (https://notion-enhancer.github.io/) under the MIT license */ 'use strict'; const enhancerMenu = { _tab: {}, highlight() { return new Promise((res, rej) => chrome.tabs.get(this._tab.id, async (tab) => { if (chrome.runtime.lastError) { chrome.tabs.highlight({ 'tabs': (await this.create()).index }); } else { chrome.tabs.highlight({ 'tabs': tab.index }); } res(this._tab); }) ); }, create() { return new Promise((res, rej) => chrome.tabs.create( { url: chrome.runtime.getURL( 'repo/menu@a6621988-551d-495a-97d8-3c568bca2e9e/menu.html' ), }, (tab) => { this._tab = tab; res(this._tab); } ) ); }, async open() { try { await this.highlight(); } catch { await this.create(); } return this._tab; }, }; chrome.action.onClicked.addListener(() => enhancerMenu.open()); chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { switch (request.type) { case 'enhancerMenu.open': enhancerMenu.open(); break; } return true; });