Spaces:
Running
Running
chrome.runtime.onInstalled.addListener(() => { | |
chrome.storage.sync.set({ blockedSites: [] }); | |
updateDeclarativeNetRequestRules(); | |
}); | |
chrome.storage.onChanged.addListener((changes, namespace) => { | |
if (namespace === 'sync' && changes.blockedSites) { | |
updateDeclarativeNetRequestRules(); | |
} | |
}); | |
async function updateDeclarativeNetRequestRules() { | |
const { blockedSites } = await chrome.storage.sync.get('blockedSites'); | |
const rules = blockedSites.map((site, index) => ({ | |
id: index + 1, | |
priority: 1, | |
action: { type: 'block' }, | |
condition: { | |
urlFilter: `||${site}^`, | |
resourceTypes: ['script'] | |
} | |
})); | |
await chrome.declarativeNetRequest.updateDynamicRules({ | |
removeRuleIds: rules.map(rule => rule.id), | |
addRules: rules | |
}); | |
} |