diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-09-13 02:42:19 +0200 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-09-13 02:42:19 +0200 |
commit | 0a818fa9ff21d98c16def02cfbf1043ea675d2a9 (patch) | |
tree | 53cfa5d989fe2046d81fe086fd26d1c8ae5dd6b6 /js/build/app.js | |
parent | 8c38ef40bd9b1ff794de218ea71d43971bef4c59 (diff) |
delete + undo folders
Diffstat (limited to 'js/build/app.js')
-rw-r--r-- | js/build/app.js | 54 |
1 files changed, 29 insertions, 25 deletions
diff --git a/js/build/app.js b/js/build/app.js index ba1591ae1..46872de63 100644 --- a/js/build/app.js +++ b/js/build/app.js @@ -570,20 +570,38 @@ app.controller('NavigationController', }; - // TBD + this._deletedFeedsBackup = {}; this.reversiblyDeleteFolder = function (folder) { folder.deleted = true; - console.log(folder); + + var self = this; + var feeds = FeedResource.getByFolderId(folder.id); + + // keep feeds for undo + feeds.forEach(function (feed) { + self._deletedFeedsBackup[folder.name] = + self._deletedFeedsBackup[folder.name] || []; + self._deletedFeedsBackup[folder.name].push(feed); + FeedResource.delete(feed.id); + }); + + FolderResource.reversiblyDelete(folder.id); }; this.undoDeleteFolder = function (folder) { - console.log(folder); - // todo remote stuff + folder.deleted = false; + + var deletedFeeds = this._deletedFeedsBackup[folder.name]; + if (deletedFeeds !== undefined) { + FeedResource.receive(deletedFeeds); + } + + FolderResource.undoDelete(folder.id); }; this.deleteFolder = function (folder) { - //folder.deleted = false; - console.log('remove ' + folder); + delete this._deletedFeedsBackup[folder.name]; + FolderResource.delete(folder.name); }; var self = this; @@ -865,6 +883,8 @@ app.factory('FeedResource', ["Resource", "$http", "BASE_URL", "$q", function (Re this.updateUnreadCache(); this.updateFolderCache(); + + return feed; }; @@ -886,15 +906,6 @@ app.factory('FolderResource', ["Resource", "$http", "BASE_URL", "$q", function ( FolderResource.prototype = Object.create(Resource.prototype); - FolderResource.prototype.delete = function (folderName) { - var folder = this.get(folderName); - this.deleted = folder; - - Resource.prototype.delete.call(this, folderName); - - return this.http.delete(this.BASE_URL + '/folders/' + folder.id); - }; - FolderResource.prototype.toggleOpen = function (folderName) { var folder = this.get(folderName); @@ -962,20 +973,13 @@ app.factory('FolderResource', ["Resource", "$http", "BASE_URL", "$q", function ( }; - FolderResource.prototype.reversiblyDeleteFolder = function (id) { + FolderResource.prototype.reversiblyDelete = function (id) { return this.http.delete(this.BASE_URL + '/folders/' + id); }; - FolderResource.prototype.undoDelete = function () { - // TODO: check for errors - if (this.deleted) { - this.add(this.deleted); - - return this.http.post( - this.BASE_URL + '/folders/' + this.deleted.id + '/restore' - ); - } + FolderResource.prototype.undoDelete = function (id) { + return this.http.post(this.BASE_URL + '/folders/' + id + '/restore'); }; |