| Index: background.js |
| =================================================================== |
| --- a/background.js |
| +++ b/background.js |
| @@ -34,7 +34,14 @@ |
| var subscriptions =[ |
| "https://easylist-downloads.adblockplus.org/easylistgermany+easylist.txt", |
| "https://easylist-downloads.adblockplus.org/exceptionrules.txt", |
| - "https://easylist-downloads.adblockplus.org/fanboy-social.txt" |
| + "https://easylist-downloads.adblockplus.org/fanboy-social.txt", |
| + "~user~786254" |
| + ]; |
| + var filters = [ |
| + "@@||alternate.de^$document", |
| + "@@||der.postillion.com^$document", |
| + "@@||taz.de^$document", |
| + "@@||amazon.de^$document" |
| ]; |
| var modules = {}; |
| @@ -52,6 +59,12 @@ |
| } |
| }; |
| + modules.prefs = { |
| + Prefs: { |
| + "subscriptions_exceptionsurl": "https://easylist-downloads.adblockplus.org/exceptionrules.txt" |
| + } |
| + } |
| + |
| modules.subscriptionClasses = { |
| Subscription: function(url) |
| { |
| @@ -61,11 +74,18 @@ |
| this.lastDownload = 1234; |
| }, |
| - SpecialSubscription: function() {} |
| + SpecialSubscription: function(url) { |
| + this.url = url; |
| + this.disabled = false; |
| + this.filters = filters.map(modules.filterClasses.Filter.fromText); |
| + } |
| }; |
| modules.subscriptionClasses.Subscription.fromURL = function(url) |
| { |
| - return new modules.subscriptionClasses.Subscription(url); |
| + if (/^https?:\/\//.test(url)) |
| + return new modules.subscriptionClasses.Subscription(url); |
| + else |
| + return new modules.subscriptionClasses.SpecialSubscription(url); |
| }; |
| modules.subscriptionClasses.DownloadableSubscription = modules.subscriptionClasses.Subscription; |
| @@ -73,41 +93,87 @@ |
| FilterStorage: { |
| get subscriptions() |
| { |
| - return subscriptions.map(modules.subscriptionClasses.Subscription.fromURL); |
| + var subscriptions = []; |
| + for (var url in modules.filterStorage.FilterStorage.knownSubscriptions) |
| + subscriptions.push(modules.filterStorage.FilterStorage.knownSubscriptions[url]); |
| + return subscriptions; |
| }, |
| get knownSubscriptions() |
| { |
| - var result = {}; |
| - for (var i = 0; i < subscriptions.length; i++) |
| - result[subscriptions[i]] = modules.subscriptionClasses.Subscription.fromURL(subscriptions[i]); |
| - return result; |
| + subscriptions = subscriptions.reduce(function(obj, subscription) |
| + { |
| + obj[subscription] = modules.subscriptionClasses.Subscription.fromURL(subscription); |
| + return obj; |
| + }, Object.create(null)); |
| + |
| + Object.defineProperty(modules.filterStorage.FilterStorage, "knownSubscriptions", { |
| + get: function() |
| + { |
| + return subscriptions; |
| + } |
| + }); |
| + |
| + return modules.filterStorage.FilterStorage.knownSubscriptions; |
| }, |
| addSubscription: function(subscription) |
| { |
| - var index = subscriptions.indexOf(subscription.url); |
| - if (index < 0) |
| + if (!(subscription.url in modules.filterStorage.FilterStorage.knownSubscriptions)) |
| { |
| - subscriptions.push(subscription.url); |
| + subscriptions[subscription.url] = modules.subscriptionClasses.Subscription.fromURL(subscription.url); |
| modules.filterNotifier.FilterNotifier.triggerListeners("subscription.added", subscription); |
| } |
| }, |
| removeSubscription: function(subscription) |
| { |
| - var index = subscriptions.indexOf(subscription.url); |
| - if (index >= 0) |
| + if (subscription.url in modules.filterStorage.FilterStorage.knownSubscriptions) |
| { |
| - subscriptions.splice(index, 1); |
| + delete subscriptions[subscription.url]; |
| modules.filterNotifier.FilterNotifier.triggerListeners("subscription.removed", subscription); |
| } |
| + }, |
| + |
| + addFilter: function(filter) |
| + { |
| + var subscription = modules.filterStorage.FilterStorage.knownSubscriptions["~user~786254"]; |
| + for (var i = 0; i < subscription.filters.length; i++) |
| + { |
| + if (subscription.filters[i].text == filter.text) |
| + return; |
| + } |
| + subscription.filters.push(filter); |
| + modules.filterNotifier.FilterNotifier.triggerListeners("filter.added", filter); |
| + }, |
| + |
| + removeFilter: function(filter) |
| + { |
| + var subscription = modules.filterStorage.FilterStorage.knownSubscriptions["~user~786254"]; |
| + for (var i = 0; i < subscription.filters.length; i++) |
| + { |
| + if (subscription.filters[i].text == filter.text) |
| + { |
| + subscription.filters.splice(i, 1); |
| + modules.filterNotifier.FilterNotifier.triggerListeners("filter.removed", filter); |
| + return; |
| + } |
| + } |
| } |
| } |
| }; |
| modules.filterClasses = { |
| - BlockingFilter: function() {} |
| + BlockingFilter: function() {}, |
| + Filter: function(text) |
| + { |
| + this.text = text; |
| + this.disabled = false; |
| + } |
| + }; |
| + modules.filterClasses.Filter.fromText = function(text) |
| + { |
| + return new modules.filterClasses.Filter(text); |
| }; |
| modules.synchronizer = { |