function getCurrentTab(callback) { chrome.tabs.query( { active: true, currentWindow: true }, (_tabs) => { callback(_tabs[0]); } ); } function getOptions(callback) { chrome.storage.local.get(['sleepyTabsOptions'], (result) => { callback(result.sleepyTabsOptions || { suspendAfterMins: 30, suspendIncognito: false, whitelistPages: [], whitelistDomains: [], }); }); } function onClick() { let _element = this; getCurrentTab((_tab) => { switch(_element.className) { case 'suspend-tab': chrome.runtime.sendMessage({ type: 'SUSPEND_TAB', tab: _tab }, window.close); break; case 'un-suspend-tab': chrome.runtime.sendMessage({ type: 'UNSUSPEND_TAB', tab: _tab }, window.close); break; case 'suspend-other': chrome.runtime.sendMessage({ type: 'SUSPEND_OTHER_TABS', tab: _tab }, window.close); break; case 'un-suspend-all-tabs': chrome.runtime.sendMessage({ type: 'UNSUSPEND_ALL_TABS', tab: _tab }, window.close); break; case 'never-suspend-page': chrome.runtime.sendMessage({ type: 'NEVER_SUSPEND_PAGE', tab: _tab }, window.close); break; case 'remove-never-suspend-page': chrome.runtime.sendMessage({ type: 'REMOVE_NEVER_SUSPEND_PAGE', tab: _tab }, window.close); break; case 'never-suspend-site': chrome.runtime.sendMessage({ type: 'NEVER_SUSPEND_DOMAIN', tab: _tab }, window.close); break; case 'remove-never-suspend-site': chrome.runtime.sendMessage({ type: 'REMOVE_NEVER_SUSPEND_DOMAIN', tab: _tab }, window.close); break; } }); }; document.querySelectorAll('a[href="#"]').forEach((_element, _index) => { _element.onclick = onClick; }); let linkSuspendTab = document.querySelector('a.suspend-tab'); let linkUnSuspendTab = document.querySelector('a.un-suspend-tab'); let linkSuspendOther = document.querySelector('a.suspend-other'); let linkUnSuspendAll = document.querySelector('a.un-suspend-all'); let linkNeverSuspendPage = document.querySelector('a.never-suspend-page'); let linkRemoveNeverSuspendPage = document.querySelector('a.remove-never-suspend-page'); let linkNeverSuspendSite = document.querySelector('a.never-suspend-site'); let linkRemoveNeverSuspendSite = document.querySelector('a.remove-never-suspend-site'); getCurrentTab((_tab) => { getOptions((options) => { linkSuspendTab.style.display = _tab.url.match(/^chrome-extension:\S+suspended.html/) ? 'none' : 'block'; linkUnSuspendTab.style.display = linkSuspendTab.style.display == 'none' ? 'block' : 'none'; if(_tab.url.match(/^chrome/)) { linkNeverSuspendPage.style.display = 'none'; linkRemoveNeverSuspendPage.style.display = 'none'; linkNeverSuspendSite.style.display = 'none'; linkRemoveNeverSuspendSite.style.display = 'none'; } else { linkNeverSuspendPage.style.display = options.whitelistPages.indexOf(_tab.url.replace(/\?.*$/, '')) > -1 ? 'none' : 'block'; linkRemoveNeverSuspendPage.style.display = linkNeverSuspendPage.style.display == 'none' ? 'block' : 'none'; linkNeverSuspendSite.style.display = options.whitelistDomains.indexOf(_tab.url.replace(/(^https?:\/\/[^/]+).*$/, '$1')) > -1 ? 'none' : 'block'; linkRemoveNeverSuspendSite.style.display = linkNeverSuspendSite.style.display == 'none' ? 'block' : 'none'; } }); });