From 5fbcf7441c0ce9c053e056fa93fcd07405f9eaf3 Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Wed, 10 Sep 2014 01:26:12 +0200 Subject: update traceur runtime --- js/Gruntfile.js | 2 +- js/bower.json | 2 +- js/build/app.js | 2702 +++++++++++----------- js/build/app.min.js | 2 +- js/directive/NewsAutoFocus.js | 2 - js/gui/KeyboardShortcuts.js | 10 +- js/package.json | 2 +- js/vendor/traceur-runtime/traceur-runtime.min.js | 2415 ++++++++++++++++++- 8 files changed, 3769 insertions(+), 1368 deletions(-) diff --git a/js/Gruntfile.js b/js/Gruntfile.js index 6ad6d7a1c..f2df36050 100644 --- a/js/Gruntfile.js +++ b/js/Gruntfile.js @@ -69,7 +69,7 @@ module.exports = function (grunt) { // is supported shell: { traceur: { - command: 'node_modules/traceur/traceur --modules inline --out build/app.js --experimental build/app.js ' + command: 'node_modules/traceur/traceur --block-binding true --out build/app.js --experimental --script build/app.js' } }, /*traceur: { diff --git a/js/bower.json b/js/bower.json index 3b0555c82..a069fe820 100644 --- a/js/bower.json +++ b/js/bower.json @@ -31,6 +31,6 @@ "angular-animate": "~1.3.*", "jquery": "~2.*", "momentjs": "~2.8.*", - "traceur-runtime": "~0.0.60" + "traceur-runtime": "~0.0.61" } } diff --git a/js/build/app.js b/js/build/app.js index f7c28b0b5..aea02b060 100644 --- a/js/build/app.js +++ b/js/build/app.js @@ -1,1424 +1,1420 @@ -var $__app__ = (function() { - "use strict"; - var __moduleName = "app"; - (function(window, document, angular, $, OC, csrfToken, undefined) { +(function(window, document, angular, $, OC, csrfToken, undefined) { + 'use strict'; + var app = angular.module('News', ['ngRoute', 'ngSanitize', 'ngAnimate']); + app.config(["$routeProvider", "$provide", "$httpProvider", function($routeProvider, $provide, $httpProvider) { 'use strict'; - var app = angular.module('News', ['ngRoute', 'ngSanitize', 'ngAnimate']); - app.config(["$routeProvider", "$provide", "$httpProvider", function($routeProvider, $provide, $httpProvider) { - 'use strict'; - var feedType = { - FEED: 0, - FOLDER: 1, - STARRED: 2, - SUBSCRIPTIONS: 3, - SHARED: 4 - }; - $provide.constant('REFRESH_RATE', 60); - $provide.constant('ITEM_BATCH_SIZE', 50); - $provide.constant('BASE_URL', OC.generateUrl('/apps/news')); - $provide.constant('FEED_TYPE', feedType); - $provide.factory('CSRFInterceptor', (["$q", "BASE_URL", function($q, BASE_URL) { - return {request: (function(config) { - if (config.url.indexOf(BASE_URL) === 0) { - config.headers.requesttoken = csrfToken; - } - return config || $q.when(config); - })}; - }])); - $httpProvider.interceptors.push('CSRFInterceptor'); - var getResolve = (function(type) { - return {data: ['$http', '$route', '$q', 'BASE_URL', 'ITEM_BATCH_SIZE', (function($http, $route, $q, BASE_URL, ITEM_BATCH_SIZE) { - var parameters = { - type: type, - limit: ITEM_BATCH_SIZE - }; - if ($route.current.params.id !== undefined) { - parameters.id = $route.current.params.id; - } - var deferred = $q.defer(); - $http({ - url: (BASE_URL + "/items"), - method: 'GET', - params: parameters - }).success((function(data) { - deferred.resolve(data); - })); - return deferred.promise; - })]}; - }); - $routeProvider.when('/items', { - controller: 'ContentController as Content', - templateUrl: 'content.html', - resolve: getResolve(feedType.SUBSCRIPTIONS), - type: feedType.SUBSCRIPTIONS - }).when('/items/starred', { - controller: 'ContentController as Content', - templateUrl: 'content.html', - resolve: getResolve(feedType.STARRED), - type: feedType.STARRED - }).when('/items/feeds/:id', { - controller: 'ContentController as Content', - templateUrl: 'content.html', - resolve: getResolve(feedType.FEED), - type: feedType.FEED - }).when('/items/folders/:id', { - controller: 'ContentController as Content', - templateUrl: 'content.html', - resolve: getResolve(feedType.FOLDER), - type: feedType.FOLDER - }); - }]); - app.run((["$rootScope", "$location", "$http", "$q", "$interval", "Loading", "ItemResource", "FeedResource", "FolderResource", "SettingsResource", "Publisher", "BASE_URL", "FEED_TYPE", "REFRESH_RATE", function($rootScope, $location, $http, $q, $interval, Loading, ItemResource, FeedResource, FolderResource, SettingsResource, Publisher, BASE_URL, FEED_TYPE, REFRESH_RATE) { - 'use strict'; - Loading.setLoading('global', true); - Publisher.subscribe(ItemResource).toChannels('items', 'newestItemId', 'starred'); - Publisher.subscribe(FolderResource).toChannels('folders'); - Publisher.subscribe(FeedResource).toChannels('feeds'); - Publisher.subscribe(SettingsResource).toChannels('settings'); - var settingsDeferred = $q.defer(); - $http.get((BASE_URL + "/settings")).success((function(data) { - Publisher.publishAll(data); - settingsDeferred.resolve(); - })); - var activeFeedDeferred = $q.defer(); - var path = $location.path(); - $http.get((BASE_URL + "/feeds/active")).success((function(data) { - var url; - switch (data.activeFeed.type) { - case FEED_TYPE.FEED: - url = ("/items/feeds/" + data.activeFeed.id); - break; - case FEED_TYPE.FOLDER: - url = ("/items/folders/" + data.activeFeed.id); - break; - case FEED_TYPE.STARRED: - url = '/items/starred'; - break; - default: - url = '/items'; - } - if (!/^\/items(\/(starred|feeds\/\d+|folders\/\d+))?\/?$/.test(path)) { - $location.path(url); - } - activeFeedDeferred.resolve(); - })); - var folderDeferred = $q.defer(); - $http.get((BASE_URL + "/folders")).success((function(data) { - Publisher.publishAll(data); - folderDeferred.resolve(); - })); - var feedDeferred = $q.defer(); - $http.get((BASE_URL + "/feeds")).success((function(data) { - Publisher.publishAll(data); - feedDeferred.resolve(); - })); - $q.all([settingsDeferred.promise, activeFeedDeferred.promise, feedDeferred.promise, folderDeferred.promise]).then((function() { - Loading.setLoading('global', false); - })); - $interval((function() { - $http.get((BASE_URL + "/feeds")); - $http.get((BASE_URL + "/folders")); - }), REFRESH_RATE * 1000); - $rootScope.$on('$routeChangeStart', (function() { - Loading.setLoading('content', true); - })); - $rootScope.$on('$routeChangeSuccess', (function() { - Loading.setLoading('content', false); - })); - $rootScope.$on('$routeChangeError', (function() { - $location.path('/items'); - })); + var feedType = { + FEED: 0, + FOLDER: 1, + STARRED: 2, + SUBSCRIPTIONS: 3, + SHARED: 4 + }; + $provide.constant('REFRESH_RATE', 60); + $provide.constant('ITEM_BATCH_SIZE', 50); + $provide.constant('BASE_URL', OC.generateUrl('/apps/news')); + $provide.constant('FEED_TYPE', feedType); + $provide.factory('CSRFInterceptor', (["$q", "BASE_URL", function($q, BASE_URL) { + return {request: (function(config) { + if (config.url.indexOf(BASE_URL) === 0) { + config.headers.requesttoken = csrfToken; + } + return config || $q.when(config); + })}; }])); - app.controller('AppController', ["Loading", "FeedResource", "FolderResource", function(Loading, FeedResource, FolderResource) { - 'use strict'; - this.loading = Loading; - this.isFirstRun = (function() { - return FeedResource.size() === 0 && FolderResource.size() === 0; - }); - }]); - app.controller('ContentController', ["Publisher", "FeedResource", "ItemResource", "SettingsResource", "data", "$route", "$routeParams", function(Publisher, FeedResource, ItemResource, SettingsResource, data, $route, $routeParams) { - 'use strict'; - var $__0 = this; - ItemResource.clear(); + $httpProvider.interceptors.push('CSRFInterceptor'); + var getResolve = (function(type) { + return {data: ['$http', '$route', '$q', 'BASE_URL', 'ITEM_BATCH_SIZE', (function($http, $route, $q, BASE_URL, ITEM_BATCH_SIZE) { + var parameters = { + type: type, + limit: ITEM_BATCH_SIZE + }; + if ($route.current.params.id !== undefined) { + parameters.id = $route.current.params.id; + } + var deferred = $q.defer(); + $http({ + url: (BASE_URL + "/items"), + method: 'GET', + params: parameters + }).success((function(data) { + deferred.resolve(data); + })); + return deferred.promise; + })]}; + }); + $routeProvider.when('/items', { + controller: 'ContentController as Content', + templateUrl: 'content.html', + resolve: getResolve(feedType.SUBSCRIPTIONS), + type: feedType.SUBSCRIPTIONS + }).when('/items/starred', { + controller: 'ContentController as Content', + templateUrl: 'content.html', + resolve: getResolve(feedType.STARRED), + type: feedType.STARRED + }).when('/items/feeds/:id', { + controller: 'ContentController as Content', + templateUrl: 'content.html', + resolve: getResolve(feedType.FEED), + type: feedType.FEED + }).when('/items/folders/:id', { + controller: 'ContentController as Content', + templateUrl: 'content.html', + resolve: getResolve(feedType.FOLDER), + type: feedType.FOLDER + }); + }]); + app.run((["$rootScope", "$location", "$http", "$q", "$interval", "Loading", "ItemResource", "FeedResource", "FolderResource", "SettingsResource", "Publisher", "BASE_URL", "FEED_TYPE", "REFRESH_RATE", function($rootScope, $location, $http, $q, $interval, Loading, ItemResource, FeedResource, FolderResource, SettingsResource, Publisher, BASE_URL, FEED_TYPE, REFRESH_RATE) { + 'use strict'; + Loading.setLoading('global', true); + Publisher.subscribe(ItemResource).toChannels('items', 'newestItemId', 'starred'); + Publisher.subscribe(FolderResource).toChannels('folders'); + Publisher.subscribe(FeedResource).toChannels('feeds'); + Publisher.subscribe(SettingsResource).toChannels('settings'); + var settingsDeferred = $q.defer(); + $http.get((BASE_URL + "/settings")).success((function(data) { Publisher.publishAll(data); - this.isAutoPagingEnabled = true; - this.getItems = (function() { - return ItemResource.getAll(); - }); - this.toggleStar = (function(itemId) { - ItemResource.toggleStar(itemId); - }); - this.toggleItem = (function(item) { - if ($__0.isCompactView()) { - item.show = !item.show; + settingsDeferred.resolve(); + })); + var activeFeedDeferred = $q.defer(); + var path = $location.path(); + $http.get((BASE_URL + "/feeds/active")).success((function(data) { + var url; + switch (data.activeFeed.type) { + case FEED_TYPE.FEED: + url = ("/items/feeds/" + data.activeFeed.id); + break; + case FEED_TYPE.FOLDER: + url = ("/items/folders/" + data.activeFeed.id); + break; + case FEED_TYPE.STARRED: + url = '/items/starred'; + break; + default: + url = '/items'; + } + if (!/^\/items(\/(starred|feeds\/\d+|folders\/\d+))?\/?$/.test(path)) { + $location.path(url); + } + activeFeedDeferred.resolve(); + })); + var folderDeferred = $q.defer(); + $http.get((BASE_URL + "/folders")).success((function(data) { + Publisher.publishAll(data); + folderDeferred.resolve(); + })); + var feedDeferred = $q.defer(); + $http.get((BASE_URL + "/feeds")).success((function(data) { + Publisher.publishAll(data); + feedDeferred.resolve(); + })); + $q.all([settingsDeferred.promise, activeFeedDeferred.promise, feedDeferred.promise, folderDeferred.promise]).then((function() { + Loading.setLoading('global', false); + })); + $interval((function() { + $http.get((BASE_URL + "/feeds")); + $http.get((BASE_URL + "/folders")); + }), REFRESH_RATE * 1000); + $rootScope.$on('$routeChangeStart', (function() { + Loading.setLoading('content', true); + })); + $rootScope.$on('$routeChangeSuccess', (function() { + Loading.setLoading('content', false); + })); + $rootScope.$on('$routeChangeError', (function() { + $location.path('/items'); + })); + }])); + app.controller('AppController', ["Loading", "FeedResource", "FolderResource", function(Loading, FeedResource, FolderResource) { + 'use strict'; + this.loading = Loading; + this.isFirstRun = (function() { + return FeedResource.size() === 0 && FolderResource.size() === 0; + }); + }]); + app.controller('ContentController', ["Publisher", "FeedResource", "ItemResource", "SettingsResource", "data", "$route", "$routeParams", function(Publisher, FeedResource, ItemResource, SettingsResource, data, $route, $routeParams) { + 'use strict'; + var $__0 = this; + ItemResource.clear(); + Publisher.publishAll(data); + this.isAutoPagingEnabled = true; + this.getItems = (function() { + return ItemResource.getAll(); + }); + this.toggleStar = (function(itemId) { + ItemResource.toggleStar(itemId); + }); + this.toggleItem = (function(item) { + if ($__0.isCompactView()) { + item.show = !item.show; + } + }); + this.markRead = (function(itemId) { + var item = ItemResource.get(itemId); + if (!item.keepUnread) { + ItemResource.markItemRead(itemId); + FeedResource.markItemOfFeedRead(item.feedId); + } + }); + this.getFeed = (function(feedId) { + return FeedResource.getById(feedId); + }); + this.toggleKeepUnread = (function(itemId) { + var item = ItemResource.get(itemId); + if (!item.unread) { + FeedResource.markItemOfFeedUnread(item.feedId); + ItemResource.markItemRead(itemId, false); + } + item.keepUnread = !item.keepUnread; + }); + this.orderBy = (function() { + if (SettingsResource.get('oldestFirst')) { + return '-id'; + } else { + return 'id'; + } + }); + this.isCompactView = (function() { + return SettingsResource.get('compact'); + }); + this.autoPagingEnabled = (function() { + return $__0.isAutoPagingEnabled; + }); + this.markReadEnabled = (function() { + return !SettingsResource.get('preventReadOnScroll'); + }); + this.scrollRead = (function(itemIds) { + var itemId$__9; + var item$__10; + var ids = []; + var feedIds = []; + for (var $__3 = itemIds[$traceurRuntime.toProperty(Symbol.iterator)](), + $__4; !($__4 = $__3.next()).done; ) { + itemId$__9 = $__4.value; + { + item$__10 = ItemResource.get(itemId$__9); + if (!item$__10.keepUnread) { + ids.push(itemId$__9); + feedIds.push(item$__10.feedId); + } } - }); - this.markRead = (function(itemId) { - var item = ItemResource.get(itemId); - if (!item.keepUnread) { - ItemResource.markItemRead(itemId); - FeedResource.markItemOfFeedRead(item.feedId); + } + FeedResource.markItemsOfFeedsRead(feedIds); + ItemResource.markItemsRead(ids); + }); + this.autoPage = (function() { + $__0.isAutoPagingEnabled = false; + var type = $route.current.$$route.type; + var id = $routeParams.id; + ItemResource.autoPage(type, id).success((function(data) { + Publisher.publishAll(data); + if (data.items.length > 0) { + $__0.isAutoPagingEnabled = true; } - }); - this.getFeed = (function(feedId) { - return FeedResource.getById(feedId); - }); - this.toggleKeepUnread = (function(itemId) { - var item = ItemResource.get(itemId); - if (!item.unread) { - FeedResource.markItemOfFeedUnread(item.feedId); - ItemResource.markItemRead(itemId, false); + })).error((function() { + $__0.isAutoPagingEnabled = true; + })); + }); + this.getRelativeDate = (function(timestamp) { + var languageCode$__11; + var date$__12; + if (timestamp !== undefined && timestamp !== '') { + languageCode$__11 = SettingsResource.get('language'); + date$__12 = moment.unix(timestamp).locale(languageCode$__11).fromNow() + ''; + return date$__12; + } else { + return ''; + } + }); + }]); + app.controller('NavigationController', ["$route", "FEED_TYPE", "FeedResource", "FolderResource", "ItemResource", "SettingsResource", function($route, FEED_TYPE, FeedResource, FolderResource, ItemResource, SettingsResource) { + 'use strict'; + var $__0 = this; + this.feedError = ''; + this.folderError = ''; + this.getFeeds = (function() { + return FeedResource.getAll(); + }); + this.getFolders = (function() { + return FolderResource.getAll(); + }); + this.markFolderRead = (function(folderId) { + var feed$__13; + FeedResource.markFolderRead(folderId); + for (var $__3 = FeedResource.getByFolderId(folderId)[$traceurRuntime.toProperty(Symbol.iterator)](), + $__4; !($__4 = $__3.next()).done; ) { + feed$__13 = $__4.value; + { + ItemResource.markFeedRead(feed$__13.id); } - item.keepUnread = !item.keepUnread; - }); - this.orderBy = (function() { - if (SettingsResource.get('oldestFirst')) { - return '-id'; - } else { - return 'id'; + } + }); + this.markFeedRead = (function(feedId) { + ItemResource.markFeedRead(feedId); + FeedResource.markFeedRead(feedId); + }); + this.markRead = (function() { + ItemResource.markRead(); + FeedResource.markRead(); + }); + this.isShowAll = (function() { + return SettingsResource.get('showAll'); + }); + this.getFeedsOfFolder = (function(folderId) { + return FeedResource.getByFolderId(folderId); + }); + this.getUnreadCount = (function() { + return FeedResource.getUnreadCount(); + }); + this.getFeedUnreadCount = (function(feedId) { + return FeedResource.getById(feedId).unreadCount; + }); + this.getFolderUnreadCount = (function(folderId) { + return FeedResource.getFolderUnreadCount(folderId); + }); + this.getStarredCount = (function() { + return ItemResource.getStarredCount(); + }); + this.toggleFolder = (function(folderName) { + FolderResource.toggleOpen(folderName); + }); + this.hasFeeds = (function(folderId) { + return FeedResource.getFolderUnreadCount(folderId) !== undefined; + }); + this.subFeedActive = (function(folderId) { + var feed$__14; + var type = $route.current.$$route.type; + if (type === FEED_TYPE.FEED) { + feed$__14 = FeedResource.getById($route.current.params.id); + if (feed$__14.folderId === folderId) { + return true; } - }); - this.isCompactView = (function() { - return SettingsResource.get('compact'); - }); - this.autoPagingEnabled = (function() { - return $__0.isAutoPagingEnabled; - }); - this.markReadEnabled = (function() { - return !SettingsResource.get('preventReadOnScroll'); - }); - this.scrollRead = (function(itemIds) { - var itemId$__9; - var item$__10; - var ids = []; - var feedIds = []; - for (var $__3 = itemIds[$traceurRuntime.toProperty(Symbol.iterator)](), + } + return false; + }); + this.isSubscriptionsActive = (function() { + return $route.current && $route.current.$$route.type === FEED_TYPE.SUBSCRIPTIONS; + }); + this.isStarredActive = (function() { + return $route.current && $route.current.$$route.type === FEED_TYPE.STARRED; + }); + this.isFolderActive = (function(folderId) { + var currentId = parseInt($route.current.params.id, 10); + return $route.current && $route.current.$$route.type === FEED_TYPE.FOLDER && currentId === folderId; + }); + this.isFeedActive = (function(feedId) { + var currentId = parseInt($route.current.params.id, 10); + return $route.current && $route.current.$$route.type === FEED_TYPE.FEED && currentId === feedId; + }); + this.folderNameExists = (function(folderName) { + return FolderResource.get(folderName) !== undefined; + }); + this.isAddingFolder = (function() { + return true; + }); + this.createFolder = (function(folder) { + console.log(folder.name); + folder.name = ''; + }); + this.createFeed = (function(feed) { + $__0.newFolder = false; + console.log(feed.url + feed.folder); + feed.url = ''; + }); + this.renameFeed = (function(feed) { + feed.editing = false; + }); + this.renameFolder = (function() { + console.log('TBD'); + }); + this.deleteFeed = (function(feed) { + feed.deleted = true; + }); + this.undeleteFeed = (function(feed) { + feed.deleted = false; + }); + this.removeFeed = (function(feed) { + console.log('remove ' + feed); + }); + this.deleteFolder = (function(folderName) { + console.log(folderName); + }); + this.moveFeed = (function(feedId, folderId) { + console.log(feedId + folderId); + }); + }]); + app.controller('SettingsController', ["$route", "SettingsResource", "FeedResource", function($route, SettingsResource, FeedResource) { + 'use strict'; + var $__0 = this; + this.importing = false; + this.opmlImportError = false; + this.articleImportError = false; + var set = (function(key, value) { + SettingsResource.set(key, value); + if (['showAll', 'oldestFirst'].indexOf(key) >= 0) { + $route.reload(); + } + }); + this.toggleSetting = (function(key) { + set(key, !$__0.getSetting(key)); + }); + this.getSetting = (function(key) { + return SettingsResource.get(key); + }); + this.feedSize = (function() { + return FeedResource.size(); + }); + this.importOpml = (function(content) { + console.log(content); + }); + this.importArticles = (function(content) { + console.log(content); + }); + }]); + app.filter('trustUrl', (["$sce", function($sce) { + 'use strict'; + return (function(url) { + return $sce.trustAsResourceUrl(url); + }); + }])); + app.filter('unreadCountFormatter', (function() { + 'use strict'; + return (function(unreadCount) { + if (unreadCount > 999) { + return '999+'; + } + return unreadCount; + }); + })); + app.factory('FeedResource', (["Resource", "$http", "BASE_URL", function(Resource, $http, BASE_URL) { + 'use strict'; + var FeedResource = function FeedResource($http, BASE_URL) { + $traceurRuntime.superCall(this, $FeedResource.prototype, "constructor", [$http, BASE_URL, 'url']); + this.ids = {}; + this.unreadCount = 0; + this.folderUnreadCount = {}; + this.folderIds = {}; + this.deleted = null; + }; + var $FeedResource = FeedResource; + ($traceurRuntime.createClass)(FeedResource, { + receive: function(data) { + $traceurRuntime.superCall(this, $FeedResource.prototype, "receive", [data]); + this.updateUnreadCache(); + this.updateFolderCache(); + }, + updateUnreadCache: function() { + var $__57, + $__58, + $__59, + $__60, + $__61; + var value$__15; + this.unreadCount = 0; + this.folderUnreadCount = {}; + for (var $__3 = this.values[$traceurRuntime.toProperty(Symbol.iterator)](), $__4; !($__4 = $__3.next()).done; ) { - itemId$__9 = $__4.value; + value$__15 = $__4.value; { - item$__10 = ItemResource.get(itemId$__9); - if (!item$__10.keepUnread) { - ids.push(itemId$__9); - feedIds.push(item$__10.feedId); + if (value$__15.unreadCount) { + this.unreadCount += value$__15.unreadCount; + } + if (value$__15.folderId !== undefined) { + $traceurRuntime.setProperty(this.folderUnreadCount, value$__15.folderId, this.folderUnreadCount[$traceurRuntime.toProperty(value$__15.folderId)] || 0); + ($__57 = this.folderUnreadCount, $__58 = value$__15.folderId, $__59 = value$__15.unreadCount, $__60 = $__57[$traceurRuntime.toProperty($__58)], $__61 = $__60 + $__59, $traceurRuntime.setProperty($__57, $__58, $__61), $__61); } } } - FeedResource.markItemsOfFeedsRead(feedIds); - ItemResource.markItemsRead(ids); - }); - this.autoPage = (function() { - $__0.isAutoPagingEnabled = false; - var type = $route.current.$$route.type; - var id = $routeParams.id; - ItemResource.autoPage(type, id).success((function(data) { - Publisher.publishAll(data); - if (data.items.length > 0) { - $__0.isAutoPagingEnabled = true; - } - })).error((function() { - $__0.isAutoPagingEnabled = true; - })); - }); - this.getRelativeDate = (function(timestamp) { - var languageCode$__11; - var date$__12; - if (timestamp !== undefined && timestamp !== '') { - languageCode$__11 = SettingsResource.get('language'); - date$__12 = moment.unix(timestamp).locale(languageCode$__11).fromNow() + ''; - return date$__12; - } else { - return ''; - } - }); - }]); - app.controller('NavigationController', ["$route", "FEED_TYPE", "FeedResource", "FolderResource", "ItemResource", "SettingsResource", function($route, FEED_TYPE, FeedResource, FolderResource, ItemResource, SettingsResource) { - 'use strict'; - var $__0 = this; - this.feedError = ''; - this.folderError = ''; - this.getFeeds = (function() { - return FeedResource.getAll(); - }); - this.getFolders = (function() { - return FolderResource.getAll(); - }); - this.markFolderRead = (function(folderId) { - var feed$__13; - FeedResource.markFolderRead(folderId); - for (var $__3 = FeedResource.getByFolderId(folderId)[$traceurRuntime.toProperty(Symbol.iterator)](), + }, + updateFolderCache: function() { + var feed$__16; + this.folderIds = {}; + for (var $__3 = this.values[$traceurRuntime.toProperty(Symbol.iterator)](), $__4; !($__4 = $__3.next()).done; ) { - feed$__13 = $__4.value; + feed$__16 = $__4.value; { - ItemResource.markFeedRead(feed$__13.id); + $traceurRuntime.setProperty(this.folderIds, feed$__16.folderId, this.folderIds[$traceurRuntime.toProperty(feed$__16.folderId)] || []); + this.folderIds[$traceurRuntime.toProperty(feed$__16.folderId)].push(feed$__16); } } - }); - this.markFeedRead = (function(feedId) { - ItemResource.markFeedRead(feedId); - FeedResource.markFeedRead(feedId); - }); - this.markRead = (function() { - ItemResource.markRead(); - FeedResource.markRead(); - }); - this.isShowAll = (function() { - return SettingsResource.get('showAll'); - }); - this.getFeedsOfFolder = (function(folderId) { - return FeedResource.getByFolderId(folderId); - }); - this.getUnreadCount = (function() { - return FeedResource.getUnreadCount(); - }); - this.getFeedUnreadCount = (function(feedId) { - return FeedResource.getById(feedId).unreadCount; - }); - this.getFolderUnreadCount = (function(folderId) { - return FeedResource.getFolderUnreadCount(folderId); - }); - this.getStarredCount = (function() { - return ItemResource.getStarredCount(); - }); - this.toggleFolder = (function(folderName) { - FolderResource.toggleOpen(folderName); - }); - this.hasFeeds = (function(folderId) { - return FeedResource.getFolderUnreadCount(folderId) !== undefined; - }); - this.subFeedActive = (function(folderId) { - var feed$__14; - var type = $route.current.$$route.type; - if (type === FEED_TYPE.FEED) { - feed$__14 = FeedResource.getById($route.current.params.id); - if (feed$__14.folderId === folderId) { - return true; - } + }, + add: function(value) { + $traceurRuntime.superCall(this, $FeedResource.prototype, "add", [value]); + if (value.id !== undefined) { + $traceurRuntime.setProperty(this.ids, value.id, this.hashMap[$traceurRuntime.toProperty(value.url)]); } - return false; - }); - this.isSubscriptionsActive = (function() { - return $route.current && $route.current.$$route.type === FEED_TYPE.SUBSCRIPTIONS; - }); - this.isStarredActive = (function() { - return $route.current && $route.current.$$route.type === FEED_TYPE.STARRED; - }); - this.isFolderActive = (function(folderId) { - var currentId = parseInt($route.current.params.id, 10); - return $route.current && $route.current.$$route.type === FEED_TYPE.FOLDER && currentId === folderId; - }); - this.isFeedActive = (function(feedId) { - var currentId = parseInt($route.current.params.id, 10); - return $route.current && $route.current.$$route.type === FEED_TYPE.FEED && currentId === feedId; - }); - this.folderNameExists = (function(folderName) { - return FolderResource.get(folderName) !== undefined; - }); - this.isAddingFolder = (function() { - return true; - }); - this.createFolder = (function(folder) { - console.log(folder.name); - folder.name = ''; - }); - this.createFeed = (function(feed) { - $__0.newFolder = false; - console.log(feed.url + feed.folder); - feed.url = ''; - }); - this.renameFeed = (function(feed) { - feed.editing = false; - }); - this.renameFolder = (function() { - console.log('TBD'); - }); - this.deleteFeed = (function(feed) { - feed.deleted = true; - }); - this.undeleteFeed = (function(feed) { - feed.deleted = false; - }); - this.removeFeed = (function(feed) { - console.log('remove ' + feed); - }); - this.deleteFolder = (function(folderName) { - console.log(folderName); - }); - this.moveFeed = (function(feedId, folderId) { - console.log(feedId + folderId); - }); - }]); - app.controller('SettingsController', ["$route", "SettingsResource", "FeedResource", function($route, SettingsResource, FeedResource) { - 'use strict'; - var $__0 = this; - this.importing = false; - this.opmlImportError = false; - this.articleImportError = false; - var set = (function(key, value) { - SettingsResource.set(key, value); - if (['showAll', 'oldestFirst'].indexOf(key) >= 0) { - $route.reload(); - } - }); - this.toggleSetting = (function(key) { - set(key, !$__0.getSetting(key)); - }); - this.getSetting = (function(key) { - return SettingsResource.get(key); - }); - this.feedSize = (function() { - return FeedResource.size(); - }); - this.importOpml = (function(content) { - console.log(content); - }); - this.importArticles = (function(content) { - console.log(content); - }); - }]); - app.filter('trustUrl', (["$sce", function($sce) { - 'use strict'; - return (function(url) { - return $sce.trustAsResourceUrl(url); - }); - }])); - app.filter('unreadCountFormatter', (function() { - 'use strict'; - return (function(unreadCount) { - if (unreadCount > 999) { - return '999+'; + }, + delete: function(url) { + var feed = this.get(url); + this.deleted = feed; + delete this.ids[$traceurRuntime.toProperty(feed.id)]; + $traceurRuntime.superCall(this, $FeedResource.prototype, "delete", [url]); + this.updateUnreadCache(); + this.updateFolderCache(); + return this.http.delete((this.BASE_URL + "/feeds/" + feed.id)); + }, + markRead: function() { + var feed$__17; + for (var $__3 = this.values[$traceurRuntime.toProperty(Symbol.iterator)](), + $__4; !($__4 = $__3.next()).done; ) { + feed$__17 = $__4.value; + { + feed$__17.unreadCount = 0; + } } - return unreadCount; - }); - })); - app.factory('FeedResource', (["Resource", "$http", "BASE_URL", function(Resource, $http, BASE_URL) { - 'use strict'; - var FeedResource = function FeedResource($http, BASE_URL) { - $traceurRuntime.superCall(this, $FeedResource.prototype, "constructor", [$http, BASE_URL, 'url']); - this.ids = {}; this.unreadCount = 0; this.folderUnreadCount = {}; - this.folderIds = {}; - this.deleted = null; - }; - var $FeedResource = FeedResource; - ($traceurRuntime.createClass)(FeedResource, { - receive: function(data) { - $traceurRuntime.superCall(this, $FeedResource.prototype, "receive", [data]); - this.updateUnreadCache(); - this.updateFolderCache(); - }, - updateUnreadCache: function() { - var $__56, - $__57, - $__58, - $__59, - $__60; - var value$__15; - this.unreadCount = 0; - this.folderUnreadCount = {}; - for (var $__3 = this.values[$traceurRuntime.toProperty(Symbol.iterator)](), - $__4; !($__4 = $__3.next()).done; ) { - value$__15 = $__4.value; - { - if (value$__15.unreadCount) { - this.unreadCount += value$__15.unreadCount; - } - if (value$__15.folderId !== undefined) { - $traceurRuntime.setProperty(this.folderUnreadCount, value$__15.folderId, this.folderUnreadCount[$traceurRuntime.toProperty(value$__15.folderId)] || 0); - ($__56 = this.folderUnreadCount, $__57 = value$__15.folderId, $__58 = value$__15.unreadCount, $__59 = $__56[$traceurRuntime.toProperty($__57)], $__60 = $__59 + $__58, $traceurRuntime.setProperty($__56, $__57, $__60), $__60); - } - } - } - }, - updateFolderCache: function() { - var feed$__16; - this.folderIds = {}; - for (var $__3 = this.values[$traceurRuntime.toProperty(Symbol.iterator)](), - $__4; !($__4 = $__3.next()).done; ) { - feed$__16 = $__4.value; - { - $traceurRuntime.setProperty(this.folderIds, feed$__16.folderId, this.folderIds[$traceurRuntime.toProperty(feed$__16.folderId)] || []); - this.folderIds[$traceurRuntime.toProperty(feed$__16.folderId)].push(feed$__16); - } - } - }, - add: function(value) { - $traceurRuntime.superCall(this, $FeedResource.prototype, "add", [value]); - if (value.id !== undefined) { - $traceurRuntime.setProperty(this.ids, value.id, this.hashMap[$traceurRuntime.toProperty(value.url)]); - } - }, - delete: function(url) { - var feed = this.get(url); - this.deleted = feed; - delete this.ids[$traceurRuntime.toProperty(feed.id)]; - $traceurRuntime.superCall(this, $FeedResource.prototype, "delete", [url]); - this.updateUnreadCache(); - this.updateFolderCache(); - return this.http.delete((this.BASE_URL + "/feeds/" + feed.id)); - }, - markRead: function() { - var feed$__17; - for (var $__3 = this.values[$traceurRuntime.toProperty(Symbol.iterator)](), - $__4; !($__4 = $__3.next()).done; ) { - feed$__17 = $__4.value; - { - feed$__17.unreadCount = 0; - } - } - this.unreadCount = 0; - this.folderUnreadCount = {}; - }, - markFeedRead: function(feedId) { - this.ids[$traceurRuntime.toProperty(feedId)].unreadCount = 0; - this.updateUnreadCache(); - }, - markFolderRead: function(folderId) { - var feed$__18; - for (var $__3 = this.values[$traceurRuntime.toProperty(Symbol.iterator)](), - $__4; !($__4 = $__3.next()).done; ) { - feed$__18 = $__4.value; - { - if (feed$__18.folderId === folderId) { - feed$__18.unreadCount = 0; - } - } - } - this.updateUnreadCache(); - }, - markItemOfFeedRead: function(feedId) { - this.ids[$traceurRuntime.toProperty(feedId)].unreadCount -= 1; - this.updateUnreadCache(); - }, - markItemsOfFeedsRead: function(feedIds) { - var feedId$__19; - for (var $__3 = feedIds[$traceurRuntime.toProperty(Symbol.iterator)](), - $__4; !($__4 = $__3.next()).done; ) { - feedId$__19 = $__4.value; - { - this.ids[$traceurRuntime.toProperty(feedId$__19)].unreadCount -= 1; + }, + markFeedRead: function(feedId) { + this.ids[$traceurRuntime.toProperty(feedId)].unreadCount = 0; + this.updateUnreadCache(); + }, + markFolderRead: function(folderId) { + var feed$__18; + for (var $__3 = this.values[$traceurRuntime.toProperty(Symbol.iterator)](), + $__4; !($__4 = $__3.next()).done; ) { + feed$__18 = $__4.value; + { + if (feed$__18.folderId === folderId) { + feed$__18.unreadCount = 0; } } - this.updateUnreadCache(); - }, - markItemOfFeedUnread: function(feedId) { - this.ids[$traceurRuntime.toProperty(feedId)].unreadCount += 1; - this.updateUnreadCache(); - }, - getUnreadCount: function() { - return this.unreadCount; - }, - getFolderUnreadCount: function(folderId) { - return this.folderUnreadCount[$traceurRuntime.toProperty(folderId)]; - }, - getByFolderId: function(folderId) { - return this.folderIds[$traceurRuntime.toProperty(folderId)] || []; - }, - getById: function(feedId) { - return this.ids[$traceurRuntime.toProperty(feedId)]; - }, - rename: function(url, name) { - var feed = this.get(url); - feed.title = name; - return this.http({ - method: 'POST', - url: (this.BASE_URL + "/feeds/" + feed.id + "/rename"), - data: {feedTitle: name} - }); - }, - move: function(url, folderId) { - var feed = this.get(url); - feed.folderId = folderId; - this.updateFolderCache(); - return this.http({ - method: 'POST', - url: (this.BASE_URL + "/feeds/" + feed.id + "/move"), - data: {parentFolderId: folderId} - }); - }, - create: function(url, folderId) { - var title = arguments[2] !== (void 0) ? arguments[2] : null; - if (title) { - title = title.toUpperCase(); - } - var feed = { - url: url, - folderId: folderId, - title: title, - faviconLink: '../css/loading.gif' - }; - if (!this.get(url)) { - this.add(feed); - } - this.updateFolderCache(); - console.log(feed); - }, - undoDelete: function() { - if (this.deleted) { - this.add(this.deleted); - return this.http.post((this.BASE_URL + "/feeds/" + this.deleted.id + "/restore")); - } - this.updateFolderCache(); - this.updateUnreadCache(); } - }, {}, Resource); - return new FeedResource($http, BASE_URL); - }])); - app.factory('FolderResource', (["Resource", "$http", "BASE_URL", function(Resource, $http, BASE_URL) { - 'use strict'; - var FolderResource = function FolderResource($http, BASE_URL) { - $traceurRuntime.superCall(this, $FolderResource.prototype, "constructor", [$http, BASE_URL, 'name']); - this.deleted = null; - }; - var $FolderResource = FolderResource; - ($traceurRuntime.createClass)(FolderResource, { - delete: function(folderName) { - var folder = this.get(folderName); - this.deleted = folder; - $traceurRuntime.superCall(this, $FolderResource.prototype, "delete", [folderName]); - return this.http.delete((this.BASE_URL + "/folders/" + folder.id)); - }, - toggleOpen: function(folderName) { - var folder = this.get(folderName); - folder.opened = !folder.opened; - return this.http({ - url: (this.BASE_URL + "/folders/" + folder.id + "/open"), - method: 'POST', - data: { - folderId: folder.id, - open: folder.opened - } - }); - }, - rename: function(folderName, toFolderName) { - toFolderName = toFolderName.toUpperCase(); - var folder = this.get(folderName); - if (!this.get(toFolderName)) { - folder.name = toFolderName; - delete this.hashMap[$traceurRuntime.toProperty(folderName)]; - $traceurRuntime.setProperty(this.hashMap, toFolderName, folder); - } - return this.http({ - url: (this.BASE_URL + "/folders/" + folder.id + "/rename"), - method: 'POST', - data: {folderName: toFolderName} - }); - }, - create: function(folderName) { - var folder$__20; - folderName = folderName.toUpperCase(); - if (!this.get(folderName)) { - folder$__20 = {name: folderName}; - this.add(folder$__20); - } - return this.http({ - url: (this.BASE_URL + "/folders"), - method: 'POST', - data: {folderName: folderName} - }); - }, - undoDelete: function() { - if (this.deleted) { - this.add(this.deleted); - return this.http.post((this.BASE_URL + "/folders/" + this.deleted.id + "/restore")); + this.updateUnreadCache(); + }, + markItemOfFeedRead: function(feedId) { + this.ids[$traceurRuntime.toProperty(feedId)].unreadCount -= 1; + this.updateUnreadCache(); + }, + markItemsOfFeedsRead: function(feedIds) { + var feedId$__19; + for (var $__3 = feedIds[$traceurRuntime.toProperty(Symbol.iterator)](), + $__4; !($__4 = $__3.next()).done; ) { + feedId$__19 = $__4.value; + { + this.ids[$traceurRuntime.toProperty(feedId$__19)].unreadCount -= 1; } } - }, {}, Resource); - return new FolderResource($http, BASE_URL); - }])); - app.factory('ItemResource', (["Resource", "$http", "BASE_URL", "ITEM_BATCH_SIZE", function(Resource, $http, BASE_URL, ITEM_BATCH_SIZE) { - 'use strict'; - var ItemResource = function ItemResource($http, BASE_URL, ITEM_BATCH_SIZE) { - $traceurRuntime.superCall(this, $ItemResource.prototype, "constructor", [$http, BASE_URL]); - this.starredCount = 0; - this.batchSize = ITEM_BATCH_SIZE; - }; - var $ItemResource = ItemResource; - ($traceurRuntime.createClass)(ItemResource, { - receive: function(value, channel) { - switch (channel) { - case 'newestItemId': - this.newestItemId = value; - break; - case 'starred': - this.starredCount = value; - break; - default: - $traceurRuntime.superCall(this, $ItemResource.prototype, "receive", [value, channel]); - } - }, - getNewestItemId: function() { - return this.newestItemId; - }, - getStarredCount: function() { - return this.starredCount; - }, - star: function(itemId) { - var isStarred = arguments[1] !== (void 0) ? arguments[1] : true; - var it = this.get(itemId); - var url = (this.BASE_URL + "/items/" + it.feedId + "/" + it.guidHash + "/star"); - it.starred = isStarred; - if (isStarred) { - this.starredCount += 1; - } else { - this.starredCount -= 1; - } - return this.http({ - url: url, - method: 'POST', - data: {isStarred: isStarred} - }); - }, - toggleStar: function(itemId) { - if (this.get(itemId).starred) { - this.star(itemId, false); - } else { - this.star(itemId, true); - } - }, - markItemRead: function(itemId) { - var isRead = arguments[1] !== (void 0) ? arguments[1] : true; - this.get(itemId).unread = !isRead; - return this.http({ - url: (this.BASE_URL + "/items/" + itemId + "/read"), - method: 'POST', - data: {isRead: isRead} - }); - }, - markItemsRead: function(itemIds) { - var itemId$__21; - for (var $__3 = itemIds[$traceurRuntime.toProperty(Symbol.iterator)](), - $__4; !($__4 = $__3.next()).done; ) { - itemId$__21 = $__4.value; - { - this.get(itemId$__21).unread = false; - } + this.updateUnreadCache(); + }, + markItemOfFeedUnread: function(feedId) { + this.ids[$traceurRuntime.toProperty(feedId)].unreadCount += 1; + this.updateUnreadCache(); + }, + getUnreadCount: function() { + return this.unreadCount; + }, + getFolderUnreadCount: function(folderId) { + return this.folderUnreadCount[$traceurRuntime.toProperty(folderId)]; + }, + getByFolderId: function(folderId) { + return this.folderIds[$traceurRuntime.toProperty(folderId)] || []; + }, + getById: function(feedId) { + return this.ids[$traceurRuntime.toProperty(feedId)]; + }, + rename: function(url, name) { + var feed = this.get(url); + feed.title = name; + return this.http({ + method: 'POST', + url: (this.BASE_URL + "/feeds/" + feed.id + "/rename"), + data: {feedTitle: name} + }); + }, + move: function(url, folderId) { + var feed = this.get(url); + feed.folderId = folderId; + this.updateFolderCache(); + return this.http({ + method: 'POST', + url: (this.BASE_URL + "/feeds/" + feed.id + "/move"), + data: {parentFolderId: folderId} + }); + }, + create: function(url, folderId) { + var title = arguments[2] !== (void 0) ? arguments[2] : null; + if (title) { + title = title.toUpperCase(); + } + var feed = { + url: url, + folderId: folderId, + title: title, + faviconLink: '../css/loading.gif' + }; + if (!this.get(url)) { + this.add(feed); + } + this.updateFolderCache(); + console.log(feed); + }, + undoDelete: function() { + if (this.deleted) { + this.add(this.deleted); + return this.http.post((this.BASE_URL + "/feeds/" + this.deleted.id + "/restore")); + } + this.updateFolderCache(); + this.updateUnreadCache(); + } + }, {}, Resource); + return new FeedResource($http, BASE_URL); + }])); + app.factory('FolderResource', (["Resource", "$http", "BASE_URL", function(Resource, $http, BASE_URL) { + 'use strict'; + var FolderResource = function FolderResource($http, BASE_URL) { + $traceurRuntime.superCall(this, $FolderResource.prototype, "constructor", [$http, BASE_URL, 'name']); + this.deleted = null; + }; + var $FolderResource = FolderResource; + ($traceurRuntime.createClass)(FolderResource, { + delete: function(folderName) { + var folder = this.get(folderName); + this.deleted = folder; + $traceurRuntime.superCall(this, $FolderResource.prototype, "delete", [folderName]); + return this.http.delete((this.BASE_URL + "/folders/" + folder.id)); + }, + toggleOpen: function(folderName) { + var folder = this.get(folderName); + folder.opened = !folder.opened; + return this.http({ + url: (this.BASE_URL + "/folders/" + folder.id + "/open"), + method: 'POST', + data: { + folderId: folder.id, + open: folder.opened } - return this.http({ - url: (this.BASE_URL + "/items/read/multiple"), - method: 'POST', - data: {itemIds: itemIds} - }); - }, - markFeedRead: function(feedId) { - var item$__22; - var read = arguments[1] !== (void 0) ? arguments[1] : true; - for (var $__3 = this.values.filter((function(i) { - return i.feedId === feedId; - }))[$traceurRuntime.toProperty(Symbol.iterator)](), - $__4; !($__4 = $__3.next()).done; ) { - item$__22 = $__4.value; - { - item$__22.unread = !read; - } + }); + }, + rename: function(folderName, toFolderName) { + toFolderName = toFolderName.toUpperCase(); + var folder = this.get(folderName); + if (!this.get(toFolderName)) { + folder.name = toFolderName; + delete this.hashMap[$traceurRuntime.toProperty(folderName)]; + $traceurRuntime.setProperty(this.hashMap, toFolderName, folder); + } + return this.http({ + url: (this.BASE_URL + "/folders/" + folder.id + "/rename"), + method: 'POST', + data: {folderName: toFolderName} + }); + }, + create: function(folderName) { + var folder$__20; + folderName = folderName.toUpperCase(); + if (!this.get(folderName)) { + folder$__20 = {name: folderName}; + this.add(folder$__20); + } + return this.http({ + url: (this.BASE_URL + "/folders"), + method: 'POST', + data: {folderName: folderName} + }); + }, + undoDelete: function() { + if (this.deleted) { + this.add(this.deleted); + return this.http.post((this.BASE_URL + "/folders/" + this.deleted.id + "/restore")); + } + } + }, {}, Resource); + return new FolderResource($http, BASE_URL); + }])); + app.factory('ItemResource', (["Resource", "$http", "BASE_URL", "ITEM_BATCH_SIZE", function(Resource, $http, BASE_URL, ITEM_BATCH_SIZE) { + 'use strict'; + var ItemResource = function ItemResource($http, BASE_URL, ITEM_BATCH_SIZE) { + $traceurRuntime.superCall(this, $ItemResource.prototype, "constructor", [$http, BASE_URL]); + this.starredCount = 0; + this.batchSize = ITEM_BATCH_SIZE; + }; + var $ItemResource = ItemResource; + ($traceurRuntime.createClass)(ItemResource, { + receive: function(value, channel) { + switch (channel) { + case 'newestItemId': + this.newestItemId = value; + break; + case 'starred': + this.starredCount = value; + break; + default: + $traceurRuntime.superCall(this, $ItemResource.prototype, "receive", [value, channel]); + } + }, + getNewestItemId: function() { + return this.newestItemId; + }, + getStarredCount: function() { + return this.starredCount; + }, + star: function(itemId) { + var isStarred = arguments[1] !== (void 0) ? arguments[1] : true; + var it = this.get(itemId); + var url = (this.BASE_URL + "/items/" + it.feedId + "/" + it.guidHash + "/star"); + it.starred = isStarred; + if (isStarred) { + this.starredCount += 1; + } else { + this.starredCount -= 1; + } + return this.http({ + url: url, + method: 'POST', + data: {isStarred: isStarred} + }); + }, + toggleStar: function(itemId) { + if (this.get(itemId).starred) { + this.star(itemId, false); + } else { + this.star(itemId, true); + } + }, + markItemRead: function(itemId) { + var isRead = arguments[1] !== (void 0) ? arguments[1] : true; + this.get(itemId).unread = !isRead; + return this.http({ + url: (this.BASE_URL + "/items/" + itemId + "/read"), + method: 'POST', + data: {isRead: isRead} + }); + }, + markItemsRead: function(itemIds) { + var itemId$__21; + for (var $__3 = itemIds[$traceurRuntime.toProperty(Symbol.iterator)](), + $__4; !($__4 = $__3.next()).done; ) { + itemId$__21 = $__4.value; + { + this.get(itemId$__21).unread = false; } - return this.http.post((this.BASE_URL + "/feeds/" + feedId + "/read")); - }, - markRead: function() { - var item$__23; - for (var $__3 = this.values[$traceurRuntime.toProperty(Symbol.iterator)](), - $__4; !($__4 = $__3.next()).done; ) { - item$__23 = $__4.value; - { - item$__23.unread = false; - } + } + return this.http({ + url: (this.BASE_URL + "/items/read/multiple"), + method: 'POST', + data: {itemIds: itemIds} + }); + }, + markFeedRead: function(feedId) { + var item$__22; + var read = arguments[1] !== (void 0) ? arguments[1] : true; + for (var $__3 = this.values.filter((function(i) { + return i.feedId === feedId; + }))[$traceurRuntime.toProperty(Symbol.iterator)](), + $__4; !($__4 = $__3.next()).done; ) { + item$__22 = $__4.value; + { + item$__22.unread = !read; } - return this.http.post((this.BASE_URL + "/items/read")); - }, - autoPage: function(type, id) { - return this.http({ - url: (this.BASE_URL + "/items"), - method: 'GET', - params: { - type: type, - id: id, - offset: this.size(), - limit: this.batchSize - } - }); } - }, {}, Resource); - return new ItemResource($http, BASE_URL, ITEM_BATCH_SIZE); - }])); - app.service('Loading', function() { - 'use strict'; - var $__0 = this; - this.loading = { - global: false, - content: false, - autopaging: false - }; - this.setLoading = (function(area, isLoading) { - $traceurRuntime.setProperty($__0.loading, area, isLoading); - }); - this.isLoading = (function(area) { - return $__0.loading[$traceurRuntime.toProperty(area)]; - }); - }); - app.service('Publisher', function() { - 'use strict'; - var $__0 = this; - this.channels = {}; - this.subscribe = (function(obj) { - return {toChannels: (function() { - var channel$__24; - for (var channels = [], - $__7 = 0; $__7 < arguments.length; $__7++) - $traceurRuntime.setProperty(channels, $__7, arguments[$traceurRuntime.toProperty($__7)]); - for (var $__3 = channels[$traceurRuntime.toProperty(Symbol.iterator)](), - $__4; !($__4 = $__3.next()).done; ) { - channel$__24 = $__4.value; - { - $traceurRuntime.setProperty($__0.channels, channel$__24, $__0.channels[$traceurRuntime.toProperty(channel$__24)] || []); - $__0.channels[$traceurRuntime.toProperty(channel$__24)].push(obj); - } - } - })}; - }); - this.publishAll = (function(data) { - var $__8$__25, - channel$__26, - messages$__27; - var listener$__28; - for (var $__5 = items(data)[$traceurRuntime.toProperty(Symbol.iterator)](), - $__6; !($__6 = $__5.next()).done; ) { - $__8$__25 = $__6.value; - channel$__26 = $__8$__25[0]; - messages$__27 = $__8$__25[1]; + return this.http.post((this.BASE_URL + "/feeds/" + feedId + "/read")); + }, + markRead: function() { + var item$__23; + for (var $__3 = this.values[$traceurRuntime.toProperty(Symbol.iterator)](), + $__4; !($__4 = $__3.next()).done; ) { + item$__23 = $__4.value; { - if ($__0.channels[$traceurRuntime.toProperty(channel$__26)] !== undefined) { - for (var $__3 = $__0.channels[$traceurRuntime.toProperty(channel$__26)][$traceurRuntime.toProperty(Symbol.iterator)](), - $__4; !($__4 = $__3.next()).done; ) { - listener$__28 = $__4.value; - { - listener$__28.receive(messages$__27, channel$__26); - } - } - } + item$__23.unread = false; } } - }); + return this.http.post((this.BASE_URL + "/items/read")); + }, + autoPage: function(type, id) { + return this.http({ + url: (this.BASE_URL + "/items"), + method: 'GET', + params: { + type: type, + id: id, + offset: this.size(), + limit: this.batchSize + } + }); + } + }, {}, Resource); + return new ItemResource($http, BASE_URL, ITEM_BATCH_SIZE); + }])); + app.service('Loading', function() { + 'use strict'; + var $__0 = this; + this.loading = { + global: false, + content: false, + autopaging: false + }; + this.setLoading = (function(area, isLoading) { + $traceurRuntime.setProperty($__0.loading, area, isLoading); }); - app.factory('Resource', (function() { - 'use strict'; - var Resource = function Resource(http, BASE_URL) { - var id = arguments[2] !== (void 0) ? arguments[2] : 'id'; - this.id = id; - this.values = []; - this.hashMap = {}; - this.http = http; - this.BASE_URL = BASE_URL; - }; - ($traceurRuntime.createClass)(Resource, { - receive: function(objs) { - var obj$__29; - for (var $__3 = objs[$traceurRuntime.toProperty(Symbol.iterator)](), + this.isLoading = (function(area) { + return $__0.loading[$traceurRuntime.toProperty(area)]; + }); + }); + app.service('Publisher', function() { + 'use strict'; + var $__0 = this; + this.channels = {}; + this.subscribe = (function(obj) { + return {toChannels: (function() { + var channel$__24; + for (var channels = [], + $__7 = 0; $__7 < arguments.length; $__7++) + $traceurRuntime.setProperty(channels, $__7, arguments[$traceurRuntime.toProperty($__7)]); + for (var $__3 = channels[$traceurRuntime.toProperty(Symbol.iterator)](), $__4; !($__4 = $__3.next()).done; ) { - obj$__29 = $__4.value; + channel$__24 = $__4.value; { - this.add(obj$__29); + $traceurRuntime.setProperty($__0.channels, channel$__24, $__0.channels[$traceurRuntime.toProperty(channel$__24)] || []); + $__0.channels[$traceurRuntime.toProperty(channel$__24)].push(obj); } } - }, - add: function(obj) { - var $__8$__30, - key$__31, - value$__32; - var existing = this.hashMap[$traceurRuntime.toProperty(obj[$traceurRuntime.toProperty(this.id)])]; - if (existing === undefined) { - this.values.push(obj); - $traceurRuntime.setProperty(this.hashMap, obj[$traceurRuntime.toProperty(this.id)], obj); - } else { - for (var $__3 = items(obj)[$traceurRuntime.toProperty(Symbol.iterator)](), + })}; + }); + this.publishAll = (function(data) { + var $__8$__25, + channel$__26, + messages$__27; + var listener$__28; + for (var $__5 = items(data)[$traceurRuntime.toProperty(Symbol.iterator)](), + $__6; !($__6 = $__5.next()).done; ) { + $__8$__25 = $__6.value; + channel$__26 = $__8$__25[0]; + messages$__27 = $__8$__25[1]; + { + if ($__0.channels[$traceurRuntime.toProperty(channel$__26)] !== undefined) { + for (var $__3 = $__0.channels[$traceurRuntime.toProperty(channel$__26)][$traceurRuntime.toProperty(Symbol.iterator)](), $__4; !($__4 = $__3.next()).done; ) { - $__8$__30 = $__4.value; - key$__31 = $__8$__30[0]; - value$__32 = $__8$__30[1]; + listener$__28 = $__4.value; { - $traceurRuntime.setProperty(existing, key$__31, value$__32); + listener$__28.receive(messages$__27, channel$__26); } } } - }, - size: function() { - return this.values.length; - }, - get: function(id) { - return this.hashMap[$traceurRuntime.toProperty(id)]; - }, - delete: function(id) { - var $__0 = this; - var deleteAtIndex = this.values.findIndex((function(e) { - return e[$traceurRuntime.toProperty($__0.id)] === id; - })); - if (deleteAtIndex !== undefined) { - this.values.splice(deleteAtIndex, 1); - } - if (this.hashMap[$traceurRuntime.toProperty(id)] !== undefined) { - delete this.hashMap[$traceurRuntime.toProperty(id)]; - } - }, - clear: function() { - this.hashMap = {}; - while (this.values.length > 0) { - this.values.pop(); - } - }, - getAll: function() { - return this.values; } - }, {}); - return Resource; - })); - app.service('SettingsResource', ["$http", "BASE_URL", function($http, BASE_URL) { - 'use strict'; - var $__0 = this; - this.settings = { - language: 'en', - showAll: false, - compact: false, - oldestFirst: false, - preventReadOnScroll: false - }; - this.defaultLanguageCode = 'en'; - this.supportedLanguageCodes = ['ar-ma', 'ar', 'bg', 'ca', 'cs', 'cv', 'da', 'de', 'el', 'en-ca', 'en-gb', 'eo', 'es', 'et', 'eu', 'fi', 'fr-ca', 'fr', 'gl', 'he', 'hi', 'hu', 'id', 'is', 'it', 'ja', 'ka', 'ko', 'lv', 'ms-my', 'nb', 'ne', 'nl', 'pl', 'pt-br', 'pt', 'ro', 'ru', 'sk', 'sl', 'sv', 'th', 'tr', 'tzm-la', 'tzm', 'uk', 'zh-cn', 'zh-tw']; - this.receive = (function(data) { - var $__8$__33, - key$__34, - value$__35; - for (var $__3 = items(data)[$traceurRuntime.toProperty(Symbol.iterator)](), + } + }); + }); + app.factory('Resource', (function() { + 'use strict'; + var Resource = function Resource(http, BASE_URL) { + var id = arguments[2] !== (void 0) ? arguments[2] : 'id'; + this.id = id; + this.values = []; + this.hashMap = {}; + this.http = http; + this.BASE_URL = BASE_URL; + }; + ($traceurRuntime.createClass)(Resource, { + receive: function(objs) { + var obj$__29; + for (var $__3 = objs[$traceurRuntime.toProperty(Symbol.iterator)](), $__4; !($__4 = $__3.next()).done; ) { - $__8$__33 = $__4.value; - key$__34 = $__8$__33[0]; - value$__35 = $__8$__33[1]; + obj$__29 = $__4.value; { - if (key$__34 === 'language') {