diff options
author | ByteHamster <ByteHamster@users.noreply.github.com> | 2024-03-24 17:57:00 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-24 17:57:00 +0100 |
commit | 084b9c231744a5657a620087b4b560db38b66ab8 (patch) | |
tree | f02efc603867831c7dc89e0db969cdf561904e5c /core/src | |
parent | 5218e06904e489f77da4078de775dd0a63b94ef4 (diff) | |
download | AntennaPod-084b9c231744a5657a620087b4b560db38b66ab8.zip |
Store last refresh attempt for feeds (#7022)
Diffstat (limited to 'core/src')
7 files changed, 23 insertions, 65 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateWorker.java b/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateWorker.java index 5e864c5c0..3eb69228e 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateWorker.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateWorker.java @@ -23,7 +23,7 @@ import de.danoeh.antennapod.core.service.download.DefaultDownloaderFactory; import de.danoeh.antennapod.core.service.download.DownloadRequestCreator; import de.danoeh.antennapod.core.service.download.Downloader; import de.danoeh.antennapod.core.service.download.NewEpisodesNotification; -import de.danoeh.antennapod.core.service.download.handler.FeedSyncTask; +import de.danoeh.antennapod.core.service.download.handler.FeedParserTask; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBTasks; import de.danoeh.antennapod.core.storage.DBWriter; @@ -35,6 +35,7 @@ import de.danoeh.antennapod.model.feed.Feed; import de.danoeh.antennapod.model.download.DownloadRequest; import de.danoeh.antennapod.net.download.serviceinterface.DownloadRequestBuilder; +import de.danoeh.antennapod.parser.feed.FeedHandlerResult; import de.danoeh.antennapod.ui.notifications.NotificationUtils; import java.util.ArrayList; import java.util.Collections; @@ -190,29 +191,30 @@ public class FeedUpdateWorker extends Worker { return; } - FeedSyncTask feedSyncTask = new FeedSyncTask(getApplicationContext(), request); - boolean success = feedSyncTask.run(); - - if (!success) { + FeedParserTask parserTask = new FeedParserTask(request); + FeedHandlerResult feedHandlerResult = parserTask.call(); + if (!parserTask.isSuccessful()) { DBWriter.setFeedLastUpdateFailed(request.getFeedfileId(), true); - DBWriter.addDownloadStatus(feedSyncTask.getDownloadStatus()); + DBWriter.addDownloadStatus(parserTask.getDownloadStatus()); return; } + feedHandlerResult.feed.setLastRefreshAttempt(System.currentTimeMillis()); + Feed savedFeed = DBTasks.updateFeed(getApplicationContext(), feedHandlerResult.feed, false); if (request.getFeedfileId() == 0) { return; // No download logs for new subscriptions } // we create a 'successful' download log if the feed's last refresh failed List<DownloadResult> log = DBReader.getFeedDownloadLog(request.getFeedfileId()); - if (log.size() > 0 && !log.get(0).isSuccessful()) { - DBWriter.addDownloadStatus(feedSyncTask.getDownloadStatus()); + if (!log.isEmpty() && !log.get(0).isSuccessful()) { + DBWriter.addDownloadStatus(parserTask.getDownloadStatus()); } - newEpisodesNotification.showIfNeeded(getApplicationContext(), feedSyncTask.getSavedFeed()); + newEpisodesNotification.showIfNeeded(getApplicationContext(), savedFeed); if (downloader.permanentRedirectUrl != null) { DBWriter.updateFeedDownloadURL(request.getSource(), downloader.permanentRedirectUrl); - } else if (feedSyncTask.getRedirectUrl() != null - && !feedSyncTask.getRedirectUrl().equals(request.getSource())) { - DBWriter.updateFeedDownloadURL(request.getSource(), feedSyncTask.getRedirectUrl()); + } else if (feedHandlerResult.redirectUrl != null + && !feedHandlerResult.redirectUrl.equals(request.getSource())) { + DBWriter.updateFeedDownloadURL(request.getSource(), feedHandlerResult.redirectUrl); } } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java index b96b2723c..37775ab94 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java @@ -41,7 +41,6 @@ public class FeedParserTask implements Callable<FeedHandlerResult> { Feed feed = new Feed(request.getSource(), request.getLastModified()); feed.setLocalFileUrl(request.getDestination()); feed.setId(request.getFeedfileId()); - feed.setDownloaded(true); feed.setPreferences(new FeedPreferences(0, true, FeedPreferences.AutoDeleteAction.GLOBAL, VolumeAdaptionSetting.OFF, FeedPreferences.NewEpisodesAction.GLOBAL, request.getUsername(), request.getPassword())); diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedSyncTask.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedSyncTask.java deleted file mode 100644 index 03d7ab6ec..000000000 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedSyncTask.java +++ /dev/null @@ -1,44 +0,0 @@ -package de.danoeh.antennapod.core.service.download.handler; - -import android.content.Context; -import androidx.annotation.NonNull; -import de.danoeh.antennapod.core.storage.DBTasks; -import de.danoeh.antennapod.model.download.DownloadResult; -import de.danoeh.antennapod.model.feed.Feed; -import de.danoeh.antennapod.model.download.DownloadRequest; -import de.danoeh.antennapod.parser.feed.FeedHandlerResult; - -public class FeedSyncTask { - private final Context context; - private Feed savedFeed; - private final FeedParserTask task; - private FeedHandlerResult feedHandlerResult; - - public FeedSyncTask(Context context, DownloadRequest request) { - this.context = context; - this.task = new FeedParserTask(request); - } - - public boolean run() { - feedHandlerResult = task.call(); - if (!task.isSuccessful()) { - return false; - } - - savedFeed = DBTasks.updateFeed(context, feedHandlerResult.feed, false); - return true; - } - - @NonNull - public DownloadResult getDownloadStatus() { - return task.getDownloadStatus(); - } - - public Feed getSavedFeed() { - return savedFeed; - } - - public String getRedirectUrl() { - return feedHandlerResult.redirectUrl; - } -} diff --git a/core/src/test/java/de/danoeh/antennapod/core/feed/FeedMother.java b/core/src/test/java/de/danoeh/antennapod/core/feed/FeedMother.java index b1f3fca27..7616f8f91 100644 --- a/core/src/test/java/de/danoeh/antennapod/core/feed/FeedMother.java +++ b/core/src/test/java/de/danoeh/antennapod/core/feed/FeedMother.java @@ -8,7 +8,7 @@ public class FeedMother { public static Feed anyFeed() { return new Feed(0, null, "title", "http://example.com", "This is the description", "http://example.com/payment", "Daniel", "en", null, "http://example.com/feed", IMAGE_URL, - null, "http://example.com/feed", true); + null, "http://example.com/feed", System.currentTimeMillis()); } } diff --git a/core/src/test/java/de/danoeh/antennapod/core/storage/DbReaderTest.java b/core/src/test/java/de/danoeh/antennapod/core/storage/DbReaderTest.java index 6195ef714..54b4e507c 100644 --- a/core/src/test/java/de/danoeh/antennapod/core/storage/DbReaderTest.java +++ b/core/src/test/java/de/danoeh/antennapod/core/storage/DbReaderTest.java @@ -80,10 +80,11 @@ public class DbReaderTest { PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); - Feed feed1 = new Feed(0, null, "A", "link", "d", null, null, null, "rss", "A", null, "", "", true); - Feed feed2 = new Feed(0, null, "b", "link", "d", null, null, null, "rss", "b", null, "", "", true); - Feed feed3 = new Feed(0, null, "C", "link", "d", null, null, null, "rss", "C", null, "", "", true); - Feed feed4 = new Feed(0, null, "d", "link", "d", null, null, null, "rss", "d", null, "", "", true); + final long lastRefreshed = System.currentTimeMillis(); + Feed feed1 = new Feed(0, null, "A", "link", "d", null, null, null, "rss", "A", null, "", "", lastRefreshed); + Feed feed2 = new Feed(0, null, "b", "link", "d", null, null, null, "rss", "b", null, "", "", lastRefreshed); + Feed feed3 = new Feed(0, null, "C", "link", "d", null, null, null, "rss", "C", null, "", "", lastRefreshed); + Feed feed4 = new Feed(0, null, "d", "link", "d", null, null, null, "rss", "d", null, "", "", lastRefreshed); adapter.setCompleteFeed(feed1); adapter.setCompleteFeed(feed2); adapter.setCompleteFeed(feed3); diff --git a/core/src/test/java/de/danoeh/antennapod/core/storage/DbTestUtils.java b/core/src/test/java/de/danoeh/antennapod/core/storage/DbTestUtils.java index 3a3213a37..84a6efb6a 100644 --- a/core/src/test/java/de/danoeh/antennapod/core/storage/DbTestUtils.java +++ b/core/src/test/java/de/danoeh/antennapod/core/storage/DbTestUtils.java @@ -43,7 +43,7 @@ abstract class DbTestUtils { adapter.open(); for (int i = 0; i < numFeeds; i++) { Feed f = new Feed(0, null, "feed " + i, "link" + i, "descr", null, null, - null, null, "id" + i, null, null, "url" + i, false); + null, null, "id" + i, null, null, "url" + i, System.currentTimeMillis()); f.setItems(new ArrayList<>()); for (int j = 0; j < numItems; j++) { FeedItem item = new FeedItem(0, "item " + j, "id" + j, "link" + j, new Date(), diff --git a/core/src/test/java/de/danoeh/antennapod/core/storage/mapper/FeedCursorMapperTest.java b/core/src/test/java/de/danoeh/antennapod/core/storage/mapper/FeedCursorMapperTest.java index 24f65744e..87ade0c6f 100644 --- a/core/src/test/java/de/danoeh/antennapod/core/storage/mapper/FeedCursorMapperTest.java +++ b/core/src/test/java/de/danoeh/antennapod/core/storage/mapper/FeedCursorMapperTest.java @@ -55,7 +55,7 @@ public class FeedCursorMapperTest { assertEquals("feed image url", feed.getImageUrl()); assertEquals("feed file url", feed.getLocalFileUrl()); assertEquals("feed download url", feed.getDownloadUrl()); - assertTrue(feed.isDownloaded()); + assertEquals(42, feed.getLastRefreshAttempt()); assertEquals("feed last update", feed.getLastModified()); assertEquals("feed type", feed.getType()); assertEquals("feed identifier", feed.getFeedIdentifier()); @@ -85,7 +85,7 @@ public class FeedCursorMapperTest { values.put(PodDBAdapter.KEY_FILE_URL, "feed file url"); values.put(PodDBAdapter.KEY_DOWNLOAD_URL, "feed download url"); - values.put(PodDBAdapter.KEY_DOWNLOADED, true); + values.put(PodDBAdapter.KEY_LAST_REFRESH_ATTEMPT, 42); values.put(PodDBAdapter.KEY_LASTUPDATE, "feed last update"); values.put(PodDBAdapter.KEY_TYPE, "feed type"); values.put(PodDBAdapter.KEY_FEED_IDENTIFIER, "feed identifier"); |