Skip to content

Commit

Permalink
Add episodes without subscribing
Browse files Browse the repository at this point in the history
Adding episodes to the queue without subscribing is a long running
feature request. Doing this does not really make sense
on a distributed podcast app. However, to make these people happy,
subscribe to the feed internally anyway and just tell them that
it is not subscribed.
  • Loading branch information
ByteHamster committed Apr 14, 2024
1 parent e9b3cc3 commit 25d5298
Show file tree
Hide file tree
Showing 30 changed files with 284 additions and 379 deletions.
Expand Up @@ -16,6 +16,7 @@

import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.model.feed.Feed;
import de.danoeh.antennapod.net.sync.serviceinterface.SynchronizationQueueSink;
import de.danoeh.antennapod.storage.preferences.PlaybackPreferences;
import de.danoeh.antennapod.playback.service.PlaybackServiceInterface;
Expand Down Expand Up @@ -158,7 +159,8 @@ public static boolean onMenuItemClicked(@NonNull Fragment fragment, int menuItem
} else if (menuItemId == R.id.mark_read_item) {
selectedItem.setPlayed(true);
DBWriter.markItemPlayed(selectedItem, FeedItem.PLAYED, true);
if (!selectedItem.getFeed().isLocalFeed() && SynchronizationSettings.isProviderConnected()) {
if (!selectedItem.getFeed().isLocalFeed() && selectedItem.getFeed().getState() == Feed.STATE_SUBSCRIBED
&& SynchronizationSettings.isProviderConnected()) {
FeedMedia media = selectedItem.getMedia();
// not all items have media, Gpodder only cares about those that do
if (media != null) {
Expand All @@ -174,7 +176,8 @@ public static boolean onMenuItemClicked(@NonNull Fragment fragment, int menuItem
} else if (menuItemId == R.id.mark_unread_item) {
selectedItem.setPlayed(false);
DBWriter.markItemPlayed(selectedItem, FeedItem.UNPLAYED, false);
if (!selectedItem.getFeed().isLocalFeed() && selectedItem.getMedia() != null) {
if (!selectedItem.getFeed().isLocalFeed() && selectedItem.getMedia() != null
&& selectedItem.getFeed().getState() == Feed.STATE_SUBSCRIBED) {

Check failure on line 180 in app/src/main/java/de/danoeh/antennapod/ui/episodeslist/FeedItemMenuHandler.java

View workflow job for this annotation

GitHub Actions / Static Code Analysis

Checkstyle

'&&' has incorrect indentation level 16, expected level should be 20.
EpisodeAction actionNew = new EpisodeAction.Builder(selectedItem, EpisodeAction.NEW)
.currentTimestamp()
.build();
Expand Down
Expand Up @@ -297,7 +297,8 @@ private void loadItems() {
disposable = Observable.fromCallable(() -> {
SortOrder sortOrder = UserPreferences.getDownloadsSortedOrder();
List<FeedItem> downloadedItems = DBReader.getEpisodes(0, Integer.MAX_VALUE,
new FeedItemFilter(FeedItemFilter.DOWNLOADED), sortOrder);
new FeedItemFilter(FeedItemFilter.DOWNLOADED, FeedItemFilter.INCLUDE_NOT_SUBSCRIBED),
sortOrder);

List<String> mediaUrls = new ArrayList<>();
if (runningDownloads == null) {
Expand Down
Expand Up @@ -38,6 +38,7 @@
import de.danoeh.antennapod.actionbutton.StreamActionButton;
import de.danoeh.antennapod.actionbutton.VisitWebsiteActionButton;
import de.danoeh.antennapod.event.EpisodeDownloadEvent;
import de.danoeh.antennapod.model.feed.Feed;
import de.danoeh.antennapod.playback.service.PlaybackStatus;
import de.danoeh.antennapod.event.FeedItemEvent;
import de.danoeh.antennapod.event.PlayerStatusEvent;
Expand All @@ -49,6 +50,7 @@
import de.danoeh.antennapod.net.download.serviceinterface.DownloadServiceInterface;
import de.danoeh.antennapod.storage.preferences.UserPreferences;
import de.danoeh.antennapod.storage.database.DBReader;
import de.danoeh.antennapod.ui.appstartintent.OnlineFeedviewActivityStarter;
import de.danoeh.antennapod.ui.common.Converter;
import de.danoeh.antennapod.ui.common.DateFormatter;
import de.danoeh.antennapod.ui.common.CircularProgressBar;
Expand Down Expand Up @@ -364,8 +366,13 @@ private void openPodcast() {
if (item == null) {
return;
}
Fragment fragment = FeedItemlistFragment.newInstance(item.getFeedId());
((MainActivity) getActivity()).loadChildFragment(fragment);
if (item.getFeed().getState() == Feed.STATE_SUBSCRIBED) {
Fragment fragment = FeedItemlistFragment.newInstance(item.getFeedId());
((MainActivity) getActivity()).loadChildFragment(fragment);
} else {
startActivity(new OnlineFeedviewActivityStarter(getContext(), item.getFeed().getDownloadUrl())
.getIntent());
}
}

@Subscribe(threadMode = ThreadMode.MAIN)
Expand Down
Expand Up @@ -462,7 +462,7 @@ private void refreshHeaderView() {
} else {
viewBinding.header.txtvFailure.setVisibility(View.GONE);
}
if (!feed.getPreferences().getKeepUpdated()) {
if (!feed.getPreferences().getKeepUpdated() && feed.getState() == Feed.STATE_SUBSCRIBED) {
viewBinding.header.txtvUpdatesDisabled.setText(R.string.updates_disabled_label);
viewBinding.header.txtvUpdatesDisabled.setVisibility(View.VISIBLE);
} else {
Expand All @@ -483,6 +483,11 @@ private void refreshHeaderView() {
} else {
viewBinding.header.txtvInformation.setVisibility(View.GONE);
}
boolean isSubscribed = feed.getState() == Feed.STATE_SUBSCRIBED;
viewBinding.header.butShowInfo.setVisibility(isSubscribed ? View.VISIBLE : View.GONE);
viewBinding.header.butFilter.setVisibility(isSubscribed ? View.VISIBLE : View.GONE);
viewBinding.header.butShowSettings.setVisibility(isSubscribed ? View.VISIBLE : View.GONE);
viewBinding.header.butSubscribe.setVisibility(isSubscribed ? View.GONE : View.VISIBLE);
}

private void setupHeaderView() {
Expand All @@ -494,6 +499,13 @@ private void setupHeaderView() {
viewBinding.imgvBackground.setColorFilter(new LightingColorFilter(0xff666666, 0x000000));
viewBinding.header.butShowInfo.setOnClickListener(v -> showFeedInfo());
viewBinding.header.imgvCover.setOnClickListener(v -> showFeedInfo());
viewBinding.header.butSubscribe.setOnClickListener(view -> {
feed.getPreferences().setKeepUpdated(true);
DBWriter.setFeedPreferences(feed.getPreferences());
feed.setState(Feed.STATE_SUBSCRIBED);
DBWriter.setFeedState(feed);
FeedUpdateManager.getInstance().runOnceOrAsk(requireContext(), feed);
});
viewBinding.header.butShowSettings.setOnClickListener(v -> {
if (feed != null) {
FeedSettingsFragment fragment = FeedSettingsFragment.newInstance(feed);
Expand Down

This file was deleted.

0 comments on commit 25d5298

Please sign in to comment.