summaryrefslogtreecommitdiffstats
path: root/coffee/services/itemmodel.coffee
blob: e7b87f9ec228c6c2e9ebebac8aab944a1d16ef1f (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
###
# ownCloud - News app
#
# @author Bernhard Posselt
# Copyright (c) 2012 - Bernhard Posselt <nukeawhale@gmail.com>
#
# This file is licensed under the Affero General Public License version 3 or later.
# See the COPYING-README file
#
###

angular.module('News').factory '_ItemModel', ['Model', (Model) ->

	class ItemModel extends Model

		constructor: (@cache, @feedType) ->
			super()			


		clearCache: () ->
			@cache.clear()
			super()


		add: (item) ->
			item = @bindAdditional(item)
			if super(item)
				@cache.add(@getItemById(item.id))			


		bindAdditional: (item) ->
			item.getRelativeDate = ->
				return moment.unix(this.date).fromNow();
			
			item.getAuthorLine = ->
				if this.author != null and this.author.trim() != ""
					return "by " + this.author
				else
					return ""
			return item


		removeById: (itemId) ->
			item = @getItemById(itemId)
			if item != undefined
				@cache.remove(item)
				super(itemId)

			
		getHighestId: (type, id) ->
			@cache.getHighestId(type, id)


		getHighestTimestamp: (type, id) ->
			@cache.getHighestTimestamp(type, id)			


		getLowestId: (type, id) ->
			@cache.getLowestId(type, id)
			

		getLowestTimestamp: (type, id) ->
			@cache.getLowestTimestamp(type, id)


		getFeedsOfFolderId: (id) ->
			@cache.getFeedsOfFolderId(id)


		getItemsByTypeAndId: (type, id) ->
			switch type
				when @feedType.Feed
					items = @cache.getItemsOfFeed(id) || []
					return items

				when @feedType.Subscriptions
					return @getItems()

				when @feedType.Folder
					items = []
					for feedId in @cache.getFeedIdsOfFolder(id)
						items = items.concat(@cache.getItemsOfFeed(feedId) || [])
					return items
				
				when @feedType.Starred
					return @cache.getImportantItems()


		setImportant: (itemId, isImportant) ->
			item = @getItemById(itemId)
			@cache.setImportant(item, isImportant)
			item.isImportant = isImportant


	return ItemModel

]