summaryrefslogtreecommitdiffstats
path: root/js/app/services/businesslayer
diff options
context:
space:
mode:
authorBernhard Posselt <nukeawhale@gmail.com>2013-05-09 12:57:35 +0200
committerBernhard Posselt <nukeawhale@gmail.com>2013-05-09 12:57:35 +0200
commitb8b4dfb4969e1baf84a14fb65a5dc153b0f5fae4 (patch)
tree27e211e26f442efd72a7f34903953ad57b1a9b76 /js/app/services/businesslayer
parentfe0de2ab84a88cb4c742f4f10fd43716934b7282 (diff)
only make one request for mark all read and mark folder read, fix #171, fix a bug that prevented readding of feeds when its folder was deleted, fix a bug that would not allow mark read for feeds when the app was started for the first time
Diffstat (limited to 'js/app/services/businesslayer')
-rw-r--r--js/app/services/businesslayer/feedbusinesslayer.coffee7
-rw-r--r--js/app/services/businesslayer/folderbusinesslayer.coffee29
-rw-r--r--js/app/services/businesslayer/subscriptionsbusinesslayer.coffee20
3 files changed, 37 insertions, 19 deletions
diff --git a/js/app/services/businesslayer/feedbusinesslayer.coffee b/js/app/services/businesslayer/feedbusinesslayer.coffee
index eb8d27de6..b2eb4f293 100644
--- a/js/app/services/businesslayer/feedbusinesslayer.coffee
+++ b/js/app/services/businesslayer/feedbusinesslayer.coffee
@@ -64,7 +64,7 @@ FeedModel, NewLoading, _ExistsError, Utils, $rootScope, UndoQueue, NewestItem)->
@_undoQueue.add(feed.title, callback, 10*1000, undoCallback)
- markFeedRead: (feedId) ->
+ markRead: (feedId) ->
feed = @_feedModel.getById(feedId)
newestItemId = @_newestItem.getId()
@@ -75,11 +75,6 @@ FeedModel, NewLoading, _ExistsError, Utils, $rootScope, UndoQueue, NewestItem)->
item.setRead()
- markAllRead: ->
- for feed in @_feedModel.getAll()
- @markFeedRead(feed.id)
-
-
getNumberOfFeeds: ->
return @_feedModel.size()
diff --git a/js/app/services/businesslayer/folderbusinesslayer.coffee b/js/app/services/businesslayer/folderbusinesslayer.coffee
index e35866f21..53b434154 100644
--- a/js/app/services/businesslayer/folderbusinesslayer.coffee
+++ b/js/app/services/businesslayer/folderbusinesslayer.coffee
@@ -24,15 +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',
+'UndoQueue', 'NewestItem', 'FeedModel',
(_BusinessLayer, FolderModel, FeedBusinessLayer, Persistence, FeedType,
-ActiveFeed, ItemModel, ShowAll, _ExistsError, OPMLParser, UndoQueue) ->
+ActiveFeed, ItemModel, ShowAll, _ExistsError, OPMLParser, UndoQueue,
+NewestItem, FeedModel) ->
class FolderBusinessLayer extends _BusinessLayer
constructor: (@_folderModel, @_feedBusinessLayer, @_showAll, activeFeed,
persistence, @_feedType, itemModel, @_opmlParser,
- @_undoQueue) ->
+ @_undoQueue, @_newestItem, @_feedModel) ->
super(activeFeed, persistence, itemModel, @_feedType.Folder)
@@ -41,12 +42,19 @@ ActiveFeed, ItemModel, ShowAll, _ExistsError, OPMLParser, UndoQueue) ->
delete: (folderId) ->
+ feeds = []
folder = @_folderModel.removeById(folderId)
+
+ # also delete feeds
+ for feed in @_feedBusinessLayer.getFeedsOfFolder(folderId)
+ feeds.push(@_feedModel.removeById(feed.id))
callback = =>
@_persistence.deleteFolder(folderId)
undoCallback = =>
@_folderModel.add(folder)
+ for feed in feeds
+ @_feedModel.create(feed)
@_undoQueue.add(folder.name, callback, 10*1000, undoCallback)
@@ -74,9 +82,16 @@ ActiveFeed, ItemModel, ShowAll, _ExistsError, OPMLParser, UndoQueue) ->
@_persistence.collapseFolder(folder.id)
- markFolderRead: (folderId) ->
- for feed in @_feedBusinessLayer.getFeedsOfFolder(folderId)
- @_feedBusinessLayer.markFeedRead(feed.id)
+ markRead: (folderId) ->
+ newestItemId = @_newestItem.getId()
+ folder = @_folderModel.getById(folderId)
+
+ if newestItemId != 0 and angular.isDefined(folder)
+ for feed in @_feedBusinessLayer.getFeedsOfFolder(folderId)
+ feed.unreadCount = 0
+ for item in @_itemModel.getAll()
+ item.setRead()
+ @_persistence.setFolderRead(folderId, newestItemId)
getUnreadCount: (folderId) ->
@@ -164,6 +179,6 @@ ActiveFeed, ItemModel, ShowAll, _ExistsError, OPMLParser, UndoQueue) ->
return new FolderBusinessLayer(FolderModel, FeedBusinessLayer, ShowAll,
ActiveFeed, Persistence, FeedType, ItemModel,
- OPMLParser, UndoQueue)
+ OPMLParser, UndoQueue, NewestItem, FeedModel)
] \ No newline at end of file
diff --git a/js/app/services/businesslayer/subscriptionsbusinesslayer.coffee b/js/app/services/businesslayer/subscriptionsbusinesslayer.coffee
index 23cedc955..8c0025946 100644
--- a/js/app/services/businesslayer/subscriptionsbusinesslayer.coffee
+++ b/js/app/services/businesslayer/subscriptionsbusinesslayer.coffee
@@ -23,14 +23,14 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
angular.module('News').factory 'SubscriptionsBusinessLayer',
['_BusinessLayer', 'FeedBusinessLayer', 'Persistence', 'ShowAll', 'ActiveFeed',
-'FeedType', 'ItemModel',
+'FeedType', 'ItemModel', 'FeedModel', 'NewestItem',
(_BusinessLayer, FeedBusinessLayer, Persistence, ShowAll, ActiveFeed, FeedType,
-ItemModel) ->
+ItemModel, FeedModel, NewestItem) ->
class SubscriptionsBusinessLayer extends _BusinessLayer
constructor: (@_feedBusinessLayer, @_showAll, feedType,
- persistence, activeFeed, itemModel) ->
+ persistence, activeFeed, itemModel, @_feedModel, @_newestItem) ->
super(activeFeed, persistence, itemModel, feedType.Subscriptions)
isVisible: ->
@@ -45,8 +45,15 @@ ItemModel) ->
return visible
- markAllRead: ->
- @_feedBusinessLayer.markAllRead()
+ markRead: ->
+ newestItemId = @_newestItem.getId()
+
+ if newestItemId != 0
+ for feed in @_feedModel.getAll()
+ feed.unreadCount = 0
+ for item in @_itemModel.getAll()
+ item.setRead()
+ @_persistence.setAllRead(newestItemId)
getUnreadCount: ->
@@ -54,5 +61,6 @@ ItemModel) ->
return new SubscriptionsBusinessLayer(FeedBusinessLayer, ShowAll, FeedType,
- Persistence, ActiveFeed, ItemModel)
+ Persistence, ActiveFeed, ItemModel,
+ FeedModel, NewestItem)
]