Index: new-options.js |
diff --git a/new-options.js b/new-options.js |
index 9140a459ec877781f06af4caf30867bc5228c516..5dc0098e7a40d0c92ea07ae2e134fa3134553642 100644 |
--- a/new-options.js |
+++ b/new-options.js |
@@ -386,100 +386,62 @@ |
} |
]); |
- function observeSubscription(subscription) |
+ function updateLanguageCollections(subscription) |
{ |
- function onObjectChanged(change) |
+ var recommendation = recommendationsMap[subscription.url]; |
+ |
+ if (recommendation && recommendation.type == "ads") |
{ |
- for (var i = 0; i < change.length; i++) |
+ if (subscription.disabled) |
{ |
- if (change[i].name == "disabled") |
- { |
- var recommendation = recommendationsMap[subscription.url]; |
- if (recommendation && recommendation.type == "ads") |
- { |
- if (subscription.disabled == false) |
- { |
- collections.allLangs.removeItem(subscription); |
- collections.langs.addItems(subscription); |
- } |
- else |
- { |
- collections.allLangs.addItems(subscription); |
- collections.langs.removeItem(subscription); |
- } |
- } |
- } |
+ collections.allLangs.addItems(subscription); |
+ collections.langs.removeItem(subscription); |
+ } |
+ else |
+ { |
+ collections.allLangs.removeItem(subscription); |
+ collections.langs.addItems(subscription); |
} |
- |
- for (var name in collections) |
- collections[name].updateItem(subscription); |
} |
+ } |
- if (!Object.observe) |
+ function addSubscription(subscription) |
+ { |
+ var collection; |
+ if (subscription.url in recommendationsMap) |
{ |
- Object.keys(subscription).forEach(function(property) |
- { |
- var value = subscription[property]; |
- Object.defineProperty(subscription, property, |
- { |
- get: function() |
- { |
- return value; |
- }, |
- set: function(newValue) |
- { |
- if (value != newValue) |
- { |
- value = newValue; |
- onObjectChanged([{name: property}]); |
- } |
- } |
- }); |
- }); |
+ var recommendation = recommendationsMap[subscription.url]; |
+ if (recommendation.type != "ads") |
+ collection = collections.popular; |
+ else if (subscription.disabled == false) |
+ collection = collections.langs; |
+ else |
+ collection = collections.allLangs; |
} |
+ else if (subscription.url == acceptableAdsUrl) |
+ collection = collections.acceptableAds; |
else |
- { |
- Object.observe(subscription, onObjectChanged); |
- } |
+ collection = collections.custom; |
+ |
+ collection.addItems(subscription); |
+ subscriptionsMap[subscription.url] = subscription; |
} |
function updateSubscription(subscription) |
{ |
- var subscriptionUrl = subscription.url; |
- var knownSubscription = subscriptionsMap[subscriptionUrl]; |
- if (knownSubscription) |
+ var knownSubscription = subscriptionsMap[subscription.url]; |
+ for (var property in subscription) |
{ |
- for (var property in subscription) |
- { |
- if (property == "title" && subscriptionUrl in recommendationsMap) |
- knownSubscription.originalTitle = subscription.title; |
- else |
- knownSubscription[property] = subscription[property]; |
- } |
+ if (property == "title" && subscription.url in recommendationsMap) |
+ knownSubscription.originalTitle = subscription.title; |
+ else |
+ knownSubscription[property] = subscription[property]; |
} |
- else |
- { |
- observeSubscription(subscription); |
- var collection; |
- if (subscriptionUrl in recommendationsMap) |
- { |
- var recommendation = recommendationsMap[subscriptionUrl]; |
- if (recommendation.type != "ads") |
- collection = collections.popular; |
- else if (subscription.disabled == false) |
- collection = collections.langs; |
- else |
- collection = collections.allLangs; |
- } |
- else if (subscriptionUrl == acceptableAdsUrl) |
- collection = collections.acceptableAds; |
- else |
- collection = collections.custom; |
+ for (var name in collections) |
+ collections[name].updateItem(knownSubscription); |
- collection.addItems(subscription); |
- subscriptionsMap[subscriptionUrl] = subscription; |
- } |
+ return knownSubscription; |
} |
function updateFilter(filter) |
@@ -532,7 +494,7 @@ |
} |
recommendationsMap[subscription.url] = recommendation; |
- updateSubscription(subscription); |
+ addSubscription(subscription); |
} |
}); |
} |
@@ -875,7 +837,7 @@ |
function(url) |
{ |
acceptableAdsUrl = url; |
- updateSubscription({ |
+ addSubscription({ |
url: acceptableAdsUrl, |
disabled: true |
}); |
@@ -965,44 +927,45 @@ |
{ |
switch (action) |
{ |
- case "added": |
- updateSubscription(subscription); |
- updateShareLink(); |
- |
- var knownSubscription = subscriptionsMap[subscription.url]; |
- if (knownSubscription) |
- collections.filterLists.addItems(knownSubscription); |
- else |
- collections.filterLists.addItems(subscription); |
- break; |
case "disabled": |
+ subscription = updateSubscription(subscription); |
+ updateLanguageCollections(subscription); |
+ break; |
+ case "downloading": |
+ case "downloadStatus": |
+ case "homepage": |
+ case "lastDownload": |
+ case "title": |
updateSubscription(subscription); |
- updateShareLink(); |
+ break; |
+ case "added": |
+ if (subscription.url in subscriptionsMap) |
+ subscription = updateSubscription(subscription); |
+ else |
+ addSubscription(subscription); |
+ |
+ collections.filterLists.addItems(subscription); |
+ updateLanguageCollections(subscription); |
break; |
case "removed": |
var knownSubscription = subscriptionsMap[subscription.url]; |
- if (subscription.url == acceptableAdsUrl) |
+ |
+ if (subscription.url == acceptableAdsUrl || |
+ subscription.url in recommendationsMap) |
{ |
subscription.disabled = true; |
- updateSubscription(subscription); |
+ onSubscriptionMessage("disabled", subscription); |
} |
else |
{ |
- if (subscription.url in recommendationsMap) |
- knownSubscription.disabled = true; |
- else |
- { |
- collections.custom.removeItem(knownSubscription); |
- delete subscriptionsMap[subscription.url]; |
- } |
+ collections.custom.removeItem(knownSubscription); |
+ delete subscriptionsMap[subscription.url]; |
} |
- updateShareLink(); |
collections.filterLists.removeItem(knownSubscription); |
break; |
- default: |
- updateSubscription(subscription); |
- break; |
} |
+ |
+ updateShareLink(); |
} |
function hidePref(key, value) |