diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2013-04-12 12:25:58 +0200 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2013-04-12 12:25:58 +0200 |
commit | e8767f75116ff7ef2b7a349480151c9f66bbade0 (patch) | |
tree | 5879fe01fa8113a299daaba4d2c6cfa84769a104 /js | |
parent | e9eaa93826c75097d95d21a556e1b1aae6610bcd (diff) |
implement clientside update requests, fix #27
Diffstat (limited to 'js')
-rw-r--r-- | js/app/app.coffee | 10 | ||||
-rw-r--r-- | js/app/services/bl/feedbl.coffee | 6 | ||||
-rw-r--r-- | js/public/app.js | 25 | ||||
-rw-r--r-- | js/tests/services/bl/feedblSpec.coffee | 17 |
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 |