summaryrefslogtreecommitdiffstats
path: root/js
diff options
context:
space:
mode:
authorBernhard Posselt <nukeawhale@gmail.com>2013-04-12 12:25:58 +0200
committerBernhard Posselt <nukeawhale@gmail.com>2013-04-12 12:25:58 +0200
commite8767f75116ff7ef2b7a349480151c9f66bbade0 (patch)
tree5879fe01fa8113a299daaba4d2c6cfa84769a104 /js
parente9eaa93826c75097d95d21a556e1b1aae6610bcd (diff)
implement clientside update requests, fix #27
Diffstat (limited to 'js')
-rw-r--r--js/app/app.coffee10
-rw-r--r--js/app/services/bl/feedbl.coffee6
-rw-r--r--js/public/app.js25
-rw-r--r--js/tests/services/bl/feedblSpec.coffee17
4 files changed, 53 insertions, 5 deletions
diff --git a/js/app/app.coffee b/js/app/app.coffee
index 82a839c8c..9a8e54d6a 100644
--- a/js/app/app.coffee
+++ b/js/app/app.coffee
@@ -26,12 +26,18 @@ angular.module('News', ['OC', 'ui']).config ($provide) ->
$provide.value 'Config', config =
markReadTimeout: 500
scrollTimeout: 500
- feedUpdateInterval: 6000000
+ feedUpdateInterval: 600000
itemBatchSize: 20
-angular.module('News').run ['Persistence', (Persistence) ->
+angular.module('News').run ['Persistence', 'Config', 'FeedBl',
+(Persistence, Config, FeedBl) ->
+
Persistence.init()
+
+ setInterval ->
+ FeedBl.updateFeeds()
+ , Config.feedUpdateInterval
]
diff --git a/js/app/services/bl/feedbl.coffee b/js/app/services/bl/feedbl.coffee
index 4c9ff7c99..ead15fcd7 100644
--- a/js/app/services/bl/feedbl.coffee
+++ b/js/app/services/bl/feedbl.coffee
@@ -164,6 +164,12 @@ NewLoading, _ExistsError) ->
@_feedModel.removeByUrlHash(urlHash)
+ updateFeeds: ->
+ for feed in @_feedModel.getAll()
+ if angular.isDefined(feed.id)
+ @_persistence.updateFeed(feed.id)
+
+
return new FeedBl(ShowAll, FeedModel, Persistence, ActiveFeed, FeedType,
ItemModel, NewLoading)
diff --git a/js/public/app.js b/js/public/app.js
index 4f44689c3..e11c2e976 100644
--- a/js/public/app.js
+++ b/js/public/app.js
@@ -41,14 +41,17 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
return $provide.value('Config', config = {
markReadTimeout: 500,
scrollTimeout: 500,
- feedUpdateInterval: 6000000,
+ feedUpdateInterval: 600000,
itemBatchSize: 20
});
});
angular.module('News').run([
- 'Persistence', function(Persistence) {
- return Persistence.init();
+ 'Persistence', 'Config', 'FeedBl', function(Persistence, Config, FeedBl) {
+ Persistence.init();
+ return setInterval(function() {
+ return FeedBl.updateFeeds();
+ }, Config.feedUpdateInterval);
}
]);
@@ -800,6 +803,22 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
return this._feedModel.removeByUrlHash(urlHash);
};
+ FeedBl.prototype.updateFeeds = function() {
+ var feed, _i, _len, _ref, _results;
+
+ _ref = this._feedModel.getAll();
+ _results = [];
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ feed = _ref[_i];
+ if (angular.isDefined(feed.id)) {
+ _results.push(this._persistence.updateFeed(feed.id));
+ } else {
+ _results.push(void 0);
+ }
+ }
+ return _results;
+ };
+
return FeedBl;
})(_Bl);
diff --git a/js/tests/services/bl/feedblSpec.coffee b/js/tests/services/bl/feedblSpec.coffee
index c77922574..0303dd4c1 100644
--- a/js/tests/services/bl/feedblSpec.coffee
+++ b/js/tests/services/bl/feedblSpec.coffee
@@ -321,3 +321,20 @@ describe 'FeedBl', ->
expect(@FeedModel.size()).toBe(0)
expect(@FeedModel.getByUrlHash('john')).toBe(undefined)
+
+ it 'should update all feeds', =>
+ @persistence.updateFeed = jasmine.createSpy('update')
+ @FeedModel.add({id: 3, urlHash: 'john'})
+
+ @FeedBl.updateFeeds()
+
+ expect(@persistence.updateFeed).toHaveBeenCalledWith(3)
+
+
+ it 'should not update feeds without ids', =>
+ @persistence.updateFeed = jasmine.createSpy('update')
+ @FeedModel.add({urlHash: 'john'})
+
+ @FeedBl.updateFeeds()
+
+ expect(@persistence.updateFeed).not.toHaveBeenCalled() \ No newline at end of file