feat(browser-extension): add extension stylesheet action and improve rules performance
This commit is contained in:
parent
57e9e56e17
commit
1e1a98f476
@ -115,7 +115,6 @@ browser.runtime.onMessage.addListener((message, sender, callback) => {
|
|||||||
case 'DISABLE_ICON':
|
case 'DISABLE_ICON':
|
||||||
if (isPage && tabId !== undefined) {
|
if (isPage && tabId !== undefined) {
|
||||||
browser.action.setIcon({ path: '/assets/icons/disabled.png', tabId }, suppressLastError);
|
browser.action.setIcon({ path: '/assets/icons/disabled.png', tabId }, suppressLastError);
|
||||||
browser.action.setBadgeText({ tabId, text: '' });
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'ENABLE_ICON':
|
case 'ENABLE_ICON':
|
||||||
@ -130,11 +129,8 @@ browser.runtime.onMessage.addListener((message, sender, callback) => {
|
|||||||
break;
|
break;
|
||||||
case 'GET_DATA':
|
case 'GET_DATA':
|
||||||
storage.get('data', ({ data }) => {
|
storage.get('data', ({ data }) => {
|
||||||
if (data) {
|
if (data) callback(data);
|
||||||
callback(data);
|
else refreshData(callback);
|
||||||
} else {
|
|
||||||
refreshData(callback);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
case 'GET_EXCLUSION_LIST':
|
case 'GET_EXCLUSION_LIST':
|
||||||
@ -163,9 +159,19 @@ browser.runtime.onMessage.addListener((message, sender, callback) => {
|
|||||||
script.insertCSS({ files: ['styles/dialog.css'], target: { tabId } });
|
script.insertCSS({ files: ['styles/dialog.css'], target: { tabId } });
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 'INSERT_EXTENSION_CSS':
|
||||||
|
if (isPage && tabId !== undefined) {
|
||||||
|
script.insertCSS({ files: ['styles/extension.css'], target: { tabId } });
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 'REFRESH_DATA':
|
case 'REFRESH_DATA':
|
||||||
refreshData(callback);
|
refreshData(callback);
|
||||||
return true;
|
return true;
|
||||||
|
case 'RELOAD_TAB':
|
||||||
|
if (tabId !== undefined) {
|
||||||
|
browser.tabs.reload(tabId, { bypassCache: true });
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 'REPORT':
|
case 'REPORT':
|
||||||
if (tabId !== undefined) {
|
if (tabId !== undefined) {
|
||||||
report(message, sender.tab, callback);
|
report(message, sender.tab, callback);
|
||||||
@ -173,18 +179,15 @@ browser.runtime.onMessage.addListener((message, sender, callback) => {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'SET_BADGE':
|
case 'SET_BADGE':
|
||||||
if (tabId !== undefined) {
|
if (isPage && tabId !== undefined) {
|
||||||
browser.action.setBadgeBackgroundColor({ color: '#6b7280' });
|
browser.action.setBadgeBackgroundColor({ color: '#6b7280' });
|
||||||
browser.action.setBadgeText({ tabId, text: message.value });
|
browser.action.setBadgeText({ tabId, text: message.value ? `${message.value}` : null });
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'SET_HOSTNAME_STATE':
|
case 'SET_HOSTNAME_STATE':
|
||||||
if (hostname) {
|
if (hostname) {
|
||||||
if (message.state.enabled === false) {
|
if (message.state.enabled === false) storage.set({ [hostname]: message.state });
|
||||||
storage.set({ [hostname]: message.state });
|
else storage.remove(hostname);
|
||||||
} else {
|
|
||||||
storage.remove(hostname);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -252,24 +255,22 @@ browser.webRequest.onBeforeRequest.addListener(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const hostname = url.split('.').slice(-3).join('.').replace('www.', '');
|
const hostname = new URL(url).hostname.split('.').slice(-3).join('.').replace('www.', '');
|
||||||
const store = await storage.get(hostname);
|
const { data, ...store } = await storage.get(['data', hostname]);
|
||||||
const state = store[hostname] ?? { enabled: true };
|
const state = store[hostname] ?? { enabled: true };
|
||||||
|
|
||||||
if (state.enabled) {
|
|
||||||
const { data } = await storage.get('data');
|
|
||||||
|
|
||||||
if (data?.rules?.length) {
|
if (data?.rules?.length) {
|
||||||
browser.declarativeNetRequest.updateSessionRules({
|
browser.declarativeNetRequest.updateSessionRules({
|
||||||
addRules: data.rules.map((rule) => ({
|
addRules: state.enabled
|
||||||
|
? data.rules.map((rule) => ({
|
||||||
...rule,
|
...rule,
|
||||||
condition: { ...rule.condition, tabIds: [tabId] },
|
condition: { ...rule.condition, tabIds: [tabId] },
|
||||||
})),
|
}))
|
||||||
|
: undefined,
|
||||||
removeRuleIds: data.rules.map((rule) => rule.id),
|
removeRuleIds: data.rules.map((rule) => rule.id),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{ urls: ['<all_urls>'] }
|
{ urls: ['<all_urls>'] }
|
||||||
);
|
);
|
||||||
|
3
packages/browser-extension/src/styles/extension.css
Normal file
3
packages/browser-extension/src/styles/extension.css
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
*[data-cookie-dialog-monster='true'] {
|
||||||
|
visibility: hidden !important;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user