From 5b8ff28556dedba2a3a9a9630be35fa7d6a0cf76 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Sat, 16 Sep 2017 02:27:39 +0900 Subject: [PATCH] Open youtube links directly from search (fixes #35) (#692) * Open youtube links directly from search (fixes #35) --- .../org/schabi/newpipe/RouterActivity.java | 5 +-- .../fragments/list/search/SearchFragment.java | 39 +++++++++++++++++++ .../schabi/newpipe/util/NavigationHelper.java | 28 +++++++++---- 3 files changed, 61 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/RouterActivity.java b/app/src/main/java/org/schabi/newpipe/RouterActivity.java index 434a34c7e..ce9c3802f 100644 --- a/app/src/main/java/org/schabi/newpipe/RouterActivity.java +++ b/app/src/main/java/org/schabi/newpipe/RouterActivity.java @@ -43,9 +43,8 @@ public class RouterActivity extends AppCompatActivity { } protected void handleUrl(String url) { - try { - NavigationHelper.openByLink(this, url); - } catch (Exception e) { + boolean success = NavigationHelper.openByLink(this, url); + if (!success) { Toast.makeText(this, R.string.url_not_supported_toast, Toast.LENGTH_LONG).show(); } diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java index 653c50109..93ac00207 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java @@ -34,6 +34,7 @@ import org.schabi.newpipe.ReCaptchaActivity; import org.schabi.newpipe.extractor.InfoItem; import org.schabi.newpipe.extractor.ListExtractor; import org.schabi.newpipe.extractor.NewPipe; +import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.search.SearchEngine; import org.schabi.newpipe.extractor.search.SearchResult; @@ -47,12 +48,14 @@ import org.schabi.newpipe.util.StateSaver; import java.util.ArrayList; import java.util.List; import java.util.Queue; +import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; import icepick.State; import io.reactivex.Notification; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.CompositeDisposable; import io.reactivex.disposables.Disposable; import io.reactivex.functions.Consumer; import io.reactivex.functions.Function; @@ -97,6 +100,7 @@ public class SearchFragment extends BaseListFragment suggestionPublisher = PublishSubject.create(); private Disposable searchDisposable; private Disposable suggestionWorkerDisposable; + private CompositeDisposable disposables = new CompositeDisposable(); private SuggestionListAdapter suggestionListAdapter; @@ -149,6 +153,7 @@ public class SearchFragment extends BaseListFragment() { + @Override + public Intent call() throws Exception { + return NavigationHelper.getIntentByLink(activity, service, query); + } + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Consumer() { + @Override + public void accept(Intent intent) throws Exception { + getFragmentManager().popBackStackImmediate(); + activity.startActivity(intent); + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + showError(getString(R.string.url_not_supported_toast), false); + hideLoading(); + } + })); + return; + } + } catch (Exception e) { + // Exception occurred, it's not a url + } + hideSoftKeyboard(searchEditText); this.searchQuery = query; this.currentPage = 0; @@ -532,6 +570,7 @@ public class SearchFragment extends BaseListFragment