summaryrefslogtreecommitdiffstats
path: root/js/app/services/bl/itembl.coffee
blob: 6a09400af415ad07f283f0b6f967005838b42e2a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
###

ownCloud - News

@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/>.

###


angular.module('News').factory 'ItemBl',
['ItemModel', 'FeedModel', 'Persistence', 'ActiveFeed', 'FeedType', 'StarredBl',
(ItemModel, FeedModel, Persistence, ActiveFeed, FeedType, StarredBl) ->

	class ItemBl

		constructor: (@_itemModel, @_feedModel, @_persistence, @_activeFeed,
		              @_feedType, @_starredBl) ->

		getAll: ->
			return @_itemModel.getAll()


		noFeedActive: ->
			return @_activeFeed.getType() != @_feedType.Feed


		isKeptUnread: (itemId) ->
			item = @_itemModel.getById(itemId)
			if angular.isDefined(item) and angular.isDefined(item.keptUnread)
				return item.keptUnread
			return false


		toggleKeepUnread: (itemId) ->
			item = @_itemModel.getById(itemId)
			if angular.isDefined(item) and not item.keptUnread
				item.keptUnread = true
				if item.isRead()
					@setUnread(itemId)
			else
				item.keptUnread = false


		toggleStarred: (itemId) ->
			item = @_itemModel.getById(itemId)
			if item.isStarred()
				item.setUnstarred()
				@_starredBl.decreaseCount()
				@_persistence.unstarItem(item.feedId, item.guidHash)
			else
				item.setStarred()
				@_starredBl.increaseCount()
				@_persistence.starItem(item.feedId, item.guidHash)


		setRead: (itemId) ->
			item = @_itemModel.getById(itemId)
			if angular.isDefined(item)
				if not item.isRead()
					item.setRead()
					@_persistence.readItem(itemId)

					feed = @_feedModel.getById(item.feedId)
					if angular.isDefined(feed)
						feed.unreadCount -= 1


		setUnread: (itemId) ->
			item = @_itemModel.getById(itemId)
			if angular.isDefined(item)
				if item.isRead()
					item.setUnread()
					@_persistence.unreadItem(itemId)

					feed = @_feedModel.getById(item.feedId)
					if angular.isDefined(feed)
						feed.unreadCount += 1


		getFeedTitle: (itemId) ->
			item = @_itemModel.getById(itemId)
			if angular.isDefined(item)
				feed = @_feedModel.getById(item.feedId)
				if angular.isDefined(feed)
					return feed.title


		loadNext: ->



		loadNew: ->



	return new ItemBl(ItemModel, FeedModel, Persistence, ActiveFeed, FeedType,
	                  StarredBl)

]