diff options
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java | 43 |
1 files changed, 31 insertions, 12 deletions
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 fd4e31074..a0d1c17d5 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java @@ -57,6 +57,7 @@ import de.danoeh.antennapod.core.util.URLChecker; import de.danoeh.antennapod.core.util.syndication.FeedDiscoverer; import de.danoeh.antennapod.core.util.syndication.HtmlToPlainText; import de.danoeh.antennapod.dialog.AuthenticationDialog; +import de.danoeh.antennapod.discovery.PodcastSearcherRegistry; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; @@ -84,7 +85,6 @@ public class OnlineFeedViewActivity extends AppCompatActivity { public static final String ARG_FEEDURL = "arg.feedurl"; // Optional argument: specify a title for the actionbar. - public static final String ARG_TITLE = "title"; private static final int RESULT_ERROR = 2; private static final String TAG = "OnlineFeedViewActivity"; private volatile List<Feed> feeds; @@ -127,11 +127,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity { if (feedUrl == null) { Log.e(TAG, "feedUrl is null."); - new AlertDialog.Builder(OnlineFeedViewActivity.this) - .setNeutralButton(android.R.string.ok, (dialog, which) -> finish()) - .setTitle(R.string.error_label) - .setMessage(R.string.null_value_podcast_error) - .show(); + showNoPodcastFoundError(); } else { Log.d(TAG, "Activity was started with url " + feedUrl); setLoadingLayout(); @@ -140,13 +136,26 @@ public class OnlineFeedViewActivity extends AppCompatActivity { feedUrl = feedUrl.replaceFirst("((www.)?(subscribeonandroid.com/))", ""); } if (savedInstanceState == null) { - startFeedDownload(feedUrl, null, null); + lookupUrlAndDownload(feedUrl, null, null); } else { - startFeedDownload(feedUrl, savedInstanceState.getString("username"), savedInstanceState.getString("password")); + lookupUrlAndDownload(feedUrl, savedInstanceState.getString("username"), + savedInstanceState.getString("password")); } } } + private void showNoPodcastFoundError() { + new AlertDialog.Builder(OnlineFeedViewActivity.this) + .setNeutralButton(android.R.string.ok, (dialog, which) -> finish()) + .setTitle(R.string.error_label) + .setMessage(R.string.null_value_podcast_error) + .setOnDismissListener(dialog1 -> { + setResult(RESULT_ERROR); + finish(); + }) + .show(); + } + /** * Displays a progress indicator. */ @@ -198,10 +207,9 @@ public class OnlineFeedViewActivity extends AppCompatActivity { } } - private void resetIntent(String url, String title) { + private void resetIntent(String url) { Intent intent = new Intent(); intent.putExtra(ARG_FEEDURL, url); - intent.putExtra(ARG_TITLE, title); setIntent(intent); } @@ -226,6 +234,17 @@ public class OnlineFeedViewActivity extends AppCompatActivity { return super.onOptionsItemSelected(item); } + private void lookupUrlAndDownload(String url, String username, String password) { + download = PodcastSearcherRegistry.lookupUrl(url) + .subscribeOn(Schedulers.io()) + .observeOn(Schedulers.io()) + .subscribe(lookedUpUrl -> startFeedDownload(lookedUpUrl, username, password), + error -> { + showNoPodcastFoundError(); + Log.e(TAG, Log.getStackTraceString(error)); + }); + } + private void startFeedDownload(String url, String username, String password) { Log.d(TAG, "Starting feed download"); url = URLChecker.prepareURL(url); @@ -580,7 +599,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity { if (urls.size() == 1) { // Skip dialog and display the item directly - resetIntent(urls.get(0), titles.get(0)); + resetIntent(urls.get(0)); startFeedDownload(urls.get(0), null, null); return true; } @@ -589,7 +608,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity { DialogInterface.OnClickListener onClickListener = (dialog, which) -> { String selectedUrl = urls.get(which); dialog.dismiss(); - resetIntent(selectedUrl, titles.get(which)); + resetIntent(selectedUrl); FeedPreferences prefs = feed.getPreferences(); if(prefs != null) { startFeedDownload(selectedUrl, prefs.getUsername(), prefs.getPassword()); |