summaryrefslogtreecommitdiffstats
path: root/js
diff options
context:
space:
mode:
authorBernhard Posselt <nukeawhale@gmail.com>2013-05-09 14:03:37 +0200
committerBernhard Posselt <nukeawhale@gmail.com>2013-05-09 14:03:37 +0200
commit019b286b8e997bea3fb6a0555c91c565ca2d684f (patch)
treed162de276a9571f89f29fc0691258f38571edff8 /js
parent59069e85a26dd72bb1798e0ee517d607f6021443 (diff)
Fix a bug that would mark the items on the right side as read regardless of feed or folder id
Diffstat (limited to 'js')
-rw-r--r--js/app/services/businesslayer/feedbusinesslayer.coffee5
-rw-r--r--js/app/services/businesslayer/folderbusinesslayer.coffee8
-rw-r--r--js/public/app.js22
-rw-r--r--js/tests/services/businesslayer/feedbusinesslayerSpec.coffee18
-rw-r--r--js/tests/services/businesslayer/folderbusinesslayerSpec.coffee22
-rw-r--r--js/tests/services/businesslayer/subsriptionsbusinesslayerSpec.coffee5
6 files changed, 58 insertions, 22 deletions
diff --git a/js/app/services/businesslayer/feedbusinesslayer.coffee b/js/app/services/businesslayer/feedbusinesslayer.coffee
index b2eb4f293..8dc1c126a 100644
--- a/js/app/services/businesslayer/feedbusinesslayer.coffee
+++ b/js/app/services/businesslayer/feedbusinesslayer.coffee
@@ -70,9 +70,10 @@ FeedModel, NewLoading, _ExistsError, Utils, $rootScope, UndoQueue, NewestItem)->
if angular.isDefined(feed) and newestItemId != 0
feed.unreadCount = 0
- @_persistence.setFeedRead(feedId, newestItemId)
for item in @_itemModel.getAll()
- item.setRead()
+ if item.feedId == feed.id
+ item.setRead()
+ @_persistence.setFeedRead(feedId, newestItemId)
getNumberOfFeeds: ->
diff --git a/js/app/services/businesslayer/folderbusinesslayer.coffee b/js/app/services/businesslayer/folderbusinesslayer.coffee
index 57f932a77..39c307c96 100644
--- a/js/app/services/businesslayer/folderbusinesslayer.coffee
+++ b/js/app/services/businesslayer/folderbusinesslayer.coffee
@@ -89,8 +89,12 @@ NewestItem, FeedModel) ->
if newestItemId != 0 and angular.isDefined(folder)
for feed in @_feedBusinessLayer.getFeedsOfFolder(folderId)
feed.unreadCount = 0
- for item in @_itemModel.getAll()
- item.setRead()
+
+ # also set items in feeds as read
+ for item in @_itemModel.getAll()
+ if item.feedId == feed.id
+ item.setRead()
+
@_persistence.setFolderRead(folderId, newestItemId)
diff --git a/js/public/app.js b/js/public/app.js
index a5d11958b..8329f90f6 100644
--- a/js/public/app.js
+++ b/js/public/app.js
@@ -860,20 +860,20 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
};
FeedBusinessLayer.prototype.markRead = function(feedId) {
- var feed, item, newestItemId, _i, _len, _ref, _results;
+ var feed, item, newestItemId, _i, _len, _ref;
feed = this._feedModel.getById(feedId);
newestItemId = this._newestItem.getId();
if (angular.isDefined(feed) && newestItemId !== 0) {
feed.unreadCount = 0;
- this._persistence.setFeedRead(feedId, newestItemId);
_ref = this._itemModel.getAll();
- _results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
item = _ref[_i];
- _results.push(item.setRead());
+ if (item.feedId === feed.id) {
+ item.setRead();
+ }
}
- return _results;
+ return this._persistence.setFeedRead(feedId, newestItemId);
}
};
@@ -1139,11 +1139,13 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
feed = _ref[_i];
feed.unreadCount = 0;
- }
- _ref1 = this._itemModel.getAll();
- for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
- item = _ref1[_j];
- item.setRead();
+ _ref1 = this._itemModel.getAll();
+ for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
+ item = _ref1[_j];
+ if (item.feedId === feed.id) {
+ item.setRead();
+ }
+ }
}
return this._persistence.setFolderRead(folderId, newestItemId);
}
diff --git a/js/tests/services/businesslayer/feedbusinesslayerSpec.coffee b/js/tests/services/businesslayer/feedbusinesslayerSpec.coffee
index a41426922..42cab53b1 100644
--- a/js/tests/services/businesslayer/feedbusinesslayerSpec.coffee
+++ b/js/tests/services/businesslayer/feedbusinesslayerSpec.coffee
@@ -94,6 +94,7 @@ describe 'FeedBusinessLayer', ->
it 'should not mark feed read when no highest item id', =>
+ @FeedModel.add({id: 5, unreadCount:2, folderId: 2, url: 'a1'})
@persistence.setFeedRead = jasmine.createSpy('setFeedRead')
@FeedBusinessLayer.markRead(5)
expect(@persistence.setFeedRead).not.toHaveBeenCalled()
@@ -103,17 +104,22 @@ describe 'FeedBusinessLayer', ->
@NewestItem.handle(25)
@ActiveFeed.handle({type: @FeedType.Feed, id: 5})
@persistence.setFeedRead = jasmine.createSpy('setFeedRead')
+
@FeedModel.add({id: 5, unreadCount:2, folderId: 2, url: 'a1'})
- @ItemModel.add({id: 6, feedId: 5, guidHash: 'a1'})
- @ItemModel.add({id: 3, feedId: 5, guidHash: 'a2'})
- @ItemModel.add({id: 2, feedId: 5, guidHash: 'a3'})
+
+ item1 = {id: 3, feedId: 5, guidHash: 'a3', status: 0}
+ @ItemModel.add(item1)
+ item1.setUnread()
+ item2 = {id: 2, feedId: 3, guidHash: 'a3', status: 0}
+ @ItemModel.add(item2)
+ item2.setUnread()
+
@FeedBusinessLayer.markRead(5)
expect(@persistence.setFeedRead).toHaveBeenCalledWith(5, 25)
expect(@FeedModel.getById(5).unreadCount).toBe(0)
- expect(@ItemModel.getById(6).isRead()).toBeTruthy()
- expect(@ItemModel.getById(3).isRead()).toBeTruthy()
- expect(@ItemModel.getById(2).isRead()).toBeTruthy()
+ expect(item1.isRead()).toBe(true)
+ expect(item2.isRead()).toBe(false)
it 'should get the correct unread count for subscribtions', =>
diff --git a/js/tests/services/businesslayer/folderbusinesslayerSpec.coffee b/js/tests/services/businesslayer/folderbusinesslayerSpec.coffee
index 4d23d5b8d..c0ea2aedb 100644
--- a/js/tests/services/businesslayer/folderbusinesslayerSpec.coffee
+++ b/js/tests/services/businesslayer/folderbusinesslayerSpec.coffee
@@ -40,7 +40,7 @@ describe 'FolderBusinessLayer', ->
beforeEach inject (@FolderBusinessLayer, @FolderModel, @FeedModel, @ShowAll,
@ActiveFeed, @FeedType, @_ExistsError, @$timeout,
- @NewestItem) =>
+ @NewestItem, @ItemModel) =>
@ShowAll.setShowAll(false)
@ActiveFeed.handle({type: @FeedType.Feed, id:0})
@@ -88,9 +88,17 @@ describe 'FolderBusinessLayer', ->
it 'should mark folder as read', =>
@NewestItem.handle(25)
- @FolderModel.add({id: 3, opened: false, name: 'ho'})
@persistence.setFolderRead = jasmine.createSpy('setFeedRead')
+
+ item1 = {id: 3, feedId: 5, guidHash: 'a3', status: 0}
+ @ItemModel.add(item1)
+ item1.setUnread()
+ item2 = {id: 2, feedId: 3, guidHash: 'a3', status: 0}
+ @ItemModel.add(item2)
+ item2.setUnread()
+
+ @FolderModel.add({id: 3, opened: false, name: 'ho'})
@FeedModel.add({id: 3, unreadCount:134, folderId: 3, url: 'a1'})
@FeedModel.add({id: 5, unreadCount:2, folderId: 2, url: 'a2'})
@FeedModel.add({id: 1, unreadCount:12, folderId: 3, url: 'a3'})
@@ -101,9 +109,19 @@ describe 'FolderBusinessLayer', ->
expect(@FeedModel.getById(1).unreadCount).toBe(0)
expect(@FeedModel.getById(5).unreadCount).toBe(2)
+ expect(item1.isRead()).toBe(false)
+ expect(item2.isRead()).toBe(true)
+
expect(@persistence.setFolderRead).toHaveBeenCalledWith(3, 25)
+ it 'should not mark folder read when no highest item id', =>
+ @FolderModel.add({id: 5, opened: false, name: 'ho'})
+ @persistence.setFolderRead = jasmine.createSpy('setFolderRead')
+ @FolderBusinessLayer.markRead(5)
+ expect(@persistence.setFolderRead).not.toHaveBeenCalled()
+
+
it 'should get the correct unread count', =>
@FeedModel.add({id: 5, unreadCount:2, folderId: 2, url: 'a1'})
@FeedModel.add({id: 6, unreadCount:3, folderId: 3, url: 'a2'})
diff --git a/js/tests/services/businesslayer/subsriptionsbusinesslayerSpec.coffee b/js/tests/services/businesslayer/subsriptionsbusinesslayerSpec.coffee
index 9e3437b3c..26698ae3c 100644
--- a/js/tests/services/businesslayer/subsriptionsbusinesslayerSpec.coffee
+++ b/js/tests/services/businesslayer/subsriptionsbusinesslayerSpec.coffee
@@ -83,6 +83,11 @@ describe 'SubscriptionsBusinessLayer', ->
expect(@persistence.setAllRead).toHaveBeenCalledWith(25)
+ it 'should not mark all read when no highest item id', =>
+ @persistence.setAllRead = jasmine.createSpy('setAllRead')
+ @SubscriptionsBusinessLayer.markRead()
+ expect(@persistence.setAllRead).not.toHaveBeenCalled()
+
it 'should get the correct unread count', =>
@FeedModel.add({id: 3, unreadCount: 132, url: 'hoho'})
@FeedModel.add({id: 4, unreadCount: 12, url: 'hohod'})