summaryrefslogtreecommitdiffstats
path: root/js/app/services
diff options
context:
space:
mode:
authorBernhard Posselt <nukeawhale@gmail.com>2013-04-26 11:20:55 +0200
committerBernhard Posselt <nukeawhale@gmail.com>2013-04-26 11:52:50 +0200
commitf987751d8c5c7a3ee660411afb9d01e6a822aed5 (patch)
tree9eb35d0575c62648b7f50e6c94afb808366cf05c /js/app/services
parentd947c35d05ddb12dad591d29a9b0f948c5f4f732 (diff)
order by pubdate on the client side fix #115
Diffstat (limited to 'js/app/services')
-rw-r--r--js/app/services/businesslayer/businesslayer.coffee2
-rw-r--r--js/app/services/businesslayer/feedbusinesslayer.coffee10
-rw-r--r--js/app/services/businesslayer/itembusinesslayer.coffee16
-rw-r--r--js/app/services/models/itemmodel.coffee21
-rw-r--r--js/app/services/newestitem.coffee39
-rw-r--r--js/app/services/persistence.coffee15
-rw-r--r--js/app/services/services.coffee5
7 files changed, 61 insertions, 47 deletions
diff --git a/js/app/services/businesslayer/businesslayer.coffee b/js/app/services/businesslayer/businesslayer.coffee
index 3096eb71e..622351333 100644
--- a/js/app/services/businesslayer/businesslayer.coffee
+++ b/js/app/services/businesslayer/businesslayer.coffee
@@ -25,7 +25,7 @@ angular.module('News').factory '_BusinessLayer', ->
class BusinessLayer
- constructor: (@_activeFeed, @_persistence, @_itemModel, @_type) ->
+ constructor: (@_activeFeed, @_persistence, @_itemModel, @_type, @_newest) ->
load: (id) ->
diff --git a/js/app/services/businesslayer/feedbusinesslayer.coffee b/js/app/services/businesslayer/feedbusinesslayer.coffee
index 9a23bec43..804b68423 100644
--- a/js/app/services/businesslayer/feedbusinesslayer.coffee
+++ b/js/app/services/businesslayer/feedbusinesslayer.coffee
@@ -24,15 +24,15 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
angular.module('News').factory 'FeedBusinessLayer',
['_BusinessLayer', 'ShowAll', 'Persistence', 'ActiveFeed', 'FeedType',
'ItemModel', 'FeedModel', 'NewLoading', '_ExistsError', 'Utils', '$rootScope',
-'UndoQueue',
+'UndoQueue', 'NewestItem',
(_BusinessLayer, ShowAll, Persistence, ActiveFeed, FeedType, ItemModel,
-FeedModel, NewLoading, _ExistsError, Utils, $rootScope, UndoQueue) ->
+FeedModel, NewLoading, _ExistsError, Utils, $rootScope, UndoQueue, NewestItem) ->
class FeedBusinessLayer extends _BusinessLayer
constructor: (@_showAll, @_feedModel, persistence, activeFeed, feedType,
itemModel, @_newLoading, @_utils, @_$rootScope,
- @_undoQueue) ->
+ @_undoQueue, @_newestItem) ->
super(activeFeed, persistence, itemModel, feedType.Feed)
@_feedType = feedType
@@ -70,7 +70,7 @@ FeedModel, NewLoading, _ExistsError, Utils, $rootScope, UndoQueue) ->
feed.unreadCount = 0
if @_activeFeed.getId() == feedId and
@_activeFeed.getType() == @_feedType.Feed
- highestItemId = @_itemModel.getHighestId()
+ highestItemId = @_newestItem.getId()
else
highestItemId = 0
@_persistence.setFeedRead(feedId, highestItemId)
@@ -198,6 +198,6 @@ FeedModel, NewLoading, _ExistsError, Utils, $rootScope, UndoQueue) ->
return new FeedBusinessLayer(ShowAll, FeedModel, Persistence, ActiveFeed,
FeedType, ItemModel, NewLoading, Utils,
- $rootScope, UndoQueue)
+ $rootScope, UndoQueue, NewestItem)
] \ No newline at end of file
diff --git a/js/app/services/businesslayer/itembusinesslayer.coffee b/js/app/services/businesslayer/itembusinesslayer.coffee
index 99a400385..6d12661ff 100644
--- a/js/app/services/businesslayer/itembusinesslayer.coffee
+++ b/js/app/services/businesslayer/itembusinesslayer.coffee
@@ -23,14 +23,14 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
angular.module('News').factory 'ItemBusinessLayer',
['ItemModel', 'FeedModel', 'Persistence', 'ActiveFeed', 'FeedType',
-'StarredBusinessLayer',
+'StarredBusinessLayer', 'NewestItem',
(ItemModel, FeedModel, Persistence, ActiveFeed, FeedType,
-StarredBusinessLayer) ->
+StarredBusinessLayer, NewestItem) ->
class ItemBusinessLayer
constructor: (@_itemModel, @_feedModel, @_persistence, @_activeFeed,
- @_feedType, @_starredBusinessLayer) ->
+ @_feedType, @_starredBusinessLayer, @_newestItem) ->
getAll: ->
return @_itemModel.getAll()
@@ -106,10 +106,12 @@ StarredBusinessLayer) ->
loadNext: (callback) ->
- lowestItemId = @_itemModel.getLowestId()
- if lowestItemId != 0
+ size = @_itemModel.size()
+ if size != 0
@_persistence.getItems @_activeFeed.getType(),
- @_activeFeed.getId(), lowestItemId,
+ @_activeFeed.getId(),
+ size,
+ @_newestItem.getId(),
callback
else
callback()
@@ -121,6 +123,6 @@ StarredBusinessLayer) ->
return new ItemBusinessLayer(ItemModel, FeedModel, Persistence, ActiveFeed,
- FeedType, StarredBusinessLayer)
+ FeedType, StarredBusinessLayer, NewestItem)
] \ No newline at end of file
diff --git a/js/app/services/models/itemmodel.coffee b/js/app/services/models/itemmodel.coffee
index 1b03d65f8..12f557421 100644
--- a/js/app/services/models/itemmodel.coffee
+++ b/js/app/services/models/itemmodel.coffee
@@ -99,26 +99,5 @@ angular.module('News').factory 'ItemModel',
super(id)
- getHighestId: ->
- query = new _MaximumQuery('id')
- highestId = @get(query)
-
- if angular.isDefined(highestId)
- return highestId.id
- else
- return 0
-
-
- getLowestId: ->
- query = new _MinimumQuery('id')
- lowestId = @get(query)
-
- if angular.isDefined(lowestId)
- return lowestId.id
- else
- return 0
-
-
-
return new ItemModel()
] \ No newline at end of file
diff --git a/js/app/services/newestitem.coffee b/js/app/services/newestitem.coffee
new file mode 100644
index 000000000..3afa9b079
--- /dev/null
+++ b/js/app/services/newestitem.coffee
@@ -0,0 +1,39 @@
+###
+
+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 'NewestItem', ->
+
+ class NewestItem
+
+ constructor: ->
+ @_id = 0
+
+
+ handle: (data) ->
+ @_id = data
+
+
+ getId: ->
+ return @_id
+
+
+ return new NewestItem()
diff --git a/js/app/services/persistence.coffee b/js/app/services/persistence.coffee
index 188f5a7c7..8eea196db 100644
--- a/js/app/services/persistence.coffee
+++ b/js/app/services/persistence.coffee
@@ -51,7 +51,7 @@ $rootScope) ->
###
ITEM CONTROLLER
###
- getItems: (type, id, offset, onSuccess=null, updatedSince=null) ->
+ getItems: (type, id, offset, newestItemId=0, onSuccess=null) ->
onSuccess or= ->
# show different loading signs
@@ -68,20 +68,13 @@ $rootScope) ->
failureCallbackWrapper = (data) =>
loading.decrease()
- if updatedSince != null
- data =
- updatedSince: updatedSince
- type: type
- id: id
- else
- data =
+ params =
+ data:
limit: @_config.itemBatchSize
offset: offset
id: id
type: type
-
- params =
- data: data
+ newestItemId: newestItemId
onSuccess: successCallbackWrapper
onFailure: failureCallbackWrapper
diff --git a/js/app/services/services.coffee b/js/app/services/services.coffee
index 537a4492c..fa600b517 100644
--- a/js/app/services/services.coffee
+++ b/js/app/services/services.coffee
@@ -45,9 +45,9 @@ angular.module('News').factory 'NewLoading', ['_Loading', (_Loading) ->
angular.module('News').factory 'Publisher',
['_Publisher', 'ActiveFeed', 'ShowAll', 'StarredCount', 'ItemModel',
-'FolderModel', 'FeedModel', 'Language',
+'FolderModel', 'FeedModel', 'Language', 'NewestItem',
(_Publisher, ActiveFeed, ShowAll, StarredCount, ItemModel,
-FolderModel, FeedModel, Language) ->
+FolderModel, FeedModel, Language, NewestItem) ->
# register items at publisher to automatically add incoming items
publisher = new _Publisher()
@@ -58,6 +58,7 @@ FolderModel, FeedModel, Language) ->
publisher.subscribeObjectTo(FolderModel, 'folders')
publisher.subscribeObjectTo(FeedModel, 'feeds')
publisher.subscribeObjectTo(ItemModel, 'items')
+ publisher.subscribeObjectTo(NewestItem, 'newestItemId')
return publisher
]