Index: new-options.js |
=================================================================== |
--- a/new-options.js |
+++ b/new-options.js |
@@ -72,10 +72,15 @@ |
Collection.prototype.addItems = function() |
Thomas Greiner
2016/08/04 15:54:02
Note: We should really change this function to onl
saroyanm
2016/08/17 14:59:15
Done.
|
{ |
- var length = Array.prototype.push.apply(this.items, arguments); |
- if (length == 0) |
+ var itemsToAdd = []; |
+ for (var i = 0; i < arguments.length; i++) |
Thomas Greiner
2016/08/04 15:54:02
Detail: I don't mind omitting the braces for a sin
saroyanm
2016/08/17 14:59:15
This was fixed during previous comment implementat
|
+ if (this.items.indexOf(arguments[i]) == -1) |
+ itemsToAdd.push(arguments[i]); |
+ |
+ if (itemsToAdd.length == 0) |
return; |
+ Array.prototype.push.apply(this.items, itemsToAdd); |
this.items.sort(function(a, b) |
{ |
// Make sure that Acceptable Ads is always last, since it cannot be |
@@ -96,9 +101,9 @@ |
{ |
var table = E(this.details[j].id); |
var template = table.querySelector("template"); |
- for (var i = 0; i < arguments.length; i++) |
+ for (var i = 0; i < itemsToAdd.length; i++) |
{ |
- var item = arguments[i]; |
+ var item = itemsToAdd[i]; |
var listItem = document.createElement("li"); |
listItem.appendChild(document.importNode(template.content, true)); |
listItem.setAttribute("aria-label", this._getItemTitle(item, j)); |
@@ -335,20 +340,20 @@ |
} |
]); |
- function updateLanguageCollections(subscription) |
+ function toggleShowLanguage(subscription) |
{ |
if (subscription.recommended == "ads") |
{ |
- if (subscription.disabled) |
+ if (subscription.disabled == false) |
Thomas Greiner
2016/08/04 15:54:03
Detail: Do we need to explicitly check for `false`
saroyanm
2016/08/17 14:59:15
This change was required because with latest chang
|
+ { |
+ collections.allLangs.removeItem(subscription); |
+ collections.langs.addItems(subscription); |
+ } |
+ else |
{ |
collections.allLangs.addItems(subscription); |
collections.langs.removeItem(subscription); |
} |
- else |
- { |
- collections.allLangs.removeItem(subscription); |
- collections.langs.addItems(subscription); |
- } |
} |
} |
@@ -371,24 +376,16 @@ |
collection.addItems(subscription); |
subscriptionsMap[subscription.url] = subscription; |
+ toggleShowLanguage(subscription); |
updateTooltips(); |
} |
function updateSubscription(subscription) |
{ |
- var knownSubscription = subscriptionsMap[subscription.url]; |
- for (var property in subscription) |
- { |
- if (property == "title" && subscription.recommended) |
- knownSubscription.originalTitle = subscription.title; |
- else |
- knownSubscription[property] = subscription[property]; |
- } |
+ for (var name in collections) |
+ collections[name].updateItem(subscription); |
- for (var name in collections) |
- collections[name].updateItem(knownSubscription); |
- |
- return knownSubscription; |
+ toggleShowLanguage(subscription); |
} |
function updateFilter(filter) |
@@ -1026,11 +1023,22 @@ |
function onSubscriptionMessage(action, subscription) |
{ |
+ if (subscription.url in subscriptionsMap) |
+ { |
+ var knownSubscription = subscriptionsMap[subscription.url]; |
+ for (var property in subscription) |
+ { |
+ if (property == "title" && knownSubscription.recommended) |
+ knownSubscription.originalTitle = subscription.title; |
+ else |
+ knownSubscription[property] = subscription[property]; |
+ } |
+ subscription = knownSubscription; |
+ } |
switch (action) |
{ |
case "disabled": |
- subscription = updateSubscription(subscription); |
- updateLanguageCollections(subscription); |
+ updateSubscription(subscription); |
break; |
case "downloading": |
case "downloadStatus": |
@@ -1041,15 +1049,13 @@ |
break; |
case "added": |
if (subscription.url in subscriptionsMap) |
- subscription = updateSubscription(subscription); |
+ updateSubscription(subscription); |
else |
addSubscription(subscription); |
collections.filterLists.addItems(subscription); |
- updateLanguageCollections(subscription); |
break; |
case "removed": |
- var knownSubscription = subscriptionsMap[subscription.url]; |
if (subscription.url == acceptableAdsUrl || subscription.recommended) |
{ |
subscription.disabled = true; |
@@ -1057,10 +1063,10 @@ |
} |
else |
{ |
- collections.custom.removeItem(knownSubscription); |
+ collections.custom.removeItem(subscription); |
delete subscriptionsMap[subscription.url]; |
} |
- collections.filterLists.removeItem(knownSubscription); |
+ collections.filterLists.removeItem(subscription); |
break; |
} |