summaryrefslogtreecommitdiff
path: root/core/src/main
diff options
context:
space:
mode:
authorMatej Drobnič <matej@matejdro.com>2024-02-25 16:11:30 +0100
committerGitHub <noreply@github.com>2024-02-25 16:11:30 +0100
commit7332c04631ee689c309363f17f14c4a6ed469c39 (patch)
treec4220e18d75e90f00bfde6ad973fed1e6c7ae2c5 /core/src/main
parenta7068cc24a2e943fe7885369c34020e7ba02c7e0 (diff)
downloadAntennaPod-7332c04631ee689c309363f17f14c4a6ed469c39.zip
Add option to add new episodes to queue (#6855)
Diffstat (limited to 'core/src/main')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java36
-rw-r--r--core/src/main/res/values/arrays.xml4
2 files changed, 28 insertions, 12 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 d6a4fa1cb..840ce65f6 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
@@ -197,6 +197,7 @@ public final class DBTasks {
public static synchronized Feed updateFeed(Context context, Feed newFeed, boolean removeUnlistedItems) {
Feed resultFeed;
List<FeedItem> unlistedItems = new ArrayList<>();
+ List<FeedItem> itemsToAddToQueue = new ArrayList<>();
PodDBAdapter adapter = PodDBAdapter.getInstance();
adapter.open();
@@ -290,18 +291,26 @@ public final class DBTasks {
savedFeed.getItems().add(idx, item);
}
- FeedPreferences.NewEpisodesAction action = savedFeed.getPreferences().getNewEpisodesAction();
- if (action == FeedPreferences.NewEpisodesAction.GLOBAL) {
- action = UserPreferences.getNewEpisodesAction();
- }
- if (action == FeedPreferences.NewEpisodesAction.ADD_TO_INBOX
- && (item.getPubDate() == null
- || priorMostRecentDate == null
- || priorMostRecentDate.before(item.getPubDate())
- || priorMostRecentDate.equals(item.getPubDate()))) {
- Log.d(TAG, "Marking item published on " + item.getPubDate()
- + " new, prior most recent date = " + priorMostRecentDate);
- item.setNew();
+ if (item.getPubDate() == null
+ || priorMostRecentDate == null
+ || priorMostRecentDate.before(item.getPubDate())
+ || priorMostRecentDate.equals(item.getPubDate())) {
+ Log.d(TAG, "Performing new episode action for item published on " + item.getPubDate()
+ + ", prior most recent date = " + priorMostRecentDate);
+ FeedPreferences.NewEpisodesAction action = savedFeed.getPreferences().getNewEpisodesAction();
+ if (action == FeedPreferences.NewEpisodesAction.GLOBAL) {
+ action = UserPreferences.getNewEpisodesAction();
+ }
+ switch (action) {
+ case ADD_TO_INBOX:
+ item.setNew();
+ break;
+ case ADD_TO_QUEUE:
+ itemsToAddToQueue.add(item);
+ break;
+ default:
+ break;
+ }
}
}
}
@@ -341,6 +350,9 @@ public final class DBTasks {
e.printStackTrace();
}
+ // We need to add to queue after items are saved to database
+ DBWriter.addQueueItem(context, itemsToAddToQueue.toArray(new FeedItem[0]));
+
adapter.close();
if (savedFeed != null) {
diff --git a/core/src/main/res/values/arrays.xml b/core/src/main/res/values/arrays.xml
index 2961339cd..a4f5d7f38 100644
--- a/core/src/main/res/values/arrays.xml
+++ b/core/src/main/res/values/arrays.xml
@@ -55,23 +55,27 @@
<string-array name="globalNewEpisodesActionItems">
<item>@string/feed_new_episodes_action_add_to_inbox</item>
+ <item>@string/feed_new_episodes_action_add_to_queue</item>
<item>@string/feed_new_episodes_action_nothing</item>
</string-array>
<string-array name="globalNewEpisodesActionValues">
<item>1</item>
+ <item>3</item>
<item>2</item>
</string-array>
<string-array name="feedNewEpisodesActionItems">
<item>@string/global_default</item>
<item>@string/feed_new_episodes_action_add_to_inbox</item>
+ <item>@string/feed_new_episodes_action_add_to_queue</item>
<item>@string/feed_new_episodes_action_nothing</item>
</string-array>
<string-array name="feedNewEpisodesActionValues">
<item>0</item>
<item>1</item>
+ <item>3</item>
<item>2</item>
</string-array>