diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-09-13 12:00:54 +0200 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-09-13 12:00:54 +0200 |
commit | 021b68025223f2f3fdc8a7f588ae2e87128cbbc0 (patch) | |
tree | 173361a56ca40f263031915d10d0b26d4da0033d /js/service | |
parent | 1cb7d9ad1f47c4fce59dad43cc88568524ebc974 (diff) |
better folder undelete
Diffstat (limited to 'js/service')
-rw-r--r-- | js/service/FeedResource.js | 67 | ||||
-rw-r--r-- | js/service/FolderResource.js | 10 |
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'); }; |