sleepytabs/popup.js
2021-10-16 15:49:01 +02:00

110 lines
3.6 KiB
JavaScript

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';
}
});
});