diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2013-04-22 16:05:45 +0200 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2013-04-22 16:05:45 +0200 |
commit | b9099435cb6535db835d25361e7b706b85744b20 (patch) | |
tree | 2a681b1f9ff0de9780f1f4a785be8378d7f577ab /js/app/services/businesslayer | |
parent | ac5c8f5f4faae74c034a5cfd1e7f85ca26815bc5 (diff) |
add undo for feed and folder deletion, fix #56
Diffstat (limited to 'js/app/services/businesslayer')
-rw-r--r-- | js/app/services/businesslayer/feedbusinesslayer.coffee | 21 | ||||
-rw-r--r-- | js/app/services/businesslayer/folderbusinesslayer.coffee | 19 |
2 files changed, 29 insertions, 11 deletions
diff --git a/js/app/services/businesslayer/feedbusinesslayer.coffee b/js/app/services/businesslayer/feedbusinesslayer.coffee index 9d2f37390..93f89ad31 100644 --- a/js/app/services/businesslayer/feedbusinesslayer.coffee +++ b/js/app/services/businesslayer/feedbusinesslayer.coffee @@ -23,14 +23,16 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. angular.module('News').factory 'FeedBusinessLayer', ['_BusinessLayer', 'ShowAll', 'Persistence', 'ActiveFeed', 'FeedType', -'ItemModel', 'FeedModel', 'NewLoading', '_ExistsError', 'Utils', +'ItemModel', 'FeedModel', 'NewLoading', '_ExistsError', 'Utils', '$rootScope', +'UndoQueue', (_BusinessLayer, ShowAll, Persistence, ActiveFeed, FeedType, ItemModel, -FeedModel, NewLoading, _ExistsError, Utils) -> +FeedModel, NewLoading, _ExistsError, Utils, $rootScope, UndoQueue) -> class FeedBusinessLayer extends _BusinessLayer constructor: (@_showAll, @_feedModel, persistence, activeFeed, feedType, - itemModel, @_newLoading, @_utils) -> + itemModel, @_newLoading, @_utils, @_$rootScope, + @_undoQueue) -> super(activeFeed, persistence, itemModel, feedType.Feed) @_feedType = feedType @@ -52,8 +54,14 @@ FeedModel, NewLoading, _ExistsError, Utils) -> delete: (feedId) -> - @_feedModel.removeById(feedId) - @_persistence.deleteFeed(feedId) + feed = @_feedModel.removeById(feedId) + callback = => + @_persistence.deleteFeed(feedId) + + undoCallback = => + @_feedModel.add(feed) + + @_undoQueue.add(feed.title, callback, 10*1000, undoCallback) markFeedRead: (feedId) -> @@ -185,6 +193,7 @@ FeedModel, NewLoading, _ExistsError, Utils) -> return new FeedBusinessLayer(ShowAll, FeedModel, Persistence, ActiveFeed, - FeedType, ItemModel, NewLoading, Utils) + FeedType, ItemModel, NewLoading, Utils, + $rootScope, UndoQueue) ]
\ No newline at end of file diff --git a/js/app/services/businesslayer/folderbusinesslayer.coffee b/js/app/services/businesslayer/folderbusinesslayer.coffee index d19796d85..e35866f21 100644 --- a/js/app/services/businesslayer/folderbusinesslayer.coffee +++ b/js/app/services/businesslayer/folderbusinesslayer.coffee @@ -24,22 +24,31 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. angular.module('News').factory 'FolderBusinessLayer', ['_BusinessLayer', 'FolderModel', 'FeedBusinessLayer', 'Persistence', 'FeedType', 'ActiveFeed', 'ItemModel', 'ShowAll', '_ExistsError', 'OPMLParser', +'UndoQueue', (_BusinessLayer, FolderModel, FeedBusinessLayer, Persistence, FeedType, -ActiveFeed, ItemModel, ShowAll, _ExistsError, OPMLParser) -> +ActiveFeed, ItemModel, ShowAll, _ExistsError, OPMLParser, UndoQueue) -> class FolderBusinessLayer extends _BusinessLayer constructor: (@_folderModel, @_feedBusinessLayer, @_showAll, activeFeed, - persistence, @_feedType, itemModel, @_opmlParser) -> + persistence, @_feedType, itemModel, @_opmlParser, + @_undoQueue) -> super(activeFeed, persistence, itemModel, @_feedType.Folder) getById: (folderId) -> return @_folderModel.getById(folderId) + delete: (folderId) -> - @_folderModel.removeById(folderId) - @_persistence.deleteFolder(folderId) + folder = @_folderModel.removeById(folderId) + callback = => + @_persistence.deleteFolder(folderId) + + undoCallback = => + @_folderModel.add(folder) + + @_undoQueue.add(folder.name, callback, 10*1000, undoCallback) hasFeeds: (folderId) -> @@ -155,6 +164,6 @@ ActiveFeed, ItemModel, ShowAll, _ExistsError, OPMLParser) -> return new FolderBusinessLayer(FolderModel, FeedBusinessLayer, ShowAll, ActiveFeed, Persistence, FeedType, ItemModel, - OPMLParser) + OPMLParser, UndoQueue) ]
\ No newline at end of file |