diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2013-04-05 23:53:56 +0200 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2013-04-05 23:53:56 +0200 |
commit | 4b169b4561dd752cfe717e17a66bc3cf61f7627d (patch) | |
tree | c86aa0a46dce64dc563199c932c6c68b81d76e8d /js | |
parent | 7f2cc571f6f4c5e96ab2b79f359958eceea0acbc (diff) |
dont allow setting read and unread if it doesnt change the status
Diffstat (limited to 'js')
-rw-r--r-- | js/app/services/bl/itembl.coffee | 22 | ||||
-rw-r--r-- | js/public/app.js | 24 | ||||
-rw-r--r-- | js/tests/services/bl/itemblSpec.coffee | 24 |
3 files changed, 50 insertions, 20 deletions
diff --git a/js/app/services/bl/itembl.coffee b/js/app/services/bl/itembl.coffee index eb50b8d55..6a09400af 100644 --- a/js/app/services/bl/itembl.coffee +++ b/js/app/services/bl/itembl.coffee @@ -70,23 +70,25 @@ angular.module('News').factory 'ItemBl', setRead: (itemId) -> item = @_itemModel.getById(itemId) if angular.isDefined(item) - item.setRead() - @_persistence.readItem(itemId) + if not item.isRead() + item.setRead() + @_persistence.readItem(itemId) - feed = @_feedModel.getById(item.feedId) - if angular.isDefined(feed) - feed.unreadCount -= 1 + feed = @_feedModel.getById(item.feedId) + if angular.isDefined(feed) + feed.unreadCount -= 1 setUnread: (itemId) -> item = @_itemModel.getById(itemId) if angular.isDefined(item) - item.setUnread() - @_persistence.unreadItem(itemId) + if item.isRead() + item.setUnread() + @_persistence.unreadItem(itemId) - feed = @_feedModel.getById(item.feedId) - if angular.isDefined(feed) - feed.unreadCount += 1 + feed = @_feedModel.getById(item.feedId) + if angular.isDefined(feed) + feed.unreadCount += 1 getFeedTitle: (itemId) -> diff --git a/js/public/app.js b/js/public/app.js index e393af255..f4f2b41cb 100644 --- a/js/public/app.js +++ b/js/public/app.js @@ -875,11 +875,13 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. var feed, item; item = this._itemModel.getById(itemId); if (angular.isDefined(item)) { - item.setRead(); - this._persistence.readItem(itemId); - feed = this._feedModel.getById(item.feedId); - if (angular.isDefined(feed)) { - return feed.unreadCount -= 1; + if (!item.isRead()) { + item.setRead(); + this._persistence.readItem(itemId); + feed = this._feedModel.getById(item.feedId); + if (angular.isDefined(feed)) { + return feed.unreadCount -= 1; + } } } }; @@ -888,11 +890,13 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. var feed, item; item = this._itemModel.getById(itemId); if (angular.isDefined(item)) { - item.setUnread(); - this._persistence.unreadItem(itemId); - feed = this._feedModel.getById(item.feedId); - if (angular.isDefined(feed)) { - return feed.unreadCount += 1; + if (item.isRead()) { + item.setUnread(); + this._persistence.unreadItem(itemId); + feed = this._feedModel.getById(item.feedId); + if (angular.isDefined(feed)) { + return feed.unreadCount += 1; + } } } }; diff --git a/js/tests/services/bl/itemblSpec.coffee b/js/tests/services/bl/itemblSpec.coffee index cbaef5488..4c2a5d660 100644 --- a/js/tests/services/bl/itemblSpec.coffee +++ b/js/tests/services/bl/itemblSpec.coffee @@ -117,6 +117,17 @@ describe 'ItemBl', -> expect(@persistence.readItem).toHaveBeenCalledWith(2) + it 'should no set an item read if its already read', => + @persistence.readItem = jasmine.createSpy('read item') + + item = {id: 2, feedId: 5, guidHash: 'a3', status: 0} + @ItemModel.add(item) + item.setRead() + + @ItemBl.setRead(2) + expect(@persistence.readItem).not.toHaveBeenCalled() + + it 'should return false when item kept unread does not exist', => expect(@ItemBl.isKeptUnread(2)).toBe(false) @@ -156,6 +167,19 @@ describe 'ItemBl', -> expect(@persistence.unreadItem).toHaveBeenCalledWith(2) + it 'should not set an item as unread if its unread', => + @persistence.unreadItem = jasmine.createSpy('unread item') + + item = {id: 2, feedId: 5, guidHash: 'a3', status: 0} + @ItemModel.add(item) + item.setUnread() + + @ItemBl.setUnread(2) + + expect(item.isRead()).toBe(false) + expect(@persistence.unreadItem).not.toHaveBeenCalled() + + it 'should set item as unread if kept unread is toggled and it is read', => @persistence.unreadItem = jasmine.createSpy('unread item') |