diff options
Diffstat (limited to 'js/service')
-rw-r--r-- | js/service/FeedResource.js | 42 | ||||
-rw-r--r-- | js/service/Publisher.js | 2 |
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); } } |