diff --git a/src/main/app/js/controllers.js b/src/main/app/js/controllers.js index 35e2daa3..7ae8d904 100644 --- a/src/main/app/js/controllers.js +++ b/src/main/app/js/controllers.js @@ -489,6 +489,7 @@ module.controller('ToolbarCtrl', [ type : $stateParams._type, id : $stateParams._id, olderThan : olderThan, + keywords: $location.search().q, read : true }); }; @@ -881,6 +882,7 @@ module.controller('FeedListCtrl', [ service.mark({ id : $scope.selectedId, olderThan : olderThan || $scope.timestamp, + keywords: $location.search().q, read : true }, function() { CategoryService.refresh(function() { diff --git a/src/main/java/com/commafeed/backend/service/FeedEntryService.java b/src/main/java/com/commafeed/backend/service/FeedEntryService.java index e3d0f4ed..a3c5fbfc 100644 --- a/src/main/java/com/commafeed/backend/service/FeedEntryService.java +++ b/src/main/java/com/commafeed/backend/service/FeedEntryService.java @@ -65,8 +65,8 @@ public class FeedEntryService { feedEntryStatusDAO.saveOrUpdate(status); } - public void markSubscriptionEntries(User user, List subscriptions, Date olderThan) { - List statuses = feedEntryStatusDAO.findBySubscriptions(user, subscriptions, true, null, null, -1, -1, null, false, + public void markSubscriptionEntries(User user, List subscriptions, Date olderThan, String keywords) { + List statuses = feedEntryStatusDAO.findBySubscriptions(user, subscriptions, true, keywords, null, -1, -1, null, false, false, null); markList(statuses, olderThan); cache.invalidateUnreadCount(subscriptions.toArray(new FeedSubscription[0])); diff --git a/src/main/java/com/commafeed/frontend/model/request/MarkRequest.java b/src/main/java/com/commafeed/frontend/model/request/MarkRequest.java index fa12fd0d..2208f069 100644 --- a/src/main/java/com/commafeed/frontend/model/request/MarkRequest.java +++ b/src/main/java/com/commafeed/frontend/model/request/MarkRequest.java @@ -24,6 +24,9 @@ public class MarkRequest implements Serializable { required = false) private Long olderThan; + @ApiModelProperty(value = "only mark read if a feed has these keywords in the title or rss content", required = false) + private String keywords; + @ApiModelProperty(value = "if marking a category or 'all', exclude those subscriptions from the marking", required = false) private List excludedSubscriptions; diff --git a/src/main/java/com/commafeed/frontend/resource/CategoryREST.java b/src/main/java/com/commafeed/frontend/resource/CategoryREST.java index 73a5659a..82996b58 100644 --- a/src/main/java/com/commafeed/frontend/resource/CategoryREST.java +++ b/src/main/java/com/commafeed/frontend/resource/CategoryREST.java @@ -243,11 +243,12 @@ public class CategoryREST { Preconditions.checkNotNull(req.getId()); Date olderThan = req.getOlderThan() == null ? null : new Date(req.getOlderThan()); + String keywords = req.getKeywords(); if (ALL.equals(req.getId())) { List subs = feedSubscriptionDAO.findAll(user); removeExcludedSubscriptions(subs, req.getExcludedSubscriptions()); - feedEntryService.markSubscriptionEntries(user, subs, olderThan); + feedEntryService.markSubscriptionEntries(user, subs, olderThan, keywords); } else if (STARRED.equals(req.getId())) { feedEntryService.markStarredEntries(user, olderThan); } else { @@ -255,7 +256,7 @@ public class CategoryREST { List categories = feedCategoryDAO.findAllChildrenCategories(user, parent); List subs = feedSubscriptionDAO.findByCategories(user, categories); removeExcludedSubscriptions(subs, req.getExcludedSubscriptions()); - feedEntryService.markSubscriptionEntries(user, subs, olderThan); + feedEntryService.markSubscriptionEntries(user, subs, olderThan, keywords); } return Response.ok().build(); } diff --git a/src/main/java/com/commafeed/frontend/resource/FeedREST.java b/src/main/java/com/commafeed/frontend/resource/FeedREST.java index 7dc5cbba..bb794661 100644 --- a/src/main/java/com/commafeed/frontend/resource/FeedREST.java +++ b/src/main/java/com/commafeed/frontend/resource/FeedREST.java @@ -287,10 +287,11 @@ public class FeedREST { Preconditions.checkNotNull(req.getId()); Date olderThan = req.getOlderThan() == null ? null : new Date(req.getOlderThan()); + String keywords = req.getKeywords(); FeedSubscription subscription = feedSubscriptionDAO.findById(user, Long.valueOf(req.getId())); if (subscription != null) { - feedEntryService.markSubscriptionEntries(user, Arrays.asList(subscription), olderThan); + feedEntryService.markSubscriptionEntries(user, Arrays.asList(subscription), olderThan, keywords); } return Response.ok().build(); }