From 4fb60a6ec6d8e6cbd9a2507d255435ed5a1cdbae Mon Sep 17 00:00:00 2001 From: Tyler Gebhard Date: Sat, 1 Nov 2014 02:10:31 -0400 Subject: [PATCH] The "Mark Read" button now only marks the visible entries as read, instead of the entire feed regardless of what keywords you've entered. This should allow better management of RSS feeds, if you don't want to ever look at any content which has certain keywords in it. --- src/main/app/js/controllers.js | 2 ++ .../java/com/commafeed/backend/service/FeedEntryService.java | 4 ++-- .../com/commafeed/frontend/model/request/MarkRequest.java | 3 +++ .../java/com/commafeed/frontend/resource/CategoryREST.java | 5 +++-- src/main/java/com/commafeed/frontend/resource/FeedREST.java | 3 ++- 5 files changed, 12 insertions(+), 5 deletions(-) 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(); }