diff options
author | Matej Drobnič <matej@matejdro.com> | 2024-02-25 16:11:30 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-25 16:11:30 +0100 |
commit | 7332c04631ee689c309363f17f14c4a6ed469c39 (patch) | |
tree | c4220e18d75e90f00bfde6ad973fed1e6c7ae2c5 /core/src/main | |
parent | a7068cc24a2e943fe7885369c34020e7ba02c7e0 (diff) | |
download | AntennaPod-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.java | 36 | ||||
-rw-r--r-- | core/src/main/res/values/arrays.xml | 4 |
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> |