let flagActivated = false;
let flagClearSession = true;
let removeTabs = {};
let tabUrls = {};
let tabsBlock = {};
let tabsRedirect = {};
let lastValue = 0;
chrome.tabs.onCreated.addListener((tab) => {
console.log("tabsReditect onCreated", tabsRedirect);
tabsRedirect[tab.id] = lastValue;
applyRulesRedirect(lastValue);
saveTabsInStorageRedirect(tabsRedirect, lastValue);
flagActivated = true;
lastValue++;
});
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
tabUrls[tabId] = tab.pendingUrl ? tab.pendingUrl : tab.url;
console.log("onUpdated tabsUrls ", tabUrls);
const url = tab.pendingUrl ? tab.pendingUrl : tab.url;
if (
Object.keys(tabsBlock).length + 1 <= MAX_TABS &&
SITE_RULES.some((rule) => rule.test(url))
) {
tabsBlock[tabId] = true;
saveTabsInStorage(tabsBlock);
}
});
chrome.tabs.onActivated.addListener((activeInfo) => {
const tabId = activeInfo.tabId;
if (!flagActivated) {
console.log("He cambiado de pestaña");
//REDIRECT
applyRulesRedirect(tabsRedirect[tabId]);
}
flagActivated = false;
// BLOCK
console.log("onActivate ", tabsBlock[tabId]);
if (Object.keys(tabsBlock).length >= MAX_TABS) {
tabsBlock[tabId] === undefined
? applyRulesBlock(true)
: applyRulesBlock(false);
}
});
chrome.tabs.onRemoved.addListener(async (tabId, removeInfo) => {
const actualTabs = await chrome.tabs.query({});
const url = tabUrls[tabId];
removeTabs[tabId] = url;
delete tabUrls[tabId];
console.log("onRemoved removeTabs ", removeTabs);
if (!existTab(tabId, tabsBlock)) return;
tabsBlock = deleteTab({
myTabs: tabsBlock,
isRedirect: false,
actualTabs: actualTabs,
lastValue: lastValue,
});
if (Object.keys(tabsBlock).length <= MAX_TABS) {
applyRulesBlock(false);
}
tabsRedirect = deleteTab({
myTabs: tabsRedirect,
isRedirect: true,
actualTabs: actualTabs,
lastValue: lastValue,
});
if (flagClearSession) {
flagClearSession = false;
setTimeout(() => {
console.log("clearSession ", removeTabs);
clearSession(removeTabs);
removeTabs = {};
flagClearSession = true;
}, 500);
}
});