diff options
author | Tom Hennen <tom.hennen@gmail.com> | 2015-09-05 12:52:48 -0400 |
---|---|---|
committer | Tom Hennen <tom.hennen@gmail.com> | 2015-09-05 12:52:48 -0400 |
commit | e6202c57fcd47fd14203d9528a801673d1a433d1 (patch) | |
tree | 94a841db872f154877484df9f51d6759bc7aefc5 /core/src/main/java/de | |
parent | b9c14b385ff81e602d90a6028a4ce6e6316f3a74 (diff) | |
download | AntennaPod-e6202c57fcd47fd14203d9528a801673d1a433d1.zip |
Resolve old episodes being marked as new.
fixes AntennaPod/AntennaPod#1009 (I hope)
Diffstat (limited to 'core/src/main/java/de')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java index df9f3281a..6ed99ec41 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java @@ -514,22 +514,27 @@ public final class DBTasks { Collections.sort(newFeed.getItems(), new FeedItemPubdateComparator()); - final boolean markNewItems; if (newFeed.getPageNr() == savedFeed.getPageNr()) { if (savedFeed.compareWithOther(newFeed)) { Log.d(TAG, "Feed has updated attribute values. Updating old feed's attributes"); savedFeed.updateFromOther(newFeed); } - markNewItems = true; } else { - Log.d(TAG, "New feed has a higher page number. Merging without marking as unread"); - markNewItems = false; + Log.d(TAG, "New feed has a higher page number."); savedFeed.setNextPageLink(newFeed.getNextPageLink()); } if (savedFeed.getPreferences().compareWithOther(newFeed.getPreferences())) { Log.d(TAG, "Feed has updated preferences. Updating old feed's preferences"); savedFeed.getPreferences().updateFromOther(newFeed.getPreferences()); } + + // get the most recent date now, before we start changing the list + FeedItem priorMostRecent = savedFeed.getMostRecentItem(); + Date priorMostRecentDate = null; + if (priorMostRecent != null) { + priorMostRecentDate = priorMostRecent.getPubDate(); + } + // Look for new or updated Items for (int idx = 0; idx < newFeed.getItems().size(); idx++) { final FeedItem item = newFeed.getItems().get(idx); @@ -540,7 +545,15 @@ public final class DBTasks { item.setFeed(savedFeed); item.setAutoDownload(savedFeed.getPreferences().getAutoDownload()); savedFeed.getItems().add(idx, item); - if (markNewItems) { + + // only mark the item new if it actually occurs + // before the most recent item (before we started adding things) + // (if the most recent date is null then we can assume there are no items + // and this is the first, hence 'new') + if (priorMostRecentDate == null || + priorMostRecentDate.before(item.getPubDate())) { + Log.d(TAG, "Marking item published on " + item.getPubDate() + + " new, prior most recent date = " + priorMostRecentDate); item.setNew(); } } else { |