diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-05-22 02:40:44 +0200 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-05-22 02:40:44 +0200 |
commit | 23246ea3987d8a60d3ea344ca93d209d082c3337 (patch) | |
tree | e8a63fcd0e3cfdd02c3ab78a2001413d2e83bfc1 /js/service | |
parent | 2b4da592f1c8a2210f9ba49a9e24eb2056e5d4a8 (diff) |
add keep unread, read, read feed and starring
Diffstat (limited to 'js/service')
-rw-r--r-- | js/service/ItemResource.js | 47 | ||||
-rw-r--r-- | js/service/Resource.js | 9 |
2 files changed, 51 insertions, 5 deletions
diff --git a/js/service/ItemResource.js b/js/service/ItemResource.js index e6a8e1d2d..33f3efc52 100644 --- a/js/service/ItemResource.js +++ b/js/service/ItemResource.js @@ -12,10 +12,12 @@ app.factory('ItemResource', (Resource, $http, BASE_URL) => { class ItemResource extends Resource { + constructor ($http, BASE_URL) { super($http, BASE_URL); } + receive (value, channel) { switch (channel) { @@ -31,25 +33,60 @@ app.factory('ItemResource', (Resource, $http, BASE_URL) => { } } + getNewestItemId () { return this.newestItemId; } + getStarredCount () { return this.starredCount; } - markRead (itemId, read=true) { + + star (itemId, star=true) { + let item = this.get(itemId); + let base = this.BASE_URL; + let url = `${base}/items/${item.feedId}/${item.guidHash}/star`; + + item.starred = star; + + return this.http({ + url: url, + method: 'POST', + data: { + isStarred: star + } + }); + } + + + read (itemId, read=true) { this.get(itemId).unread = !read; - //http.get(); + return this.http({ + url: `${this.BASE_URL}/items/${itemId}/read`, + method: 'POST', + data: { + isRead: read + } + }); } - markFeedRead (feedId) { - for (let item in this.values.filter(i => i.feedId === feedId)) { - this.markRead(item); + + keepUnread (itemId) { + this.get(itemId).keepUnread = true; + return this.read(itemId, false); + } + + + readFeed (feedId, read=true) { + for (let item of this.values.filter(i => i.feedId === feedId)) { + item.unread = !read; } + return this.http.post(`${this.BASE_URL}/feeds/${feedId}/read`); } + } return new ItemResource($http, BASE_URL); diff --git a/js/service/Resource.js b/js/service/Resource.js index 7683099da..072abca18 100644 --- a/js/service/Resource.js +++ b/js/service/Resource.js @@ -12,6 +12,7 @@ app.factory('Resource', () => { class Resource { + constructor (http, BASE_URL, id='id') { this.id = id; this.values = []; @@ -20,12 +21,14 @@ app.factory('Resource', () => { this.BASE_URL = BASE_URL; } + receive (objs) { for (let obj of objs) { this.add(obj); } } + add (obj) { let existing = this.hashMap[obj[this.id]]; @@ -40,14 +43,17 @@ app.factory('Resource', () => { } } + size () { return this.values.length; } + get (id) { return this.hashMap[id]; } + delete (id) { // find index of object that should be deleted let deleteAtIndex = this.values.findIndex(e => e[this.id] === id); @@ -61,6 +67,7 @@ app.factory('Resource', () => { } } + clear () { this.hashMap = {}; @@ -72,10 +79,12 @@ app.factory('Resource', () => { } } + getAll () { return this.values; } + } return Resource; |