diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-05-15 03:00:53 +0200 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-05-15 03:00:53 +0200 |
commit | 3ce894af1e72c9488b8cb3340fd61656122f7d50 (patch) | |
tree | a603121e8b1e860201370399f8095121cd9c6bf7 /js/app/services/models/feedmodel.coffee | |
parent | 10d76fff64363ea59d916b550854cf3540dadfbc (diff) |
use markdown, refactor js
Diffstat (limited to 'js/app/services/models/feedmodel.coffee')
-rw-r--r-- | js/app/services/models/feedmodel.coffee | 174 |
1 files changed, 0 insertions, 174 deletions
diff --git a/js/app/services/models/feedmodel.coffee b/js/app/services/models/feedmodel.coffee deleted file mode 100644 index 66b7dfe9f..000000000 --- a/js/app/services/models/feedmodel.coffee +++ /dev/null @@ -1,174 +0,0 @@ -### - -ownCloud - News - -@author Bernhard Posselt -@copyright 2012 Bernhard Posselt dev@bernhard-posselt.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 'FeedModel', -['_Model', '_EqualQuery', 'Utils', -(_Model, _EqualQuery, Utils) -> - - class FeedModel extends _Model - - constructor: (@_utils) -> - @_url = {} - super() - - - clear: -> - @_url = {} - super() - - - add: (data, clearCache=true) -> - if data.faviconLink == null - data.faviconLink = 'url(' + - @_utils.imagePath('news', 'rss.svg') + ')' - else if angular.isDefined(data.faviconLink) and - data.faviconLink.indexOf('url(') != 0 - data.faviconLink = 'url(' + data.faviconLink + ')' - ### - We want to add a feed on the client side before - we have an id from the server. Once the server returns - an id, we have to update the existing item without id - ### - - item = @_url[data.url] - - # update in the following cases: - # * the id is defined and the item exists - # * the id is not defined and the name exists in the cache - updateById = angular.isDefined(data.id) and - angular.isDefined(@getById(data.id)) - - updateByUrl = angular.isDefined(item) and - angular.isUndefined(item.id) - - if updateById or updateByUrl - @update(data, clearCache) - else - if angular.isDefined(data.url) - # if the item is not yet in the name cache it must be added - @_url[data.url] = data - - # in case there is an id it can go through the normal add method - if angular.isDefined(data.id) - super(data, clearCache) - - # if there is no id we just want it to appear in the list - else - @_data.push(data) - if clearCache - @_invalidateCache() - - - update: (data, clearCache=true) -> - # only when the id on the updated item does not exist we wish - # to update by name, otherwise we always update by id - if angular.isDefined(data.url) - item = @_url[data.url] - - # update by name - if angular.isUndefined(data.id) and angular.isDefined(item) - angular.extend(item, data) - - else - # this case happens when there exists an element with the same - # name but it has no id yet - if angular.isDefined(data.id) and - angular.isDefined(item) and - angular.isUndefined(item.id) - item.id = data.id - @_dataMap[data.id] = item - - # if an update comes in and we update because of the id - # we need to fix the name cache if the name was changed - itemWithId = @getById(data.id) - if angular.isDefined(itemWithId) and - itemWithId.url != data.url - delete @_url[itemWithId.url] - @_url[data.url] = itemWithId - - super(data, clearCache) - - - removeById: (id) -> - item = @getById(id) - delete @_url[item.url] - super(id) - - - getByUrl: (url) -> - return @_url[url] - - - getUnreadCount: -> - count = 0 - for feed in @getAll() - count += feed.unreadCount - - return count - - - getFeedUnreadCount: (feedId) -> - feed = @getById(feedId) - count = 0 - if angular.isDefined(feed) - return count += feed.unreadCount - else - return 0 - - - getFolderUnreadCount: (folderId) -> - query = new _EqualQuery('folderId', parseInt(folderId)) - count = 0 - for feed in @get(query) - count += feed.unreadCount - - return count - - - getAllOfFolder: (folderId) -> - query = new _EqualQuery('folderId', parseInt(folderId)) - return @get(query) - - - removeByUrl: (url, clearCache=true) -> - ### - Remove an entry by id - ### - - # remove from data map - for key, value of @_dataMap - if @_dataMap[key].url == url - delete @_dataMap[key] - break - - for entry, counter in @_data - if entry.url == url - @_data.splice(counter, 1) - delete @_url[url] - - if clearCache - @_invalidateCache() - break - - - return new FeedModel(Utils) -]
\ No newline at end of file |