110 lines
3.6 KiB
JavaScript
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';
|
|
}
|
|
});
|
|
});
|