From 849bf4ad854973d39698613c3a356c09c87e687c Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Thu, 6 Jan 2022 14:36:11 +0100 Subject: Rewrite download request creation (#5530) Android has a limit on the size of Intent parameters. When enqueuing a huge number of items, it just ignored the argument and did not call onNewIntent. We now load the list over in DownloadService. --- .../service/download/DownloadServiceTest.java | 13 ++++---- .../activity/DownloadAuthenticationActivity.java | 4 +-- .../activity/OnlineFeedViewActivity.java | 14 +++----- .../antennapod/activity/OpmlImportActivity.java | 11 ++----- .../antennapod/adapter/DownloadLogAdapter.java | 22 ++++--------- .../actionbutton/CancelDownloadActionButton.java | 4 +-- .../adapter/actionbutton/DownloadActionButton.java | 30 ++++-------------- .../adapter/actionbutton/ItemActionButton.java | 4 +-- .../adapter/actionbutton/MobileDownloadHelper.java | 12 ++----- .../antennapod/fragment/AddFeedFragment.java | 3 +- .../fragment/CompletedDownloadsFragment.java | 3 +- .../antennapod/fragment/DownloadLogFragment.java | 5 ++- .../antennapod/fragment/EpisodesListFragment.java | 3 +- .../antennapod/fragment/FeedInfoFragment.java | 10 +----- .../antennapod/fragment/FeedItemlistFragment.java | 37 ++++------------------ .../danoeh/antennapod/fragment/ItemFragment.java | 4 +-- .../danoeh/antennapod/fragment/QueueFragment.java | 3 +- .../antennapod/fragment/SubscriptionFragment.java | 3 +- .../actions/EpisodeMultiSelectActionHandler.java | 19 ++++------- .../antennapod/menuhandler/FeedMenuHandler.java | 6 +--- .../receiver/ConnectivityActionReceiver.java | 1 - .../receiver/PowerConnectionReceiver.java | 4 +-- .../de/danoeh/antennapod/receiver/SPAReceiver.java | 11 ++----- .../view/viewholder/EpisodeItemViewHolder.java | 8 ++--- 24 files changed, 70 insertions(+), 164 deletions(-) (limited to 'app') diff --git a/app/src/androidTest/java/de/test/antennapod/service/download/DownloadServiceTest.java b/app/src/androidTest/java/de/test/antennapod/service/download/DownloadServiceTest.java index 7645facc2..edd80b0d0 100644 --- a/app/src/androidTest/java/de/test/antennapod/service/download/DownloadServiceTest.java +++ b/app/src/androidTest/java/de/test/antennapod/service/download/DownloadServiceTest.java @@ -8,6 +8,7 @@ import androidx.core.util.Consumer; import androidx.test.platform.app.InstrumentationRegistry; import androidx.test.ext.junit.runners.AndroidJUnit4; +import de.danoeh.antennapod.core.service.download.DownloadRequestCreator; import de.test.antennapod.EspressoTestUtils; import org.awaitility.Awaitility; import org.awaitility.core.ConditionTimeoutException; @@ -33,7 +34,6 @@ import de.danoeh.antennapod.core.service.download.DownloaderFactory; import de.danoeh.antennapod.core.service.download.StubDownloader; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; -import de.danoeh.antennapod.core.storage.DownloadRequester; import static de.test.antennapod.util.event.DownloadEventListener.withDownloadEventListener; import static de.test.antennapod.util.event.FeedItemEventListener.withFeedItemEventListener; @@ -80,7 +80,7 @@ public class DownloadServiceTest { public void tearDown() throws Exception { DownloadService.setDownloaderFactory(origFactory); Context context = InstrumentationRegistry.getInstrumentation().getTargetContext(); - DownloadRequester.getInstance().cancelAllDownloads(context); + DownloadService.cancelAll(context); context.stopService(new Intent(context, DownloadService.class)); EspressoTestUtils.tryKillDownloadService(); } @@ -113,8 +113,8 @@ public class DownloadServiceTest { assertFalse("The media in test should not yet been downloaded", DBReader.getFeedMedia(testMedia11.getId()).isDownloaded()); - DownloadRequester.getInstance().downloadMedia(false, InstrumentationRegistry - .getInstrumentation().getTargetContext(), true, testMedia11.getItem()); + DownloadService.download(InstrumentationRegistry.getInstrumentation().getTargetContext(), false, + DownloadRequestCreator.create(testMedia11).build()); Awaitility.await() .atMost(5000, TimeUnit.MILLISECONDS) .until(() -> feedItemEventListener.getEvents().size() >= numEventsExpected); @@ -158,7 +158,8 @@ public class DownloadServiceTest { } withFeedItemEventListener(feedItemEventListener -> { - DownloadRequester.getInstance().downloadMedia(false, context, true, testMedia11.getItem()); + DownloadService.download(InstrumentationRegistry.getInstrumentation().getTargetContext(), false, + DownloadRequestCreator.create(testMedia11).build()); withDownloadEventListener(downloadEventListener -> Awaitility.await("download is actually running") .atMost(5000, TimeUnit.MILLISECONDS) @@ -174,7 +175,7 @@ public class DownloadServiceTest { .atMost(2000, TimeUnit.MILLISECONDS) .until(() -> feedItemEventListener.getEvents().size() >= 1); } - DownloadRequester.getInstance().cancelDownload(context, testMedia11); + DownloadService.cancel(context, testMedia11.getDownload_url()); final int totalNumEventsExpected = itemAlreadyInQueue ? 1 : 3; Awaitility.await("item dequeue event + download termination event") .atMost(2000, TimeUnit.MILLISECONDS) diff --git a/app/src/main/java/de/danoeh/antennapod/activity/DownloadAuthenticationActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/DownloadAuthenticationActivity.java index 92a0909d6..fb4c7c2d2 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/DownloadAuthenticationActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/DownloadAuthenticationActivity.java @@ -4,13 +4,13 @@ import android.os.Bundle; import android.text.TextUtils; import androidx.appcompat.app.AppCompatActivity; import de.danoeh.antennapod.R; +import de.danoeh.antennapod.core.service.download.DownloadService; import de.danoeh.antennapod.model.feed.FeedMedia; import de.danoeh.antennapod.model.feed.FeedPreferences; import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.service.download.DownloadRequest; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; -import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.dialog.AuthenticationDialog; import io.reactivex.Completable; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -62,7 +62,7 @@ public class DownloadAuthenticationActivity extends AppCompatActivity { .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(() -> { - DownloadRequester.getInstance().download(DownloadAuthenticationActivity.this, request); + DownloadService.download(DownloadAuthenticationActivity.this, false, request); finish(); }); } diff --git a/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java index 9108940ea..277cdf6aa 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java @@ -31,8 +31,9 @@ import com.google.android.material.snackbar.Snackbar; import de.danoeh.antennapod.R; import de.danoeh.antennapod.adapter.FeedItemlistDescriptionAdapter; -import de.danoeh.antennapod.core.dialog.DownloadRequestErrorDialogCreator; import de.danoeh.antennapod.core.event.DownloadEvent; +import de.danoeh.antennapod.core.service.download.DownloadService; +import de.danoeh.antennapod.core.service.download.DownloadRequestCreator; import de.danoeh.antennapod.core.feed.FeedUrlNotFoundException; import de.danoeh.antennapod.discovery.CombinedSearcher; import de.danoeh.antennapod.discovery.PodcastSearchResult; @@ -49,8 +50,6 @@ import de.danoeh.antennapod.core.service.download.HttpDownloader; import de.danoeh.antennapod.core.service.playback.PlaybackService; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; -import de.danoeh.antennapod.core.storage.DownloadRequestException; -import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.util.FileNameGenerator; import de.danoeh.antennapod.parser.feed.FeedHandler; import de.danoeh.antennapod.parser.feed.FeedHandlerResult; @@ -467,12 +466,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity { Feed f = new Feed(selectedDownloadUrl, null, feed.getTitle()); f.setPreferences(feed.getPreferences()); this.feed = f; - try { - DownloadRequester.getInstance().downloadFeed(this, f); - } catch (DownloadRequestException e) { - Log.e(TAG, Log.getStackTraceString(e)); - DownloadRequestErrorDialogCreator.newRequestErrorDialog(this, e.getMessage()); - } + DownloadService.download(this, false, DownloadRequestCreator.create(f).build()); didPressSubscribe = true; handleUpdatedFeedStatus(feed); } @@ -553,7 +547,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity { private void handleUpdatedFeedStatus(Feed feed) { if (feed != null) { - if (DownloadRequester.getInstance().isDownloadingFile(feed.getDownload_url())) { + if (DownloadService.isDownloadingFile(feed.getDownload_url())) { viewBinding.subscribeButton.setEnabled(false); viewBinding.subscribeButton.setText(R.string.subscribing_label); } else if (feedInFeedlist(feed)) { diff --git a/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportActivity.java index 3d0c9d113..b7a35a368 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportActivity.java @@ -28,8 +28,8 @@ import de.danoeh.antennapod.core.export.opml.OpmlElement; import de.danoeh.antennapod.core.export.opml.OpmlReader; import de.danoeh.antennapod.core.preferences.UserPreferences; -import de.danoeh.antennapod.core.storage.DownloadRequestException; -import de.danoeh.antennapod.core.storage.DownloadRequester; +import de.danoeh.antennapod.core.service.download.DownloadService; +import de.danoeh.antennapod.core.service.download.DownloadRequestCreator; import de.danoeh.antennapod.databinding.OpmlSelectionBinding; import de.danoeh.antennapod.model.feed.Feed; import io.reactivex.Completable; @@ -89,7 +89,6 @@ public class OpmlImportActivity extends AppCompatActivity { viewBinding.butConfirm.setOnClickListener(v -> { viewBinding.progressBar.setVisibility(View.VISIBLE); Completable.fromAction(() -> { - DownloadRequester requester = DownloadRequester.getInstance(); SparseBooleanArray checked = viewBinding.feedlist.getCheckedItemPositions(); for (int i = 0; i < checked.size(); i++) { if (!checked.valueAt(i)) { @@ -97,11 +96,7 @@ public class OpmlImportActivity extends AppCompatActivity { } OpmlElement element = readElements.get(checked.keyAt(i)); Feed feed = new Feed(element.getXmlUrl(), null, element.getText()); - try { - requester.downloadFeed(getApplicationContext(), feed); - } catch (DownloadRequestException e) { - e.printStackTrace(); - } + DownloadService.download(this, false, DownloadRequestCreator.create(feed).build()); } }) .subscribeOn(Schedulers.io()) diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java index 1e7ce4426..072ca8acf 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java @@ -13,14 +13,13 @@ import androidx.core.content.ContextCompat; import androidx.fragment.app.ListFragment; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; -import de.danoeh.antennapod.core.dialog.DownloadRequestErrorDialogCreator; import de.danoeh.antennapod.core.service.download.DownloadRequest; +import de.danoeh.antennapod.core.service.download.DownloadRequestCreator; +import de.danoeh.antennapod.core.service.download.DownloadService; import de.danoeh.antennapod.core.service.download.Downloader; import de.danoeh.antennapod.core.service.download.DownloadStatus; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBTasks; -import de.danoeh.antennapod.core.storage.DownloadRequestException; -import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.util.DownloadError; import de.danoeh.antennapod.model.feed.Feed; import de.danoeh.antennapod.model.feed.FeedMedia; @@ -131,11 +130,7 @@ public class DownloadLogAdapter extends BaseAdapter { Log.e(TAG, "Could not find feed for feed id: " + status.getFeedfileId()); return; } - try { - DBTasks.forceRefreshFeed(context, feed, true); - } catch (DownloadRequestException e) { - e.printStackTrace(); - } + DBTasks.forceRefreshFeed(context, feed, true); }); } else if (status.getFeedfileType() == FeedMedia.FEEDFILETYPE_FEEDMEDIA) { holder.secondaryActionButton.setOnClickListener(v -> { @@ -145,14 +140,9 @@ public class DownloadLogAdapter extends BaseAdapter { Log.e(TAG, "Could not find feed media for feed id: " + status.getFeedfileId()); return; } - try { - DownloadRequester.getInstance().downloadMedia(context, true, media.getItem()); - ((MainActivity) context).showSnackbarAbovePlayer( - R.string.status_downloading_label, Toast.LENGTH_SHORT); - } catch (DownloadRequestException e) { - e.printStackTrace(); - DownloadRequestErrorDialogCreator.newRequestErrorDialog(context, e.getMessage()); - } + DownloadService.download(context, true, DownloadRequestCreator.create(media).build()); + ((MainActivity) context).showSnackbarAbovePlayer( + R.string.status_downloading_label, Toast.LENGTH_SHORT); }); } } diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/CancelDownloadActionButton.java b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/CancelDownloadActionButton.java index a2b0e98c3..636c974d9 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/CancelDownloadActionButton.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/CancelDownloadActionButton.java @@ -5,11 +5,11 @@ import androidx.annotation.DrawableRes; import androidx.annotation.StringRes; import de.danoeh.antennapod.R; +import de.danoeh.antennapod.core.service.download.DownloadService; import de.danoeh.antennapod.model.feed.FeedItem; import de.danoeh.antennapod.model.feed.FeedMedia; import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.storage.DBWriter; -import de.danoeh.antennapod.core.storage.DownloadRequester; public class CancelDownloadActionButton extends ItemActionButton { @@ -32,7 +32,7 @@ public class CancelDownloadActionButton extends ItemActionButton { @Override public void onClick(Context context) { FeedMedia media = item.getMedia(); - DownloadRequester.getInstance().cancelDownload(context, media); + DownloadService.cancel(context, media.getDownload_url()); if (UserPreferences.isEnableAutodownload()) { item.disableAutoDownload(); DBWriter.setFeedItem(item); diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/DownloadActionButton.java b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/DownloadActionButton.java index 7b922154e..553512882 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/DownloadActionButton.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/DownloadActionButton.java @@ -9,21 +9,18 @@ import androidx.annotation.NonNull; import androidx.annotation.StringRes; import de.danoeh.antennapod.R; -import de.danoeh.antennapod.core.dialog.DownloadRequestErrorDialogCreator; +import de.danoeh.antennapod.core.service.download.DownloadRequestCreator; +import de.danoeh.antennapod.core.service.download.DownloadService; import de.danoeh.antennapod.model.feed.FeedItem; import de.danoeh.antennapod.model.feed.FeedMedia; import de.danoeh.antennapod.core.preferences.UsageStatistics; import de.danoeh.antennapod.core.storage.DBWriter; -import de.danoeh.antennapod.core.storage.DownloadRequestException; -import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.util.NetworkUtils; public class DownloadActionButton extends ItemActionButton { - private boolean isInQueue; public DownloadActionButton(FeedItem item) { super(item); - this.isInQueue = item.isTagged(FeedItem.TAG_QUEUE);; } @Override @@ -53,30 +50,17 @@ public class DownloadActionButton extends ItemActionButton { UsageStatistics.logAction(UsageStatistics.ACTION_DOWNLOAD); if (NetworkUtils.isEpisodeDownloadAllowed() || MobileDownloadHelper.userAllowedMobileDownloads()) { - downloadEpisode(context); - } else if (MobileDownloadHelper.userChoseAddToQueue() && !isInQueue) { - addEpisodeToQueue(context); + DownloadService.download(context, false, DownloadRequestCreator.create(item.getMedia()).build()); + } else if (MobileDownloadHelper.userChoseAddToQueue() && !item.isTagged(FeedItem.TAG_QUEUE)) { + DBWriter.addQueueItem(context, item); + Toast.makeText(context, R.string.added_to_queue_label, Toast.LENGTH_SHORT).show(); } else { MobileDownloadHelper.confirmMobileDownload(context, item); } } private boolean shouldNotDownload(@NonNull FeedMedia media) { - boolean isDownloading = DownloadRequester.getInstance().isDownloadingFile(media); + boolean isDownloading = DownloadService.isDownloadingFile(media.getDownload_url()); return isDownloading || media.isDownloaded(); } - - private void addEpisodeToQueue(Context context) { - DBWriter.addQueueItem(context, item); - Toast.makeText(context, R.string.added_to_queue_label, Toast.LENGTH_SHORT).show(); - } - - private void downloadEpisode(Context context) { - try { - DownloadRequester.getInstance().downloadMedia(context, true, item); - } catch (DownloadRequestException e) { - e.printStackTrace(); - DownloadRequestErrorDialogCreator.newRequestErrorDialog(context, e.getMessage()); - } - } } diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/ItemActionButton.java b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/ItemActionButton.java index ad4f35786..5581ca0c6 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/ItemActionButton.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/ItemActionButton.java @@ -7,10 +7,10 @@ import androidx.annotation.NonNull; import androidx.annotation.StringRes; import android.view.View; +import de.danoeh.antennapod.core.service.download.DownloadService; import de.danoeh.antennapod.model.feed.FeedItem; import de.danoeh.antennapod.model.feed.FeedMedia; import de.danoeh.antennapod.core.preferences.UserPreferences; -import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.util.FeedItemUtil; public abstract class ItemActionButton { @@ -39,7 +39,7 @@ public abstract class ItemActionButton { return new MarkAsPlayedActionButton(item); } - final boolean isDownloadingMedia = DownloadRequester.getInstance().isDownloadingFile(media); + final boolean isDownloadingMedia = DownloadService.isDownloadingFile(media.getDownload_url()); if (FeedItemUtil.isCurrentlyPlaying(media)) { return new PauseActionButton(item); } else if (item.getFeed().isLocalFeed()) { diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/MobileDownloadHelper.java b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/MobileDownloadHelper.java index 66ce973e2..6d8af23c0 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/MobileDownloadHelper.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/MobileDownloadHelper.java @@ -4,12 +4,11 @@ import android.content.Context; import androidx.appcompat.app.AlertDialog; import de.danoeh.antennapod.R; -import de.danoeh.antennapod.core.dialog.DownloadRequestErrorDialogCreator; +import de.danoeh.antennapod.core.service.download.DownloadRequestCreator; +import de.danoeh.antennapod.core.service.download.DownloadService; import de.danoeh.antennapod.model.feed.FeedItem; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; -import de.danoeh.antennapod.core.storage.DownloadRequestException; -import de.danoeh.antennapod.core.storage.DownloadRequester; class MobileDownloadHelper { private static long addToQueueTimestamp; @@ -45,11 +44,6 @@ class MobileDownloadHelper { private static void downloadFeedItems(Context context, FeedItem item) { allowMobileDownloadTimestamp = System.currentTimeMillis(); - try { - DownloadRequester.getInstance().downloadMedia(context, true, item); - } catch (DownloadRequestException e) { - e.printStackTrace(); - DownloadRequestErrorDialogCreator.newRequestErrorDialog(context, e.getMessage()); - } + DownloadService.download(context, true, DownloadRequestCreator.create(item.getMedia()).build()); } } \ No newline at end of file diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java index 8c01a4563..120d1def8 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java @@ -31,7 +31,6 @@ import de.danoeh.antennapod.activity.OnlineFeedViewActivity; import de.danoeh.antennapod.activity.OpmlImportActivity; import de.danoeh.antennapod.model.feed.Feed; import de.danoeh.antennapod.core.storage.DBTasks; -import de.danoeh.antennapod.core.storage.DownloadRequestException; import de.danoeh.antennapod.model.feed.SortOrder; import de.danoeh.antennapod.databinding.AddfeedBinding; import de.danoeh.antennapod.databinding.EditTextDialogBinding; @@ -204,7 +203,7 @@ public class AddFeedFragment extends Fragment { }); } - private Feed addLocalFolder(Uri uri) throws DownloadRequestException { + private Feed addLocalFolder(Uri uri) { if (Build.VERSION.SDK_INT < 21) { return null; } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java index 933147378..603a00955 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java @@ -32,7 +32,6 @@ import de.danoeh.antennapod.fragment.actions.EpisodeMultiSelectActionHandler; import de.danoeh.antennapod.model.feed.FeedItem; import de.danoeh.antennapod.core.service.download.DownloadService; import de.danoeh.antennapod.core.storage.DBReader; -import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.util.FeedItemUtil; import de.danoeh.antennapod.core.util.download.AutoUpdateManager; import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler; @@ -162,7 +161,7 @@ public class CompletedDownloadsFragment extends Fragment implements } private final MenuItemUtils.UpdateRefreshMenuItemChecker updateRefreshMenuItemChecker = - () -> DownloadService.isRunning && DownloadRequester.getInstance().isDownloadingFeeds(); + () -> DownloadService.isRunning && DownloadService.isDownloadingFeeds(); @Override public boolean onContextItemSelected(@NonNull MenuItem item) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java index 5602dcb78..f43828000 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java @@ -29,7 +29,6 @@ import de.danoeh.antennapod.core.service.download.DownloadStatus; import de.danoeh.antennapod.core.service.download.Downloader; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; -import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.util.download.AutoUpdateManager; import de.danoeh.antennapod.model.feed.Feed; import de.danoeh.antennapod.model.feed.FeedItem; @@ -108,7 +107,7 @@ public class DownloadLogFragment extends ListFragment { Object item = adapter.getItem(position); if (item instanceof Downloader) { DownloadRequest downloadRequest = ((Downloader) item).getDownloadRequest(); - DownloadRequester.getInstance().cancelDownload(getActivity(), downloadRequest.getSource()); + DownloadService.cancel(getContext(), downloadRequest.getSource()); if (downloadRequest.getFeedfileType() == FeedMedia.FEEDFILETYPE_FEEDMEDIA) { FeedMedia media = DBReader.getFeedMedia(downloadRequest.getFeedfileId()); @@ -196,7 +195,7 @@ public class DownloadLogFragment extends ListFragment { } private final MenuItemUtils.UpdateRefreshMenuItemChecker updateRefreshMenuItemChecker = - () -> DownloadService.isRunning && DownloadRequester.getInstance().isDownloadingFeeds(); + () -> DownloadService.isRunning && DownloadService.isDownloadingFeeds(); private void loadDownloadLog() { if (disposable != null) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java index 7eb0847eb..e72e53c30 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java @@ -45,7 +45,6 @@ import de.danoeh.antennapod.event.FeedItemEvent; import de.danoeh.antennapod.model.feed.FeedItem; import de.danoeh.antennapod.core.service.download.DownloadService; import de.danoeh.antennapod.core.storage.DBWriter; -import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.util.FeedItemUtil; import de.danoeh.antennapod.core.util.download.AutoUpdateManager; import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler; @@ -113,7 +112,7 @@ public abstract class EpisodesListFragment extends Fragment { } private final MenuItemUtils.UpdateRefreshMenuItemChecker updateRefreshMenuItemChecker = - () -> DownloadService.isRunning && DownloadRequester.getInstance().isDownloadingFeeds(); + () -> DownloadService.isRunning && DownloadService.isDownloadingFeeds(); @Override public void onPrepareOptionsMenu(@NonNull Menu menu) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java index 947b8aa6e..ccc4e2e5f 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java @@ -36,12 +36,10 @@ import com.google.android.material.snackbar.Snackbar; import com.joanzapata.iconify.Iconify; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; -import de.danoeh.antennapod.core.dialog.DownloadRequestErrorDialogCreator; import de.danoeh.antennapod.core.glide.ApGlideSettings; import de.danoeh.antennapod.core.glide.FastBlurTransformation; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBTasks; -import de.danoeh.antennapod.core.storage.DownloadRequestException; import de.danoeh.antennapod.core.util.IntentUtils; import de.danoeh.antennapod.core.util.syndication.HtmlToPlainText; import de.danoeh.antennapod.fragment.preferences.StatisticsFragment; @@ -280,13 +278,7 @@ public class FeedInfoFragment extends Fragment implements Toolbar.OnMenuItemClic R.string.please_wait_for_data, Toast.LENGTH_LONG); return false; } - boolean handled = false; - try { - handled = FeedMenuHandler.onOptionsItemClicked(getContext(), item, feed); - } catch (DownloadRequestException e) { - e.printStackTrace(); - DownloadRequestErrorDialogCreator.newRequestErrorDialog(getContext(), e.getMessage()); - } + boolean handled = FeedMenuHandler.onOptionsItemClicked(getContext(), item, feed); if (item.getItemId() == R.id.reconnect_local_folder && Build.VERSION.SDK_INT >= 21) { AlertDialog.Builder alert = new AlertDialog.Builder(getContext()); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java index 5df8e2ccf..18bc75fbd 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java @@ -48,7 +48,6 @@ import java.util.Set; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.adapter.EpisodeItemListAdapter; -import de.danoeh.antennapod.core.dialog.DownloadRequestErrorDialogCreator; import de.danoeh.antennapod.core.event.DownloadEvent; import de.danoeh.antennapod.core.event.DownloaderUpdate; import de.danoeh.antennapod.event.FavoritesEvent; @@ -65,8 +64,6 @@ import de.danoeh.antennapod.core.service.download.DownloadService; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBTasks; import de.danoeh.antennapod.core.storage.DBWriter; -import de.danoeh.antennapod.core.storage.DownloadRequestException; -import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.util.FeedItemPermutors; import de.danoeh.antennapod.core.util.FeedItemUtil; import de.danoeh.antennapod.core.util.gui.MoreContentListFooterUtil; @@ -203,12 +200,7 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem nextPageLoader = new MoreContentListFooterUtil(root.findViewById(R.id.more_content_list_footer)); nextPageLoader.setClickListener(() -> { if (feed != null) { - try { - DBTasks.loadNextPageOfFeed(getActivity(), feed, false); - } catch (DownloadRequestException e) { - e.printStackTrace(); - DownloadRequestErrorDialogCreator.newRequestErrorDialog(getActivity(), e.getMessage()); - } + DBTasks.loadNextPageOfFeed(getActivity(), feed, false); } }); recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @@ -226,11 +218,7 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem SwipeRefreshLayout swipeRefreshLayout = root.findViewById(R.id.swipeRefresh); swipeRefreshLayout.setDistanceToTriggerSync(getResources().getInteger(R.integer.swipe_refresh_distance)); swipeRefreshLayout.setOnRefreshListener(() -> { - try { - DBTasks.forceRefreshFeed(requireContext(), feed, true); - } catch (DownloadRequestException e) { - e.printStackTrace(); - } + DBTasks.forceRefreshFeed(requireContext(), feed, true); new Handler(Looper.getMainLooper()).postDelayed(() -> swipeRefreshLayout.setRefreshing(false), getResources().getInteger(R.integer.swipe_to_refresh_duration_in_ms)); }); @@ -285,12 +273,8 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem super.onSaveInstanceState(outState); } - private final MenuItemUtils.UpdateRefreshMenuItemChecker updateRefreshMenuItemChecker = new MenuItemUtils.UpdateRefreshMenuItemChecker() { - @Override - public boolean isRefreshing() { - return feed != null && DownloadService.isRunning && DownloadRequester.getInstance().isDownloadingFile(feed); - } - }; + private final MenuItemUtils.UpdateRefreshMenuItemChecker updateRefreshMenuItemChecker = + () -> DownloadService.isRunning && DownloadService.isDownloadingFile(feed.getDownload_url()); private void refreshToolbarState() { if (feed == null) { @@ -318,14 +302,7 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem R.string.please_wait_for_data, Toast.LENGTH_LONG); return true; } - boolean feedMenuHandled; - try { - feedMenuHandled = FeedMenuHandler.onOptionsItemClicked(getActivity(), item, feed); - } catch (DownloadRequestException e) { - e.printStackTrace(); - DownloadRequestErrorDialogCreator.newRequestErrorDialog(getActivity(), e.getMessage()); - return true; - } + boolean feedMenuHandled = FeedMenuHandler.onOptionsItemClicked(getActivity(), item, feed); if (feedMenuHandled) { return true; } @@ -479,10 +456,10 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem if (isUpdatingFeed != updateRefreshMenuItemChecker.isRefreshing()) { refreshToolbarState(); } - if (!DownloadRequester.getInstance().isDownloadingFeeds()) { + if (!DownloadService.isDownloadingFeeds()) { nextPageLoader.getRoot().setVisibility(View.GONE); } - nextPageLoader.setLoadingState(DownloadRequester.getInstance().isDownloadingFeeds()); + nextPageLoader.setLoadingState(DownloadService.isDownloadingFeeds()); } private void displayList() { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java index 726eafa14..715786921 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java @@ -39,6 +39,7 @@ import de.danoeh.antennapod.adapter.actionbutton.StreamActionButton; import de.danoeh.antennapod.adapter.actionbutton.VisitWebsiteActionButton; import de.danoeh.antennapod.core.event.DownloadEvent; import de.danoeh.antennapod.core.event.DownloaderUpdate; +import de.danoeh.antennapod.core.service.download.DownloadService; import de.danoeh.antennapod.event.FeedItemEvent; import de.danoeh.antennapod.event.PlayerStatusEvent; import de.danoeh.antennapod.event.UnreadItemsUpdateEvent; @@ -50,7 +51,6 @@ import de.danoeh.antennapod.core.preferences.UsageStatistics; import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.service.download.Downloader; import de.danoeh.antennapod.core.storage.DBReader; -import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.util.Converter; import de.danoeh.antennapod.core.util.DateFormatter; import de.danoeh.antennapod.core.util.FeedItemUtil; @@ -336,7 +336,7 @@ public class ItemFragment extends Fragment { } else { actionButton1 = new StreamActionButton(item); } - if (DownloadRequester.getInstance().isDownloadingFile(media)) { + if (DownloadService.isDownloadingFile(media.getDownload_url())) { actionButton2 = new CancelDownloadActionButton(item); } else if (!media.isDownloaded()) { actionButton2 = new DownloadActionButton(item); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java index c145642b9..a79e066e1 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java @@ -48,7 +48,6 @@ import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.service.download.DownloadService; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; -import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.util.Converter; import de.danoeh.antennapod.core.util.FeedItemUtil; import de.danoeh.antennapod.model.feed.FeedItemFilter; @@ -262,7 +261,7 @@ public class QueueFragment extends Fragment implements Toolbar.OnMenuItemClickLi } private final MenuItemUtils.UpdateRefreshMenuItemChecker updateRefreshMenuItemChecker = - () -> DownloadService.isRunning && DownloadRequester.getInstance().isDownloadingFeeds(); + () -> DownloadService.isRunning && DownloadService.isDownloadingFeeds(); private void refreshToolbarState() { boolean keepSorted = UserPreferences.isQueueKeepSorted(); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java index 200f4dcd6..a29fd0425 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java @@ -50,7 +50,6 @@ import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.service.download.DownloadService; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; -import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.storage.NavDrawerData; import de.danoeh.antennapod.core.util.download.AutoUpdateManager; import de.danoeh.antennapod.dialog.FeedSortDialog; @@ -403,7 +402,7 @@ public class SubscriptionFragment extends Fragment } private final MenuItemUtils.UpdateRefreshMenuItemChecker updateRefreshMenuItemChecker = - () -> DownloadService.isRunning && DownloadRequester.getInstance().isDownloadingFeeds(); + () -> DownloadService.isRunning && DownloadService.isDownloadingFeeds(); @Override public void onEndSelectMode() { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/actions/EpisodeMultiSelectActionHandler.java b/app/src/main/java/de/danoeh/antennapod/fragment/actions/EpisodeMultiSelectActionHandler.java index 710ec6ce0..17642874e 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/actions/EpisodeMultiSelectActionHandler.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/actions/EpisodeMultiSelectActionHandler.java @@ -11,10 +11,10 @@ import java.util.List; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; -import de.danoeh.antennapod.core.dialog.DownloadRequestErrorDialogCreator; +import de.danoeh.antennapod.core.service.download.DownloadRequest; +import de.danoeh.antennapod.core.service.download.DownloadRequestCreator; +import de.danoeh.antennapod.core.service.download.DownloadService; import de.danoeh.antennapod.core.storage.DBWriter; -import de.danoeh.antennapod.core.storage.DownloadRequestException; -import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.util.LongList; import de.danoeh.antennapod.model.feed.FeedItem; @@ -78,19 +78,14 @@ public class EpisodeMultiSelectActionHandler { private void downloadChecked() { // download the check episodes in the same order as they are currently displayed - List toDownload = new ArrayList<>(selectedItems.size()); + List requests = new ArrayList<>(); for (FeedItem episode : selectedItems) { if (episode.hasMedia() && !episode.getFeed().isLocalFeed()) { - toDownload.add(episode); + requests.add(DownloadRequestCreator.create(episode.getMedia()).build()); } } - try { - DownloadRequester.getInstance().downloadMedia(activity, true, toDownload.toArray(new FeedItem[0])); - } catch (DownloadRequestException e) { - e.printStackTrace(); - DownloadRequestErrorDialogCreator.newRequestErrorDialog(activity, e.getMessage()); - } - showMessage(R.plurals.downloading_batch_label, toDownload.size()); + DownloadService.download(activity, true, requests.toArray(new DownloadRequest[0])); + showMessage(R.plurals.downloading_batch_label, requests.size()); } private void deleteChecked() { diff --git a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java index d4c7a838c..f59be601c 100644 --- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java +++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedMenuHandler.java @@ -17,7 +17,6 @@ import de.danoeh.antennapod.core.dialog.ConfirmationDialog; import de.danoeh.antennapod.model.feed.Feed; import de.danoeh.antennapod.core.storage.DBTasks; import de.danoeh.antennapod.core.storage.DBWriter; -import de.danoeh.antennapod.core.storage.DownloadRequestException; import de.danoeh.antennapod.core.util.IntentUtils; import de.danoeh.antennapod.core.util.ShareUtils; import de.danoeh.antennapod.model.feed.SortOrder; @@ -55,11 +54,8 @@ public class FeedMenuHandler { /** * NOTE: This method does not handle clicks on the 'remove feed' - item. - * - * @throws DownloadRequestException */ - public static boolean onOptionsItemClicked(final Context context, final MenuItem item, - final Feed selectedFeed) throws DownloadRequestException { + public static boolean onOptionsItemClicked(final Context context, final MenuItem item, final Feed selectedFeed) { final int itemId = item.getItemId(); if (itemId == R.id.refresh_item) { DBTasks.forceRefreshFeed(context, selectedFeed, true); diff --git a/app/src/main/java/de/danoeh/antennapod/receiver/ConnectivityActionReceiver.java b/app/src/main/java/de/danoeh/antennapod/receiver/ConnectivityActionReceiver.java index 020f4374b..8cb5a7cdf 100644 --- a/app/src/main/java/de/danoeh/antennapod/receiver/ConnectivityActionReceiver.java +++ b/app/src/main/java/de/danoeh/antennapod/receiver/ConnectivityActionReceiver.java @@ -7,7 +7,6 @@ import android.net.ConnectivityManager; import android.text.TextUtils; import android.util.Log; - import de.danoeh.antennapod.core.ClientConfig; import de.danoeh.antennapod.core.util.NetworkUtils; diff --git a/app/src/main/java/de/danoeh/antennapod/receiver/PowerConnectionReceiver.java b/app/src/main/java/de/danoeh/antennapod/receiver/PowerConnectionReceiver.java index 339a4f0f7..34ce83489 100644 --- a/app/src/main/java/de/danoeh/antennapod/receiver/PowerConnectionReceiver.java +++ b/app/src/main/java/de/danoeh/antennapod/receiver/PowerConnectionReceiver.java @@ -7,8 +7,8 @@ import android.util.Log; import de.danoeh.antennapod.core.ClientConfig; import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.core.service.download.DownloadService; import de.danoeh.antennapod.core.storage.DBTasks; -import de.danoeh.antennapod.core.storage.DownloadRequester; // modified from http://developer.android.com/training/monitoring-device-state/battery-monitoring.html // and ConnectivityActionReceiver.java @@ -37,7 +37,7 @@ public class PowerConnectionReceiver extends BroadcastReceiver { // if we're not supposed to be auto-downloading when we're not charging, stop it if (!UserPreferences.isEnableAutodownloadOnBattery()) { Log.d(TAG, "not charging anymore, canceling auto-download"); - DownloadRequester.getInstance().cancelAllDownloads(context); + DownloadService.cancelAll(context); } else { Log.d(TAG, "not charging anymore, but the user allows auto-download " + "when on battery so we'll keep going"); diff --git a/app/src/main/java/de/danoeh/antennapod/receiver/SPAReceiver.java b/app/src/main/java/de/danoeh/antennapod/receiver/SPAReceiver.java index 5981d3d67..d1636dcff 100644 --- a/app/src/main/java/de/danoeh/antennapod/receiver/SPAReceiver.java +++ b/app/src/main/java/de/danoeh/antennapod/receiver/SPAReceiver.java @@ -11,9 +11,9 @@ import java.util.Arrays; import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.ClientConfig; +import de.danoeh.antennapod.core.service.download.DownloadService; +import de.danoeh.antennapod.core.service.download.DownloadRequestCreator; import de.danoeh.antennapod.model.feed.Feed; -import de.danoeh.antennapod.core.storage.DownloadRequestException; -import de.danoeh.antennapod.core.storage.DownloadRequester; /** * Receives intents from AntennaPod Single Purpose apps @@ -44,12 +44,7 @@ public class SPAReceiver extends BroadcastReceiver{ ClientConfig.initialize(context); for (String url : feedUrls) { Feed f = new Feed(url, null); - try { - DownloadRequester.getInstance().downloadFeed(context, f); - } catch (DownloadRequestException e) { - Log.e(TAG, "Error while trying to add feed " + url); - e.printStackTrace(); - } + DownloadService.download(context, false, DownloadRequestCreator.create(f).build()); } Toast.makeText(context, R.string.sp_apps_importing_feeds_msg, Toast.LENGTH_LONG).show(); } diff --git a/app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java b/app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java index 8d1810ecb..d231e522f 100644 --- a/app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java +++ b/app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java @@ -21,6 +21,8 @@ import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.adapter.CoverLoader; import de.danoeh.antennapod.adapter.actionbutton.ItemActionButton; +import de.danoeh.antennapod.core.service.download.DownloadRequest; +import de.danoeh.antennapod.core.service.download.DownloadService; import de.danoeh.antennapod.event.playback.PlaybackPositionEvent; import de.danoeh.antennapod.core.util.DateFormatter; import de.danoeh.antennapod.model.feed.FeedItem; @@ -28,9 +30,7 @@ import de.danoeh.antennapod.model.feed.FeedMedia; import de.danoeh.antennapod.model.playback.MediaType; import de.danoeh.antennapod.core.feed.util.ImageResourceUtils; import de.danoeh.antennapod.core.preferences.UserPreferences; -import de.danoeh.antennapod.core.service.download.DownloadRequest; import de.danoeh.antennapod.core.service.playback.PlaybackService; -import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.util.Converter; import de.danoeh.antennapod.core.util.FeedItemUtil; import de.danoeh.antennapod.core.util.NetworkUtils; @@ -145,8 +145,8 @@ public class EpisodeItemViewHolder extends RecyclerView.ViewHolder { itemView.setBackgroundResource(ThemeUtils.getDrawableFromAttr(activity, R.attr.selectableItemBackground)); } - if (DownloadRequester.getInstance().isDownloadingFile(media)) { - final DownloadRequest downloadRequest = DownloadRequester.getInstance().getRequestFor(media); + if (DownloadService.isDownloadingFile(media.getDownload_url())) { + final DownloadRequest downloadRequest = DownloadService.findRequest(media.getDownload_url()); float percent = 0.01f * downloadRequest.getProgressPercent(); secondaryActionProgress.setPercentage(Math.max(percent, 0.01f), item); } else if (media.isDownloaded()) { -- cgit v1.2.3