diff options
Diffstat (limited to 'js/app/services')
-rw-r--r-- | js/app/services/businesslayer/feedbusinesslayer.coffee | 22 | ||||
-rw-r--r-- | js/app/services/businesslayer/folderbusinesslayer.coffee | 27 | ||||
-rw-r--r-- | js/app/services/persistence.coffee | 21 | ||||
-rw-r--r-- | js/app/services/undoqueue.coffee | 87 |
4 files changed, 46 insertions, 111 deletions
diff --git a/js/app/services/businesslayer/feedbusinesslayer.coffee b/js/app/services/businesslayer/feedbusinesslayer.coffee index 8dc1c126a..2219ce2cd 100644 --- a/js/app/services/businesslayer/feedbusinesslayer.coffee +++ b/js/app/services/businesslayer/feedbusinesslayer.coffee @@ -24,15 +24,15 @@ 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', '$rootScope', -'UndoQueue', 'NewestItem', +'NewestItem', (_BusinessLayer, ShowAll, Persistence, ActiveFeed, FeedType, ItemModel, -FeedModel, NewLoading, _ExistsError, Utils, $rootScope, UndoQueue, NewestItem)-> +FeedModel, NewLoading, _ExistsError, Utils, $rootScope, NewestItem)-> class FeedBusinessLayer extends _BusinessLayer constructor: (@_showAll, @_feedModel, persistence, activeFeed, feedType, itemModel, @_newLoading, @_utils, @_$rootScope, - @_undoQueue, @_newestItem) -> + @_newestItem) -> super(activeFeed, persistence, itemModel, feedType.Feed) @_feedType = feedType @@ -55,13 +55,15 @@ FeedModel, NewLoading, _ExistsError, Utils, $rootScope, UndoQueue, NewestItem)-> delete: (feedId) -> feed = @_feedModel.removeById(feedId) - callback = => - @_persistence.deleteFeed(feedId) - - undoCallback = => - @_feedModel.add(feed) - @_undoQueue.add(feed.title, callback, 10*1000, undoCallback) + data = + undoCallback: => + @_persistence.restoreFeed feedId, => + @_persistence.getAllFeeds() + caption: feed.title + + @_$rootScope.$broadcast 'undoMessage', data + @_persistence.deleteFeed(feedId) markRead: (feedId) -> @@ -192,6 +194,6 @@ FeedModel, NewLoading, _ExistsError, Utils, $rootScope, UndoQueue, NewestItem)-> return new FeedBusinessLayer(ShowAll, FeedModel, Persistence, ActiveFeed, FeedType, ItemModel, NewLoading, Utils, - $rootScope, UndoQueue, NewestItem) + $rootScope, NewestItem) ]
\ No newline at end of file diff --git a/js/app/services/businesslayer/folderbusinesslayer.coffee b/js/app/services/businesslayer/folderbusinesslayer.coffee index 3d1fbb7c7..94bc974e6 100644 --- a/js/app/services/businesslayer/folderbusinesslayer.coffee +++ b/js/app/services/businesslayer/folderbusinesslayer.coffee @@ -24,16 +24,16 @@ 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', 'NewestItem', 'FeedModel', +'NewestItem', 'FeedModel', '$rootScope', (_BusinessLayer, FolderModel, FeedBusinessLayer, Persistence, FeedType, -ActiveFeed, ItemModel, ShowAll, _ExistsError, OPMLParser, UndoQueue, -NewestItem, FeedModel) -> +ActiveFeed, ItemModel, ShowAll, _ExistsError, OPMLParser, NewestItem, +FeedModel, $rootScope) -> class FolderBusinessLayer extends _BusinessLayer constructor: (@_folderModel, @_feedBusinessLayer, @_showAll, activeFeed, persistence, @_feedType, itemModel, @_opmlParser, - @_undoQueue, @_newestItem, @_feedModel) -> + @_newestItem, @_feedModel, @_$rootScope) -> super(activeFeed, persistence, itemModel, @_feedType.Folder) @@ -48,16 +48,17 @@ NewestItem, FeedModel) -> feeds.push(@_feedModel.removeById(feed.id)) folder = @_folderModel.removeById(folderId) - - callback = => - @_persistence.deleteFolder(folderId) - undoCallback = => - @_folderModel.add(folder) - for feed in feeds - @_feedModel.add(feed) + data = + undoCallback: => + @_persistence.restoreFolder folderId, => + @_persistence.getAllFeeds() + @_persistence.getAllFolders() + caption: folder.name + + @_$rootScope.$broadcast 'undoMessage', data + @_persistence.deleteFolder(folderId) - @_undoQueue.add(folder.name, callback, 10*1000, undoCallback) hasFeeds: (folderId) -> @@ -183,6 +184,6 @@ NewestItem, FeedModel) -> return new FolderBusinessLayer(FolderModel, FeedBusinessLayer, ShowAll, ActiveFeed, Persistence, FeedType, ItemModel, - OPMLParser, UndoQueue, NewestItem, FeedModel) + OPMLParser, NewestItem, FeedModel, $rootScope) ]
\ No newline at end of file diff --git a/js/app/services/persistence.coffee b/js/app/services/persistence.coffee index a5905e745..98549b98f 100644 --- a/js/app/services/persistence.coffee +++ b/js/app/services/persistence.coffee @@ -200,6 +200,16 @@ $rootScope) -> @_request.post 'news_feeds_delete', params + restoreFeed: (feedId, onSuccess=null) -> + onSuccess or= -> + params = + onSuccess: onSuccess + routeParams: + feedId: feedId + + @_request.post 'news_feeds_restore', params + + moveFeed: (feedId, folderId) -> ### moves a feed to a new folder @@ -319,10 +329,19 @@ $rootScope) -> routeParams: folderId: folderId - @_request.post 'news_folders_delete', params + restoreFolder: (folderId, onSuccess=null) -> + onSuccess or= -> + params = + onSuccess: onSuccess + routeParams: + folderId: folderId + + @_request.post 'news_folders_restore', params + + renameFolder: (folderId, folderName) -> ### Save if a folder was collapsed diff --git a/js/app/services/undoqueue.coffee b/js/app/services/undoqueue.coffee deleted file mode 100644 index 631013d13..000000000 --- a/js/app/services/undoqueue.coffee +++ /dev/null @@ -1,87 +0,0 @@ -### - -ownCloud - App Framework - -@author Bernhard Posselt -@copyright 2012 Bernhard Posselt nukeawhale@gmail.com - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -License as published by the Free Software Foundation; either -version 3 of the License, or any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU AFFERO GENERAL PUBLIC LICENSE for more details. - -You should have received a copy of the GNU Affero General Public -License along with this library. If not, see <http://www.gnu.org/licenses/>. - -### - -# A class which follows the command pattern -# Can be used for actions that need need to be able to undo like folder deletion -angular.module('News').factory 'UndoQueue', -['$timeout', '$rootScope', -($timeout, $rootScope) -> - - class UndoQueue - - constructor: (@_$timeout, @_$rootScope) -> - @_queue = [] - - - add: (@_caption, @_callback, @_timeout=0, @_undoCallback=null) -> - ### - @_caption the caption which indentifies the item - @_callback function the callback which should be executed when it was - not undone, this will usually be a request to the server to finally - delete something - @_timeout int the timeout after the callback should be executed - defaults to 0 - @_undoCallback function the function which should be executed when - an command has been canceled. Usually this will add back a deleted - object back to the interface, defaults to an empty function - ### - @executeAll() - - command = - _undoCallback: @_undoCallback or= -> - _callback: @_callback - execute: => - command._callback() - undo: => - command._undoCallback() - @_$timeout.cancel(command.promise) - @_queue = [] - promise: @_$timeout => - command.execute() - @_queue = [] - @_$rootScope.$broadcast('notUndone') - , @_timeout - - data = - undoCallback: command.undo - caption: @_caption - - @_$rootScope.$broadcast 'undoMessage', data - - @_queue.push(command) - - - executeAll: -> - ### - Executes the callback before the timeout has run out - This is useful to execute all remaining commands if a new command is - added - ### - for command in @_queue - @_$timeout.cancel(command.promise) - command.execute() - @_queue = [] - - - return new UndoQueue($timeout, $rootScope) - -]
\ No newline at end of file |