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