summaryrefslogtreecommitdiffstats
path: root/js/service
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2014-05-23 02:54:58 +0200
committerBernhard Posselt <dev@bernhard-posselt.com>2014-05-23 02:54:58 +0200
commit66dc3028d75c455f118c484b9de0708409026451 (patch)
tree488560633254ff7aa1eda58fd4681db660e4c803 /js/service
parent8cafa3c21ee456f8e35d6b0e03687fb591cfc928 (diff)
stuff
Diffstat (limited to 'js/service')
-rw-r--r--js/service/FeedResource.js42
-rw-r--r--js/service/Publisher.js2
2 files changed, 43 insertions, 1 deletions
diff --git a/js/service/FeedResource.js b/js/service/FeedResource.js
index 2eb9e4818..1f0c6c34d 100644
--- a/js/service/FeedResource.js
+++ b/js/service/FeedResource.js
@@ -14,8 +14,50 @@ app.factory('FeedResource', (Resource, $http, BASE_URL) => {
constructor ($http, BASE_URL) {
super($http, BASE_URL, 'url');
+ this.ids = {};
}
+
+ add (value) {
+ super.add(value);
+ this.ids[value.id] = this.hashMap[value.url];
+ }
+
+
+ delete (id) {
+ let feed = this.get(id);
+ delete this.ids[feed.id];
+ super.delete(id);
+ }
+
+
+ markRead () {
+ for(let feed of this.values) {
+ feed.unreadCount = 0;
+ }
+ }
+
+
+ markFeedRead (feedId) {
+ this.ids[feedId].unreadCount = 0;
+ }
+
+
+ markItemOfFeedRead (feedId) {
+ this.ids[feedId].unreadCount -= 1;
+ }
+
+
+ markItemOfFeedUnread (feedId) {
+ this.ids[feedId].unreadCount += 1;
+ }
+
+
+ getUnreadCount () {
+ return this.values.reduce((sum, feed) => sum + feed.unreadCount, 0);
+ }
+
+
}
return new FeedResource($http, BASE_URL);
diff --git a/js/service/Publisher.js b/js/service/Publisher.js
index dd420f629..9e17e1494 100644
--- a/js/service/Publisher.js
+++ b/js/service/Publisher.js
@@ -29,7 +29,7 @@ app.service('Publisher', function () {
this.publishAll = (data) => {
for (let [channel, messages] of items(data)) {
if (this.channels[channel] !== undefined) {
- for (let listener of this.channels[channel]) {
+ for(let listener of this.channels[channel]) {
listener.receive(messages, channel);
}
}