mirror of
https://github.com/gorhill/uBlock.git
synced 2026-03-11 09:04:36 +00:00
draft
This commit is contained in:
parent
db2225fee7
commit
756eee032e
3 changed files with 50 additions and 15 deletions
|
|
@ -50,6 +50,7 @@ import {
|
|||
excludeFromStrictBlock,
|
||||
getEnabledRulesetsDetails,
|
||||
getRulesetDetails,
|
||||
patchDefaultRulesets,
|
||||
setStrictBlockMode,
|
||||
updateDynamicRules,
|
||||
} from './ruleset-manager.js';
|
||||
|
|
@ -377,22 +378,24 @@ function onMessage(request, sender, callback) {
|
|||
async function start() {
|
||||
await loadRulesetConfig();
|
||||
|
||||
// Potentially enable new default rulesets
|
||||
const currentVersion = getCurrentVersion();
|
||||
const isNewVersion = currentVersion !== rulesetConfig.version;
|
||||
|
||||
// The default rulesets may have changed, find out new ruleset to enable,
|
||||
// obsolete ruleset to remove.
|
||||
if ( isNewVersion ) {
|
||||
ubolLog(`Version change: ${rulesetConfig.version} => ${currentVersion}`);
|
||||
rulesetConfig.version = currentVersion;
|
||||
await patchDefaultRulesets();
|
||||
saveRulesetConfig();
|
||||
}
|
||||
|
||||
const rulesetsUpdated = process.wakeupRun === false &&
|
||||
await enableRulesets(rulesetConfig.enabledRulesets);
|
||||
|
||||
// We need to update the regex rules only when ruleset version changes.
|
||||
if ( process.wakeupRun === false ) {
|
||||
const currentVersion = getCurrentVersion();
|
||||
if ( currentVersion !== rulesetConfig.version ) {
|
||||
ubolLog(`Version change: ${rulesetConfig.version} => ${currentVersion}`);
|
||||
rulesetConfig.version = currentVersion;
|
||||
saveRulesetConfig();
|
||||
if ( rulesetsUpdated === false ) {
|
||||
updateDynamicRules();
|
||||
}
|
||||
}
|
||||
if ( isNewVersion && rulesetsUpdated === false ) {
|
||||
updateDynamicRules();
|
||||
}
|
||||
|
||||
// Permissions may have been removed while the extension was disabled
|
||||
|
|
|
|||
|
|
@ -24,13 +24,11 @@ import {
|
|||
sessionRead, sessionWrite,
|
||||
} from './ext.js';
|
||||
|
||||
import { defaultRulesetsFromLanguage } from './ruleset-manager.js';
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
export const rulesetConfig = {
|
||||
version: '',
|
||||
enabledRulesets: [ 'default' ],
|
||||
enabledRulesets: [],
|
||||
autoReload: true,
|
||||
showBlockedCount: true,
|
||||
strictBlockMode: true,
|
||||
|
|
@ -67,7 +65,6 @@ export async function loadRulesetConfig() {
|
|||
sessionWrite('rulesetConfig', rulesetConfig);
|
||||
return;
|
||||
}
|
||||
rulesetConfig.enabledRulesets = await defaultRulesetsFromLanguage();
|
||||
sessionWrite('rulesetConfig', rulesetConfig);
|
||||
localWrite('rulesetConfig', rulesetConfig);
|
||||
process.firstRun = true;
|
||||
|
|
|
|||
|
|
@ -593,6 +593,40 @@ async function defaultRulesetsFromLanguage() {
|
|||
|
||||
/******************************************************************************/
|
||||
|
||||
async function patchDefaultRulesets() {
|
||||
const [
|
||||
oldDefaultIds = [],
|
||||
newDefaultIds,
|
||||
newIds,
|
||||
] = await Promise.all([
|
||||
localRead('defaultRulesetIds'),
|
||||
defaultRulesetsFromLanguage(),
|
||||
getRulesetDetails(),
|
||||
]);
|
||||
const toAdd = [];
|
||||
const toRemove = [];
|
||||
for ( const id of newDefaultIds ) {
|
||||
if ( oldDefaultIds.includes(id) ) { continue; }
|
||||
toAdd.push(id);
|
||||
}
|
||||
for ( const id of oldDefaultIds ) {
|
||||
if ( newDefaultIds.includes(id) ) { continue; }
|
||||
toRemove.push(id);
|
||||
}
|
||||
for ( const id of rulesetConfig.enabledRulesets ) {
|
||||
if ( newIds.has(id) ) { continue; }
|
||||
toRemove.push(id);
|
||||
}
|
||||
localWrite('defaultRulesetIds', newDefaultIds);
|
||||
if ( toAdd.length === 0 && toRemove.length === 0 ) { return; }
|
||||
const enabledRulesets = new Set(rulesetConfig.enabledRulesets);
|
||||
toAdd.forEach(id => enabledRulesets.add(id));
|
||||
toRemove.forEach(id => enabledRulesets.delete(id));
|
||||
rulesetConfig.enabledRulesets = Array.from(enabledRulesets);
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
async function enableRulesets(ids) {
|
||||
const afterIds = new Set(ids);
|
||||
const [ beforeIds, adminIds, rulesetDetails ] = await Promise.all([
|
||||
|
|
@ -681,6 +715,7 @@ export {
|
|||
filteringModesToDNR,
|
||||
getRulesetDetails,
|
||||
getEnabledRulesetsDetails,
|
||||
patchDefaultRulesets,
|
||||
setStrictBlockMode,
|
||||
updateDynamicRules,
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in a new issue