From 6b46f7b265e2086e06629cd5d8d3f6f6ec517b8b Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Thu, 22 May 2014 02:50:55 +0200 Subject: increase starcount if starring --- js/app/Config.js | 2 +- js/app/Run.js | 16 +++++++------- js/build/app.js | 35 ++++++++++++++++++++++++------- js/service/ItemResource.js | 24 +++++++++++++-------- js/tests/unit/service/ItemResourceSpec.js | 4 +++- 5 files changed, 55 insertions(+), 26 deletions(-) diff --git a/js/app/Config.js b/js/app/Config.js index d347415b9..17b823218 100644 --- a/js/app/Config.js +++ b/js/app/Config.js @@ -62,7 +62,7 @@ app.config(function ($routeProvider, $provide, $httpProvider) { let deferred = $q.defer(); $http({ - url: BASE_URL + '/items', + url: `${BASE_URL}/items`, method: 'GET', params: parameters }).success((data) => { diff --git a/js/app/Run.js b/js/app/Run.js index 1614deef1..1d69a9c8a 100644 --- a/js/app/Run.js +++ b/js/app/Run.js @@ -25,23 +25,23 @@ app.run(($rootScope, $location, $http, $q, $interval, Loading, ItemResource, // load feeds, settings and last read feed let settingsDeferred = $q.defer(); - $http.get(BASE_URL + '/settings').success((data) => { + $http.get(`${BASE_URL}/settings`).success((data) => { Publisher.publishAll(data); settingsDeferred.resolve(); }); let activeFeedDeferred = $q.defer(); - $http.get(BASE_URL + '/feeds/active').success((data) => { + $http.get(`${BASE_URL}/feeds/active`).success((data) => { let url; switch (data.type) { case FEED_TYPE.FEED: - url = '/items/feeds/' + data.id; + url = '/items/feeds/${data.id}'; break; case FEED_TYPE.FOLDER: - url = '/items/folders/' + data.id; + url = '/items/folders/${data.id}'; break; case FEED_TYPE.STARRED: @@ -57,13 +57,13 @@ app.run(($rootScope, $location, $http, $q, $interval, Loading, ItemResource, }); let folderDeferred = $q.defer(); - $http.get(BASE_URL + '/folders').success((data) => { + $http.get(`${BASE_URL}/folders`).success((data) => { Publisher.publishAll(data); folderDeferred.resolve(); }); let feedDeferred = $q.defer(); - $http.get(BASE_URL + '/feeds').success((data) => { + $http.get(`${BASE_URL}/feeds`).success((data) => { Publisher.publishAll(data); feedDeferred.resolve(); }); @@ -83,8 +83,8 @@ app.run(($rootScope, $location, $http, $q, $interval, Loading, ItemResource, // refresh feeds and folders $interval(() => { - $http.get(BASE_URL + '/feeds'); - $http.get(BASE_URL + '/folders'); + $http.get(`${BASE_URL}/feeds`); + $http.get(`${BASE_URL}/folders`); }, REFRESH_RATE * 1000); diff --git a/js/build/app.js b/js/build/app.js index ba5391389..faa2a4e44 100644 --- a/js/build/app.js +++ b/js/build/app.js @@ -116,10 +116,10 @@ var $__build_47_app__ = function () { var url; switch (data.type) { case FEED_TYPE.FEED: - url = '/items/feeds/' + data.id; + url = '/items/feeds/${data.id}'; break; case FEED_TYPE.FOLDER: - url = '/items/folders/' + data.id; + url = '/items/folders/${data.id}'; break; case FEED_TYPE.STARRED: url = '/items/starred'; @@ -246,6 +246,7 @@ var $__build_47_app__ = function () { $http, BASE_URL ]); + this.starredCount = 0; }; var $ItemResource = ItemResource; $traceurRuntime.createClass(ItemResource, { @@ -270,16 +271,36 @@ var $__build_47_app__ = function () { getStarredCount: function () { return this.starredCount; }, - markRead: function (itemId) { - var read = arguments[1] !== void 0 ? arguments[1] : true; - this.get(itemId).unread = !read; + 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 } + }); + }, + read: 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: read } + data: { isRead: isRead } }); }, - markFeedRead: function (feedId) { + keepUnread: function (itemId) { + this.get(itemId).keepUnread = true; + return this.read(itemId, false); + }, + readFeed: function (feedId) { var read = arguments[1] !== void 0 ? arguments[1] : true; for (var $__3 = this.values.filter(function (i) { return i.feedId === feedId; diff --git a/js/service/ItemResource.js b/js/service/ItemResource.js index 33f3efc52..779355e0a 100644 --- a/js/service/ItemResource.js +++ b/js/service/ItemResource.js @@ -15,6 +15,7 @@ app.factory('ItemResource', (Resource, $http, BASE_URL) => { constructor ($http, BASE_URL) { super($http, BASE_URL); + this.starredCount = 0; } @@ -44,30 +45,35 @@ app.factory('ItemResource', (Resource, $http, BASE_URL) => { } - star (itemId, star=true) { - let item = this.get(itemId); - let base = this.BASE_URL; - let url = `${base}/items/${item.feedId}/${item.guidHash}/star`; + star (itemId, isStarred=true) { + let it = this.get(itemId); + let url = `${this.BASE_URL}/items/${it.feedId}/${it.guidHash}/star`; - item.starred = star; + it.starred = isStarred; + + if (isStarred) { + this.starredCount += 1; + } else { + this.starredCount -= 1; + } return this.http({ url: url, method: 'POST', data: { - isStarred: star + isStarred: isStarred } }); } - read (itemId, read=true) { - this.get(itemId).unread = !read; + read (itemId, isRead=true) { + this.get(itemId).unread = !isRead; return this.http({ url: `${this.BASE_URL}/items/${itemId}/read`, method: 'POST', data: { - isRead: read + isRead: isRead } }); } diff --git a/js/tests/unit/service/ItemResourceSpec.js b/js/tests/unit/service/ItemResourceSpec.js index 49989472f..870824efe 100644 --- a/js/tests/unit/service/ItemResourceSpec.js +++ b/js/tests/unit/service/ItemResourceSpec.js @@ -99,7 +99,8 @@ describe('ItemResource', () => { it ('should star item', inject((ItemResource) => { - http.expectPOST('base/items/4/a/star', {isStarred: true}).respond(200, {}); + http.expectPOST('base/items/4/a/star', {isStarred: true}) + .respond(200, {}); ItemResource.receive([ { @@ -120,6 +121,7 @@ describe('ItemResource', () => { http.flush(); expect(ItemResource.get(3).starred).toBe(true); + expect(ItemResource.getStarredCount()).toBe(1); })); -- cgit v1.2.3