diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2013-03-18 11:49:26 +0100 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2013-03-18 11:49:26 +0100 |
commit | 8c5bf6f3173ce84c11cd1e0a77c30b71c3463d52 (patch) | |
tree | 77043acda22b45e6f0c1cd10a5246a30dbc6659c /js/app/services/persistence.coffee | |
parent | 2eec5da48cb0ac1833a92ab73eb5bff68e7c84f7 (diff) |
added rewritten js from appframwork-js branch
Diffstat (limited to 'js/app/services/persistence.coffee')
-rw-r--r-- | js/app/services/persistence.coffee | 298 |
1 files changed, 298 insertions, 0 deletions
diff --git a/js/app/services/persistence.coffee b/js/app/services/persistence.coffee new file mode 100644 index 000000000..26e547cd6 --- /dev/null +++ b/js/app/services/persistence.coffee @@ -0,0 +1,298 @@ +### + +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 '_Persistence', -> + + class Persistence + + constructor: (@_request, @_loading, @_config, @_activeFeed, + @_$rootScope) -> + + + init: -> + ### + Loads the initial data from the server + ### + @_loading.increase() + + # items can only be loaded after the active feed is known + @getActiveFeed => + @getItems @_activeFeed.getType(), @_activeFeed.getId(), null, => + @_loading.decrease() + + @getAllFolders(@_triggerHideRead) + @getAllFeeds(@_triggerHideRead) + @userSettingsRead(@_triggerHideRead) + @getStarredItems(@_triggerHideRead) + + + ### + ITEM CONTROLLER + ### + getItems: (type, id, offset, onSuccess, updatedSince=null) -> + # TODO + if updatedSince != null + data = + updatedSince: updatedSince + type: type + id: id + else + data = + limit: @_config.itemBatchSize + offset: offset + id: id + type: type + + @_request.get 'news_items', {}, data, onSuccess + + + getItemById: (itemId) -> + url = + itemId: itemId + + @_request.get 'news_item', url + + + getStarredItems: (onSuccess) -> + @_request.get 'news_starred_items', {}, {}, onSuccess + + + starItem: (itemId) -> + ### + Stars an item + ### + url = + itemId: itemId + + @_request.post 'news_star_item', url + + + + unstarItem: (itemId) -> + ### + Unstars an item + ### + url = + itemId: itemId + + @_request.post 'news_unstar_item', url + + + readItem: (itemId) -> + ### + Sets an item as read + ### + url = + itemId: itemId + + @_request.post 'news_read_item', url + + + + unreadItem: (itemId) -> + ### + Sets an item as unread + ### + url = + itemId: itemId + + @_request.post 'news_unread_item', url + + + ### + FOLDER CONTROLLER + ### + getAllFolders: (callback) -> + callback or= angular.noop + @_request.get 'news_folders', {}, {}, callback + + + getFolderById: (folderId) -> + url = + folderId: folderId + @_request.get 'news_folder', url + + + openFolder: (folderId) -> + ### + Save if a folder was opened + ### + url = + folderId: folderId + + @_request.post 'news_open_folder', url + + + collapseFolder: (folderId) -> + ### + Save if a folder was collapsed + ### + url = + folderId: folderId + + @_request.post 'news_collapse_folder', url + + + createFolder: (folderName, parentFolderId=0, onSuccess=null, onError=null) -> + data = + folderName: folderName + parentFolderId: parentFolderId + onSuccess or= angular.noop + onError or= angular.noop + + @_request.post 'news_create_folder', {}, data, onSuccess, onError + + + deleteFolder: (folderId) -> + ### + Save if a folder was collapsed + ### + url = + folderId: folderId + + @_request.post 'news_delete_folder', url + + + renameFolder: (folderId, folderName) -> + ### + Save if a folder was collapsed + ### + url = + folderId: folderId + + data = + folderName: folderName + + @_request.post 'news_rename_folder', url, data + + + ### + FEED CONTROLLER + ### + getAllFeeds: (callback) -> + callback or= angular.noop + + @_request.get 'news_feeds', {}, {}, callback + + + getFeedById: (feedId) -> + url = + feedId: feedId + + @_request.get 'news_feed', url + + + getActiveFeed: (onSuccess) -> + @_request.get 'news_active_feed', {}, {}, onSuccess + + + createFeed: (url, parentFolderId, onSuccess, onError) -> + data = + parentFolderId: parentFolderId + url: url + + @_request.post 'news_create_feed', {}, data, onSuccess, onError + + + deleteFeed: (feedId) -> + url = + feedId: feedId + + @_request.post 'news_delete_feed', url + + + moveFeed: (feedId, folderId) -> + ### + moves a feed to a new folder + ### + url = + feedId: feedId + data = + folderId: folderId + + @_request.post 'news_move_feed', url, data + + + setFeedRead: (feedId, highestItemId) -> + ### + sets all items of a feed as read + ### + url = + feedId: feedId + data = + highestItemId: highestItemId + + @_request.post 'news_set_feed_read', url, data + + + updateFeed: (feedId) -> + ### + moves a feed to a new folder + ### + url = + feedId: feedId + + @_request.post 'news_update_feed', url + + + ### + EXPORT CONTROLLER + ### + exportOPML: -> + ### + Prompts for an OPML download + ### + @_request.get 'news_export_opml' + + + ### + USERSETTINGS CONTROLLER + ### + userSettingsRead: (callback=null) -> + ### + Gets the configs for read settings + ### + callback or= angular.noop + @_request.get 'news_user_settings_read', {}, {}, callback + + + userSettingsReadShow: -> + ### + Sets the reader mode to show all + ### + @_request.post 'news_user_settings_read_show' + + + userSettingsReadHide: -> + ### + Sets the reader mode to show only unread + ### + @_request.post 'news_user_settings_read_hide' + + + _trigerHideRead: -> + @_$rootScope.$broadcast('triggerHideRead') + + + return Persistence + |