From 0fe7f32f6010ba7b76ff24d712cccb2a7b2df245 Mon Sep 17 00:00:00 2001 From: k0shk0sh Date: Sun, 7 Jan 2018 12:30:59 +0100 Subject: [PATCH] this commit fixes #1394 fixes #1392 fixes #1372 fixes #1371 fixes #1360 fixes #1280 --- app/src/main/AndroidManifest.xml | 1 + .../provider/scheme/SchemeParser.java | 27 +++++++++++++++++-- .../timeline/handler/DrawableHandler.java | 9 +++---- .../handler/drawable/DrawableGetter.java | 3 +++ .../editor/comment/CommentEditorFragment.kt | 3 +-- .../ui/modules/main/MainActivity.java | 26 ++++++++++++++++++ .../ui/modules/main/MainPresenter.java | 4 ++- .../issues/pager/MyIssuesPagerFragment.java | 10 +++++++ .../pager/MyPullsPagerFragment.java | 10 +++++++ .../category/SettingsCategoryFragment.java | 5 ++-- build.gradle | 4 +-- gradle/wrapper/gradle-wrapper.properties | 4 +-- 12 files changed, 90 insertions(+), 16 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dd54f09d..846df109 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,6 +9,7 @@ + intentOptional = returnNonNull(trending, projects, userIntent, repoIssues, repoPulls, + Intent search = getSearchIntent(context, data); + Optional intentOptional = returnNonNull(trending, projects, search, userIntent, repoIssues, repoPulls, pullRequestIntent, label, commit, commits, createIssueIntent, issueIntent, releasesIntent, repoIntent, repoWikiIntent, blob); Optional empty = Optional.empty(); @@ -267,7 +268,6 @@ public class SchemeParser { return null; } if (issueNumber < 1) return null; - Logger.e(commentId); return IssuePagerActivity.createIntent(context, repo, owner, issueNumber, showRepoBtn, LinkParserHelper.isEnterprise(uri.toString()), commentId == null ? 0 : commentId); } @@ -463,6 +463,11 @@ public class SchemeParser { if (segments != null && segments.size() == 3 && uri.getLastPathSegment().equalsIgnoreCase("issues")) { String owner = segments.get(0); String repo = segments.get(1); + Uri encoded = Uri.parse(uri.toString().replace("utf8=%E2%9C%93&", "")); + if (encoded.getQueryParameter("q") != null) { + String query = encoded.getQueryParameter("q"); + return FilterIssuesActivity.getIntent(context, owner, repo, query); + } return RepoPagerActivity.createIntent(context, repo, owner, RepoPagerMvp.ISSUES); } return null; @@ -473,6 +478,11 @@ public class SchemeParser { if (segments != null && segments.size() == 3 && uri.getLastPathSegment().equalsIgnoreCase("pulls")) { String owner = segments.get(0); String repo = segments.get(1); + Uri encoded = Uri.parse(uri.toString().replace("utf8=%E2%9C%93&", "")); + if (encoded.getQueryParameter("q") != null) { + String query = encoded.getQueryParameter("q"); + return FilterIssuesActivity.getIntent(context, owner, repo, query); + } return RepoPagerActivity.createIntent(context, repo, owner, RepoPagerMvp.PULL_REQUEST); } return null; @@ -552,4 +562,17 @@ public class SchemeParser { } return null; } + + @Nullable private static Intent getSearchIntent(@NonNull Context context, @NonNull Uri uri) { + List segments = uri.getPathSegments(); + if (segments == null || segments.size() > 1) return null; + String search = segments.get(0); + if ("search".equalsIgnoreCase(search)) { + Uri encoded = Uri.parse(uri.toString().replace("utf8=%E2%9C%93&", "")); + String query = encoded.getQueryParameter("q"); + Logger.e(encoded, query); + return SearchActivity.getIntent(context, query); + } + return null; + } } diff --git a/app/src/main/java/com/fastaccess/provider/timeline/handler/DrawableHandler.java b/app/src/main/java/com/fastaccess/provider/timeline/handler/DrawableHandler.java index fdf7ffa0..fe6517db 100644 --- a/app/src/main/java/com/fastaccess/provider/timeline/handler/DrawableHandler.java +++ b/app/src/main/java/com/fastaccess/provider/timeline/handler/DrawableHandler.java @@ -38,15 +38,14 @@ import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; if (!PrefGetter.isAutoImageDisabled()) { builder.append(""); if (isNull()) return; + builder.append("\n"); DrawableGetter imageGetter = new DrawableGetter(textView, width); builder.setSpan(new ImageSpan(imageGetter.getDrawable(src)), start, builder.length(), SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan(new CenterSpan(), start, builder.length(), SPAN_EXCLUSIVE_EXCLUSIVE); - appendNewLine(builder); + builder.append("\n"); } else { - builder.append(SpannableBuilder.builder().clickable("Image", v -> { - SchemeParser.launchUri(v.getContext(), src); - })); - appendNewLine(builder); + builder.append(SpannableBuilder.builder().clickable("Image", v -> SchemeParser.launchUri(v.getContext(), src))); + builder.append("\n"); } } } diff --git a/app/src/main/java/com/fastaccess/provider/timeline/handler/drawable/DrawableGetter.java b/app/src/main/java/com/fastaccess/provider/timeline/handler/drawable/DrawableGetter.java index ed2c9188..12c78e0e 100644 --- a/app/src/main/java/com/fastaccess/provider/timeline/handler/drawable/DrawableGetter.java +++ b/app/src/main/java/com/fastaccess/provider/timeline/handler/drawable/DrawableGetter.java @@ -3,6 +3,7 @@ package com.fastaccess.provider.timeline.handler.drawable; import android.content.Context; import android.graphics.drawable.Drawable; import android.support.annotation.NonNull; +import android.support.v4.content.ContextCompat; import android.text.Html; import android.widget.TextView; @@ -36,8 +37,10 @@ public class DrawableGetter implements Html.ImageGetter, Drawable.Callback { Context context = container.get().getContext(); final GenericRequestBuilder load = Glide.with(context) .load(url) + .placeholder(ContextCompat.getDrawable(context, R.drawable.ic_image)) .dontAnimate(); final GlideDrawableTarget target = new GlideDrawableTarget(urlDrawable, container, width); + load.override(width, width / 2); load.into(target); cachedTargets.add(target); } diff --git a/app/src/main/java/com/fastaccess/ui/modules/editor/comment/CommentEditorFragment.kt b/app/src/main/java/com/fastaccess/ui/modules/editor/comment/CommentEditorFragment.kt index 6d7996ee..bfb552b8 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/editor/comment/CommentEditorFragment.kt +++ b/app/src/main/java/com/fastaccess/ui/modules/editor/comment/CommentEditorFragment.kt @@ -18,7 +18,6 @@ import com.fastaccess.helper.Bundler import com.fastaccess.helper.InputHelper import com.fastaccess.helper.ViewHelper import com.fastaccess.provider.emoji.Emoji -import com.fastaccess.provider.timeline.CommentsHelper import com.fastaccess.ui.base.BaseFragment import com.fastaccess.ui.base.mvp.BaseMvp import com.fastaccess.ui.base.mvp.presenter.BasePresenter @@ -96,7 +95,7 @@ class CommentEditorFragment : BaseFragment implements MainMvp.View { @State @MainMvp.NavigationType int navType = MainMvp.FEEDS; @@ -146,6 +149,29 @@ public class MainActivity extends BaseActivity impl finish(); } + @Override public void onScrollTop(int index) { + super.onScrollTop(index); + FragmentManager fragmentManager = getSupportFragmentManager(); + if (index == 0) { + FeedsFragment homeView = (FeedsFragment) getFragmentByTag(fragmentManager, FeedsFragment.TAG); + if (homeView != null) { + homeView.onScrollTop(index); + } + } else if (index == 1) { + MyIssuesPagerFragment issuesView = (MyIssuesPagerFragment) getFragmentByTag + (fragmentManager, MyIssuesPagerFragment.TAG); + if (issuesView != null) { + issuesView.onScrollTop(index); + } + } else if (index == 2) { + MyPullsPagerFragment pullRequestView = (MyPullsPagerFragment) getFragmentByTag + (fragmentManager, MyPullsPagerFragment.TAG); + if (pullRequestView != null) { + pullRequestView.onScrollTop(0); + } + } + } + @Shortcut(id = "myIssues", icon = R.drawable.ic_app_shortcut_issues, shortLabelRes = R.string.issues, rank = 2, action = "myIssues") public void myIssues() {}//do nothing diff --git a/app/src/main/java/com/fastaccess/ui/modules/main/MainPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/main/MainPresenter.java index 7f7d7b0c..4e2fb50a 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/main/MainPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/main/MainPresenter.java @@ -132,5 +132,7 @@ public class MainPresenter extends BasePresenter implements MainMv } } - @Override public void onMenuItemReselect(@IdRes int id, int position, boolean fromUser) {} + @Override public void onMenuItemReselect(@IdRes int id, int position, boolean fromUser) { + sendToView(view -> view.onScrollTop(position)); + } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/main/issues/pager/MyIssuesPagerFragment.java b/app/src/main/java/com/fastaccess/ui/modules/main/issues/pager/MyIssuesPagerFragment.java index 0d2ab609..d7ac22ab 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/main/issues/pager/MyIssuesPagerFragment.java +++ b/app/src/main/java/com/fastaccess/ui/modules/main/issues/pager/MyIssuesPagerFragment.java @@ -109,6 +109,16 @@ public class MyIssuesPagerFragment extends BaseFragment