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
]
|