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 67785220..6effa592 100644 --- a/src/main/java/com/commafeed/frontend/rest/resources/EntriesREST.java +++ b/src/main/java/com/commafeed/frontend/rest/resources/EntriesREST.java @@ -149,13 +149,26 @@ public class EntriesREST extends AbstractREST { } else if (type == Type.feed) { Feed feed = feedSubscriptionService.findById(Long.valueOf(id)) .getFeed(); - if (read) { - List entries = feedEntryService - .getEntries(feed, getUser(), false); - for (FeedEntryWithStatus entry : entries) { - markEntry(entry.getEntry(), true); - } + List entries = feedEntryService.getEntries( + feed, getUser(), false); + for (FeedEntryWithStatus entry : entries) { + markEntry(entry, read); } + } else if (type == Type.category) { + FeedCategory feedCategory = null; + if (!ALL.equals(id)) { + feedCategory = feedCategoryService.findById(getUser(), + Long.valueOf(id)); + } + List childrenCategories = feedCategoryService + .findAllChildrenCategories(getUser(), feedCategory); + + List entries = feedEntryService.getEntries( + childrenCategories, getUser(), false); + for (FeedEntryWithStatus entry : entries) { + markEntry(entry, true); + } + } return Response.ok(Status.OK).build(); } @@ -172,4 +185,15 @@ public class EntriesREST extends AbstractREST { feedEntryStatusService.saveOrUpdate(status); } + private void markEntry(FeedEntryWithStatus entryWithStatus, boolean read) { + FeedEntryStatus status = entryWithStatus.getStatus(); + if (status == null) { + status = new FeedEntryStatus(); + status.setUser(getUser()); + status.setEntry(entryWithStatus.getEntry()); + } + status.setRead(read); + feedEntryStatusService.saveOrUpdate(status); + } + }