Skip to content
This repository has been archived by the owner on Sep 9, 2022. It is now read-only.

Commit

Permalink
this fixes gorhill/uBlock#63
Browse files Browse the repository at this point in the history
  • Loading branch information
gorhill authored and chrisaljoudi committed Apr 17, 2015
1 parent d5465d3 commit 2ecc81e
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 20 deletions.
31 changes: 20 additions & 11 deletions src/js/messaging.js
Original file line number Diff line number Diff line change
Expand Up @@ -974,16 +974,19 @@ var getLocalData = function(callback) {
/******************************************************************************/

var backupUserData = function(callback) {
var onUserFiltersReady = function(details) {
var userData = {
timeStamp: Date.now(),
version: vAPI.app.version,
userSettings: µb.userSettings,
filterLists: µb.extractSelectedFilterLists(),
netWhitelist: µb.stringFromWhitelist(µb.netWhitelist),
dynamicFilteringString: µb.permanentFirewall.toString(),
userFilters: details.content
};
var userData = {
timeStamp: Date.now(),
version: vAPI.app.version,
userSettings: µb.userSettings,
filterLists: {},
netWhitelist: µb.stringFromWhitelist(µb.netWhitelist),
dynamicFilteringString: µb.permanentFirewall.toString(),
userFilters: ''
};

var onSelectedListsReady = function(filterLists) {
userData.filterLists = filterLists;

var now = new Date();
var filename = vAPI.i18n('aboutBackupFilename')
.replace('{{datetime}}', now.toLocaleString())
Expand All @@ -1001,6 +1004,12 @@ var backupUserData = function(callback) {
getLocalData(callback);
};

var onUserFiltersReady = function(details) {
userData.userFilters = details.content;
µb.extractSelectedFilterLists(onSelectedListsReady);
};


µb.assets.get('assets/user/filters.txt', onUserFiltersReady);
};

Expand Down Expand Up @@ -1050,7 +1059,7 @@ var restoreUserData = function(request) {
/******************************************************************************/

var resetUserData = function() {
vAPI.storage.clear(onAllRemoved);
vAPI.storage.clear();

// Keep global counts, people can become quite attached to numbers
µb.saveLocalSettings(true);
Expand Down
39 changes: 30 additions & 9 deletions src/js/storage.js
Original file line number Diff line number Diff line change
Expand Up @@ -102,19 +102,40 @@
// This will remove all unused filter list entries from
// µBlock.remoteBlacklists`. This helps reduce the size of backup files.

µBlock.extractSelectedFilterLists = function() {
var r = JSON.parse(JSON.stringify(this.remoteBlacklists));
µBlock.extractSelectedFilterLists = function(callback) {
var µb = this;

for ( var path in r ) {
if ( r.hasOwnProperty(path) === false ) {
continue;
var onBuiltinListsLoaded = function(details) {
var builtin;
try {
builtin = JSON.parse(details.content);
} catch (e) {
builtin = {};
}
if ( r[path].off !== false ) {
delete r[path];

var result = JSON.parse(JSON.stringify(µb.remoteBlacklists));
var builtinPath;
var defaultState;

for ( var path in result ) {
if ( result.hasOwnProperty(path) === false ) {
continue;
}
builtinPath = path.replace(/^assets\/thirdparties\//, '');
defaultState = builtin.hasOwnProperty(builtinPath) === false ||
builtin[builtinPath].off === true;
if ( result[path].off === true && result[path].off === defaultState ) {
delete result[path];
}
}
}

return r;
callback(result);
};

// https://github.com/gorhill/uBlock/issues/63
// Get built-in block lists: this will help us determine whether a
// specific list must be included in the result.
this.assets.get('assets/ublock/filter-lists.json', onBuiltinListsLoaded);
};

/******************************************************************************/
Expand Down

0 comments on commit 2ecc81e

Please sign in to comment.