From 864775829847a96464981ae0e752a7752c8c0e33 Mon Sep 17 00:00:00 2001 From: gorhill Date: Mon, 8 Sep 2014 19:45:22 -0400 Subject: [PATCH] this fixes #219 --- 3p-filters.html | 1 + _locales/de/messages.json | 4 ++++ _locales/en/messages.json | 4 ++++ _locales/fr/messages.json | 4 ++++ css/3p-filters.css | 17 +++++++++------ js/3p-filters.js | 44 +++++++++++++++++++++++++++++---------- js/assets.js | 31 ++++++++++++--------------- js/messaging-handlers.js | 16 +++++++------- 8 files changed, 77 insertions(+), 44 deletions(-) diff --git a/3p-filters.html b/3p-filters.html index 3d044dc16..d8cbb3c47 100644 --- a/3p-filters.html +++ b/3p-filters.html @@ -14,6 +14,7 @@ '); @@ -200,6 +210,7 @@ var renderBlacklists = function() { listDetails = details; cosmeticSwitch = details.cosmetic; needUpdate = false; + hasCachedContent = false; var lists = details.available; var html = []; @@ -298,6 +309,7 @@ var listsContentChanged = function() { var updateWidgets = function() { uDom('#buttonApply').toggleClass('enabled', listsSelectionChanged()); uDom('#buttonUpdate').toggleClass('enabled', listsContentChanged()); + uDom('#buttonPurgeAll').toggleClass('enabled', hasCachedContent); }; /******************************************************************************/ @@ -394,6 +406,15 @@ var buttonUpdateHandler = function() { /******************************************************************************/ +var buttonPurgeAllHandler = function() { + var onCompleted = function() { + renderBlacklists(); + }; + messaging.ask({ what: 'purgeAllCaches' }, onCompleted); +}; + +/******************************************************************************/ + var autoUpdateCheckboxChanged = function() { messaging.tell({ what: 'userSettings', @@ -449,6 +470,7 @@ uDom.onLoad(function() { uDom('#parseCosmeticFilters').on('change', cosmeticSwitchChanged); uDom('#buttonApply').on('click', buttonApplyHandler); uDom('#buttonUpdate').on('click', buttonUpdateHandler); + uDom('#buttonPurgeAll').on('click', buttonPurgeAllHandler); uDom('#lists').on('change', '.listDetails > input', onListCheckboxChanged); uDom('#lists').on('click', '.listDetails > a:nth-of-type(1)', onListLinkClicked); uDom('#lists').on('click', 'span.purge', onPurgeClicked); diff --git a/js/assets.js b/js/assets.js index 6baf90bdb..653a14bd7 100644 --- a/js/assets.js +++ b/js/assets.js @@ -205,6 +205,18 @@ var cachedAssetsManager = (function() { getEntries(onEntries); }; + exports.removeAll = function(callback) { + var onEntries = function() { + exports.remove(/^https?:\/\/[a-z0-9]+/); + exports.remove(/^assets\/(ublock|thirdparties)\//); + exports.remove('assets/checksums.txt'); + if ( typeof callback === 'function' ) { + callback(); + } + }; + getEntries(onEntries); + }; + return exports; })(); @@ -956,24 +968,7 @@ exports.purge = function(pattern, before) { /******************************************************************************/ exports.purgeAll = function(callback) { - var onMetaDataReady = function(entries) { - var out = {}; - var entry; - for ( var path in entries ) { - if ( entries.hasOwnProperty(path) === false ) { - continue; - } - entry = entries[path]; - if ( !entry.cacheObsolete && !entry.repoObsolete ) { - continue; - } - cachedAssetsManager.remove(path); - out[path] = true; - } - callback(out); - }; - - exports.metadata(onMetaDataReady); + cachedAssetsManager.removeAll(callback); }; /******************************************************************************/ diff --git a/js/messaging-handlers.js b/js/messaging-handlers.js index 7c61d8ff8..89322bdd6 100644 --- a/js/messaging-handlers.js +++ b/js/messaging-handlers.js @@ -258,18 +258,13 @@ var getLists = function(callback) { }; var onMetadataReady = function(entries) { r.cache = entries; - if ( r.available ) { - callback(r); - } + callback(r); }; var onLists = function(lists) { r.available = lists; - if ( r.cache ) { - callback(r); - } + µb.assets.metadata(onMetadataReady); }; µb.getAvailableLists(onLists); - µb.assets.metadata(onMetadataReady); }; /******************************************************************************/ @@ -282,8 +277,11 @@ var onMessage = function(request, sender, callback) { case 'getLists': return getLists(callback); - case 'readUserUbiquitousBlockRules': - return µb.assets.get(µb.userFiltersPath, callback); + case 'getLists': + return getLists(callback); + + case 'purgeAllCaches': + return µb.assets.purgeAll(callback); case 'writeUserUbiquitousBlockRules': return µb.assets.put(µb.userFiltersPath, request.content, callback);