summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java17
1 files changed, 14 insertions, 3 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 8b0c4ed75..06f7f9657 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
@@ -24,6 +24,7 @@ import de.danoeh.antennapod.core.sync.SyncService;
import de.danoeh.antennapod.core.util.DownloadError;
import de.danoeh.antennapod.core.util.LongList;
import de.danoeh.antennapod.core.util.comparator.FeedItemPubdateComparator;
+import de.danoeh.antennapod.net.sync.model.EpisodeAction;
import org.greenrobot.eventbus.EventBus;
import java.util.ArrayList;
@@ -337,7 +338,7 @@ public final class DBTasks {
* Get a FeedItem by its identifying value or download_url.
* For de-duplicating items that are not stored yet, see also FeedHandler.dedupItems
*/
- private static FeedItem searchFeedItemByIdentifyingValue(Feed feed, FeedItem searchItem) {
+ private static FeedItem searchFeedItemByIdentifyingValue(Context context, Feed feed, FeedItem searchItem) {
for (FeedItem item : feed.getItems()) {
if (TextUtils.equals(item.getIdentifyingValue(), searchItem.getIdentifyingValue())) {
return item;
@@ -364,6 +365,16 @@ public final class DBTasks {
"The podcast host changed the ID of an existing episode instead of just "
+ "updating the episode itself. AntennaPod attempted to repair it.", false));
item.setItemIdentifier(searchItem.getItemIdentifier());
+
+ if (item.isPlayed() && item.getMedia() != null) {
+ EpisodeAction action = new EpisodeAction.Builder(item, EpisodeAction.PLAY)
+ .currentTimestamp()
+ .started(item.getMedia().getDuration() / 1000)
+ .position(item.getMedia().getDuration() / 1000)
+ .total(item.getMedia().getDuration() / 1000)
+ .build();
+ SyncService.enqueueEpisodeAction(context, action);
+ }
return item;
}
}
@@ -436,7 +447,7 @@ public final class DBTasks {
// Look for new or updated Items
for (int idx = 0; idx < newFeed.getItems().size(); idx++) {
final FeedItem item = newFeed.getItems().get(idx);
- FeedItem oldItem = searchFeedItemByIdentifyingValue(savedFeed, item);
+ FeedItem oldItem = searchFeedItemByIdentifyingValue(context, savedFeed, item);
if (oldItem == null) {
// item is new
item.setFeed(savedFeed);
@@ -469,7 +480,7 @@ public final class DBTasks {
Iterator<FeedItem> it = savedFeed.getItems().iterator();
while (it.hasNext()) {
FeedItem feedItem = it.next();
- if (searchFeedItemByIdentifyingValue(newFeed, feedItem) == null) {
+ if (searchFeedItemByIdentifyingValue(context, newFeed, feedItem) == null) {
unlistedItems.add(feedItem);
it.remove();
}