summaryrefslogtreecommitdiffstats
path: root/js/service
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2014-09-13 12:00:54 +0200
committerBernhard Posselt <dev@bernhard-posselt.com>2014-09-13 12:00:54 +0200
commit021b68025223f2f3fdc8a7f588ae2e87128cbbc0 (patch)
tree173361a56ca40f263031915d10d0b26d4da0033d /js/service
parent1cb7d9ad1f47c4fce59dad43cc88568524ebc974 (diff)
better folder undelete
Diffstat (limited to 'js/service')
-rw-r--r--js/service/FeedResource.js67
-rw-r--r--js/service/FolderResource.js10
2 files changed, 70 insertions, 7 deletions
diff --git a/js/service/FeedResource.js b/js/service/FeedResource.js
index 5c66cde32..180ba0db7 100644
--- a/js/service/FeedResource.js
+++ b/js/service/FeedResource.js
@@ -34,6 +34,10 @@ app.factory('FeedResource', function (Resource, $http, BASE_URL, $q) {
var self = this;
this.values.forEach(function (feed) {
+ // deleted feeds should not add to the unread count
+ if (feed.deleted) {
+ return;
+ }
if (feed.unreadCount) {
self.unreadCount += feed.unreadCount;
}
@@ -206,12 +210,32 @@ app.factory('FeedResource', function (Resource, $http, BASE_URL, $q) {
};
- FeedResource.prototype.reversiblyDelete = function (id) {
+ FeedResource.prototype.reversiblyDelete = function (id, updateCache) {
+ var feed = this.getById(id);
+
+ if (feed) {
+ feed.deleted = true;
+ }
+
+ if (updateCache !== false) {
+ this.updateUnreadCache();
+ }
+
return this.http.delete(this.BASE_URL + '/feeds/' + id);
};
- FeedResource.prototype.delete = function (url) {
+ FeedResource.prototype.reversiblyDeleteFolder = function (folderId) {
+ var self = this;
+ this.getByFolderId(folderId).forEach(function (feed) {
+ self.reversiblyDelete(feed.id, false);
+ });
+
+ this.updateUnreadCache();
+ };
+
+
+ FeedResource.prototype.delete = function (url, updateCache) {
var feed = this.get(url);
if (feed.id) {
delete this.ids[feed.id];
@@ -219,17 +243,50 @@ app.factory('FeedResource', function (Resource, $http, BASE_URL, $q) {
Resource.prototype.delete.call(this, url);
- this.updateUnreadCache();
- this.updateFolderCache();
+ if (updateCache !== false) {
+ this.updateUnreadCache();
+ this.updateFolderCache();
+ }
return feed;
};
- FeedResource.prototype.undoDelete = function (id) {
+ FeedResource.prototype.deleteFolder = function (folderId) {
+ var self = this;
+ this.getByFolderId(folderId).forEach(function (feed) {
+ self.delete(feed.url, false);
+ });
+
+ this.updateUnreadCache();
+ this.updateFolderCache();
+ };
+
+
+ FeedResource.prototype.undoDelete = function (id, updateCache) {
+ var feed = this.getById(id);
+
+ if (feed) {
+ feed.deleted = false;
+ }
+
+ if (updateCache !== false) {
+ this.updateUnreadCache();
+ }
+
return this.http.post(this.BASE_URL + '/feeds/' + id + '/restore');
};
+ FeedResource.prototype.undoDeleteFolder = function (folderId) {
+ var self = this;
+ this.getByFolderId(folderId).forEach(function (feed) {
+ self.undoDelete(feed.id, false);
+ });
+
+ this.updateUnreadCache();
+ };
+
+
return new FeedResource($http, BASE_URL, $q);
}); \ No newline at end of file
diff --git a/js/service/FolderResource.js b/js/service/FolderResource.js
index a0c75a2e4..997ba1652 100644
--- a/js/service/FolderResource.js
+++ b/js/service/FolderResource.js
@@ -85,12 +85,18 @@ app.factory('FolderResource', function (Resource, $http, BASE_URL, $q) {
};
- FolderResource.prototype.reversiblyDelete = function (id) {
+ FolderResource.prototype.reversiblyDelete = function (name) {
+ var folder = this.get(name);
+ var id = folder.id;
+ folder.deleted = true;
return this.http.delete(this.BASE_URL + '/folders/' + id);
};
- FolderResource.prototype.undoDelete = function (id) {
+ FolderResource.prototype.undoDelete = function (name) {
+ var folder = this.get(name);
+ var id = folder.id;
+ folder.deleted = false;
return this.http.post(this.BASE_URL + '/folders/' + id + '/restore');
};