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