| Index: lib/filterStorage.js |
| =================================================================== |
| --- a/lib/filterStorage.js |
| +++ b/lib/filterStorage.js |
| @@ -205,36 +205,38 @@ |
| * particular group that the filter should be added to |
| * @param {number} [position] |
| * position within the subscription at which the filter should be added |
| */ |
| addFilter(filter, subscription, position) |
| { |
| if (!subscription) |
| { |
| - if (filter.subscriptions.some(s => s instanceof SpecialSubscription && |
| - !s.disabled)) |
| + for (let currentSubscription of filter.subscriptions) |
| { |
| - return; // No need to add |
| + if (currentSubscription instanceof SpecialSubscription && |
| + !currentSubscription.disabled) |
| + { |
| + return; // No need to add |
| + } |
| } |
| subscription = FilterStorage.getGroupForFilter(filter); |
| } |
| if (!subscription) |
| { |
| // No group for this filter exists, create one |
| subscription = SpecialSubscription.createForFilter(filter); |
| this.addSubscription(subscription); |
| return; |
| } |
| if (typeof position == "undefined") |
| position = subscription.filters.length; |
| - if (filter.subscriptions.indexOf(subscription) < 0) |
| - filter.subscriptions.push(subscription); |
| + filter.subscriptions.add(subscription); |
| subscription.filters.splice(position, 0, filter); |
| FilterNotifier.triggerListeners("filter.added", filter, subscription, |
| position); |
| }, |
| /** |
| * Removes a user-defined filter from the list |
| * @param {Filter} filter |
| @@ -242,21 +244,20 @@ |
| * the filter should be removed from (if ommited will be removed from all |
| * subscriptions) |
| * @param {number} [position] position inside the filter group at which the |
| * filter should be removed (if ommited all instances will be removed) |
| */ |
| removeFilter(filter, subscription, position) |
| { |
| let subscriptions = ( |
| - subscription ? [subscription] : filter.subscriptions.slice() |
| + subscription ? [subscription] : filter.subscriptions |
| ); |
| - for (let i = 0; i < subscriptions.length; i++) |
| + for (let currentSubscription of subscriptions) |
| { |
| - let currentSubscription = subscriptions[i]; |
| if (currentSubscription instanceof SpecialSubscription) |
| { |
| let positions = []; |
| if (typeof position == "undefined") |
| { |
| let index = -1; |
| do |
| { |
| @@ -270,21 +271,17 @@ |
| for (let j = positions.length - 1; j >= 0; j--) |
| { |
| let currentPosition = positions[j]; |
| if (currentSubscription.filters[currentPosition] == filter) |
| { |
| currentSubscription.filters.splice(currentPosition, 1); |
| if (currentSubscription.filters.indexOf(filter) < 0) |
| - { |
| - let index = filter.subscriptions.indexOf(currentSubscription); |
| - if (index >= 0) |
| - filter.subscriptions.splice(index, 1); |
| - } |
| + filter.subscriptions.delete(currentSubscription); |
| FilterNotifier.triggerListeners( |
| "filter.removed", filter, currentSubscription, currentPosition |
| ); |
| } |
| } |
| } |
| } |
| }, |
| @@ -657,35 +654,31 @@ |
| * filter subscription that should be connected to its filters |
| */ |
| function addSubscriptionFilters(subscription) |
| { |
| if (!FilterStorage.knownSubscriptions.has(subscription.url)) |
| return; |
| for (let filter of subscription.filters) |
| - filter.subscriptions.push(subscription); |
| + filter.subscriptions.add(subscription); |
| } |
| /** |
| * Removes subscription's filters from the subscription without any |
| * notifications. |
| * @param {Subscription} subscription filter subscription to be removed |
| */ |
| function removeSubscriptionFilters(subscription) |
| { |
| if (!FilterStorage.knownSubscriptions.has(subscription.url)) |
| return; |
| for (let filter of subscription.filters) |
| - { |
| - let i = filter.subscriptions.indexOf(subscription); |
| - if (i >= 0) |
| - filter.subscriptions.splice(i, 1); |
| - } |
| + filter.subscriptions.delete(subscription); |
| } |
| /** |
| * Listener returned by FilterStorage.importData(), parses filter data. |
| * @constructor |
| */ |
| function INIParser() |
| { |
| @@ -738,17 +731,17 @@ |
| { |
| let subscription = this.subscriptions[ |
| this.subscriptions.length - 1 |
| ]; |
| for (let text of this.curObj) |
| { |
| let filter = Filter.fromText(text); |
| subscription.filters.push(filter); |
| - filter.subscriptions.push(subscription); |
| + filter.subscriptions.add(subscription); |
| } |
| } |
| break; |
| } |
| } |
| if (val === null) |
| return; |