summaryrefslogtreecommitdiffstats
path: root/js/service
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2014-05-22 02:40:44 +0200
committerBernhard Posselt <dev@bernhard-posselt.com>2014-05-22 02:40:44 +0200
commit23246ea3987d8a60d3ea344ca93d209d082c3337 (patch)
treee8a63fcd0e3cfdd02c3ab78a2001413d2e83bfc1 /js/service
parent2b4da592f1c8a2210f9ba49a9e24eb2056e5d4a8 (diff)
add keep unread, read, read feed and starring
Diffstat (limited to 'js/service')
-rw-r--r--js/service/ItemResource.js47
-rw-r--r--js/service/Resource.js9
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;