diff --git a/src/main/java/com/commafeed/frontend/rest/resources/EntriesREST.java b/src/main/java/com/commafeed/frontend/rest/resources/EntriesREST.java index 9b7d3a0b..7d23b85d 100644 --- a/src/main/java/com/commafeed/frontend/rest/resources/EntriesREST.java +++ b/src/main/java/com/commafeed/frontend/rest/resources/EntriesREST.java @@ -20,23 +20,39 @@ import com.commafeed.backend.model.FeedSubscription; import com.commafeed.frontend.model.Entries; import com.commafeed.frontend.model.Entry; import com.commafeed.frontend.utils.ModelFactory.MF; +import com.google.common.base.Preconditions; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; @Path("entries") public class EntriesREST extends AbstractREST { - @Path("get/{type}/{id}/{readType}") + private static final String ALL = "all"; + + public enum Type { + category, feed; + } + + public enum ReadType { + all, unread; + } + + @Path("get") @GET - public Entries getEntries(@PathParam("type") String type, - @PathParam("id") String id, @PathParam("readType") String readType, + public Entries getEntries(@QueryParam("type") Type type, + @QueryParam("id") String id, + @QueryParam("readType") ReadType readType, @DefaultValue("0") @QueryParam("offset") int offset, @DefaultValue("-1") @QueryParam("limit") int limit) { - Entries entries = new Entries(); - boolean unreadOnly = "unread".equals(readType); + Preconditions.checkNotNull(type); + Preconditions.checkNotNull(id); + Preconditions.checkNotNull(readType); - if ("feed".equals(type)) { + Entries entries = new Entries(); + boolean unreadOnly = readType == ReadType.unread; + + if (type == Type.feed) { FeedSubscription subscription = feedSubscriptionService.findById( getUser(), Long.valueOf(id)); entries.setName(subscription.getTitle()); @@ -44,13 +60,13 @@ public class EntriesREST extends AbstractREST { buildEntries(subscription, offset, limit, unreadOnly)); } else { - FeedCategory feedCategory = "all".equals(id) ? null + FeedCategory feedCategory = ALL.equals(id) ? null : feedCategoryService.findById(getUser(), Long.valueOf(id)); - Collection subscriptions = "all".equals(id) ? feedSubscriptionService + Collection subscriptions = ALL.equals(id) ? feedSubscriptionService .findAll(getUser()) : feedSubscriptionService .findWithCategory(getUser(), feedCategory); - entries.setName("all".equals(id) ? "All" : feedCategory.getName()); + entries.setName(ALL.equals(id) ? ALL : feedCategory.getName()); for (FeedSubscription subscription : subscriptions) { entries.getEntries().addAll( buildEntries(subscription, offset, limit, unreadOnly)); @@ -67,11 +83,9 @@ public class EntriesREST extends AbstractREST { if (limit > -1) { int size = entries.getEntries().size(); - System.out.println(size); int to = Math.min(size, limit); List subList = entries.getEntries().subList(0, to); entries.setEntries(Lists.newArrayList(subList)); - System.out.println(entries.getEntries().size()); } return entries; } diff --git a/src/main/webapp/js/controllers.js b/src/main/webapp/js/controllers.js index 670bd76c..72f6c415 100644 --- a/src/main/webapp/js/controllers.js +++ b/src/main/webapp/js/controllers.js @@ -104,29 +104,34 @@ module.controller('FeedListCtrl', function($scope, $routeParams, $http, $scope.limit = 10; $scope.busy = false; + $scope.hasMore = true; $scope.refreshList = function() { if ($scope.settings.readingMode) { $scope.entryList = EntryService.get({ - _type : $scope.selectedType, - _id : $scope.selectedId, - _readtype : $scope.settings.readingMode, + type : $scope.selectedType, + id : $scope.selectedId, + readType : $scope.settings.readingMode, offset : 0, - limit : $scope.limit + limit : 30 }); } }; $scope.loadMoreEntries = function() { + if(!$scope.hasMore) + return; + if (!$scope.entryList || !$scope.entryList.entries) + return; if ($scope.busy) return; if (!$scope.settings.readingMode) return; $scope.busy = true; EntryService.get({ - _type : $scope.selectedType, - _id : $scope.selectedId, - _readtype : $scope.settings.readingMode, + type : $scope.selectedType, + id : $scope.selectedId, + readType : $scope.settings.readingMode, offset : $scope.entryList.entries.length, limit : $scope.limit }, function(data) { @@ -135,9 +140,8 @@ module.controller('FeedListCtrl', function($scope, $routeParams, $http, for ( var i = 0; i < entries.length; i++) { $scope.entryList.entries.push(entries[i]); } - console.log(entries.length) - console.log($scope.limit) $scope.busy = false; + $scope.hasMore = entries.length == $scope.limit }); } diff --git a/src/main/webapp/js/services.js b/src/main/webapp/js/services.js index 213d11f7..d1010607 100644 --- a/src/main/webapp/js/services.js +++ b/src/main/webapp/js/services.js @@ -78,7 +78,7 @@ module.factory('EntryService', [ } } }; - res = $resource('rest/entries/:_method/:_type/:_id/:_readtype', {}, + res = $resource('rest/entries/:_method', {}, actions); return res; } ]); diff --git a/src/main/webapp/templates/feeds.html b/src/main/webapp/templates/feeds.html index 6408f023..7dab4a9d 100644 --- a/src/main/webapp/templates/feeds.html +++ b/src/main/webapp/templates/feeds.html @@ -2,8 +2,8 @@ {{readType}} {{entryList.name}} » -
-
+
+