From 7166e5bc81d2fb392e39dcdbbda242b513dcad17 Mon Sep 17 00:00:00 2001 From: Kosh Date: Sat, 18 Mar 2017 18:52:48 +0800 Subject: [PATCH] added a way to navigate to repo when clicking on notification or a link from comments, webview to close #163 --- .../provider/scheme/SchemeParser.java | 49 +++++++------------ .../notification/NotificationsView.java | 2 +- .../code/commit/details/CommitPagerMvp.java | 2 + .../commit/details/CommitPagerPresenter.java | 6 +++ .../code/commit/details/CommitPagerView.java | 11 +++++ .../issues/issue/details/IssuePagerMvp.java | 4 +- .../issue/details/IssuePagerPresenter.java | 12 +++-- .../issues/issue/details/IssuePagerView.java | 16 ++++++ .../details/PullRequestPagerMvp.java | 2 + .../details/PullRequestPagerPresenter.java | 6 +++ .../details/PullRequestPagerView.java | 16 ++++++ .../prettifier/pretty/PrettifyWebView.java | 12 ++--- app/src/main/res/menu/issue_menu.xml | 8 ++- app/src/main/res/menu/pull_request_menu.xml | 8 ++- app/src/main/res/menu/share_menu.xml | 8 +++ 15 files changed, 119 insertions(+), 43 deletions(-) diff --git a/app/src/main/java/com/fastaccess/provider/scheme/SchemeParser.java b/app/src/main/java/com/fastaccess/provider/scheme/SchemeParser.java index 83dcb8b0..dd3b8a03 100644 --- a/app/src/main/java/com/fastaccess/provider/scheme/SchemeParser.java +++ b/app/src/main/java/com/fastaccess/provider/scheme/SchemeParser.java @@ -25,8 +25,6 @@ import com.fastaccess.ui.modules.user.UserPagerView; import java.util.List; -import static android.content.Intent.ACTION_VIEW; - /** * Created by Kosh on 09 Dec 2016, 4:44 PM */ @@ -38,14 +36,12 @@ public class SchemeParser { private static final String API_AUTHORITY = "api.github.com"; private static final String PROTOCOL_HTTPS = "https"; - public static void launchUri(@NonNull Context context, @NonNull Intent data) { - if (data.getData() != null) { - launchUri(context, data.getData()); - } + public static void launchUri(@NonNull Context context, @NonNull Uri data) { + launchUri(context, data, false); } - public static void launchUri(@NonNull Context context, @NonNull Uri data) { - Intent intent = convert(context, data); + public static void launchUri(@NonNull Context context, @NonNull Uri data, boolean showRepoBtn) { + Intent intent = convert(context, data, showRepoBtn); if (intent != null) { context.startActivity(intent); } else { @@ -58,14 +54,7 @@ public class SchemeParser { } } - @Nullable private static Intent convert(@NonNull Context context, final Intent intent) { - if (intent == null) return null; - if (!ACTION_VIEW.equals(intent.getAction())) return null; - Uri data = intent.getData(); - return convert(context, data); - } - - @Nullable private static Intent convert(@NonNull Context context, Uri data) { + @Nullable private static Intent convert(@NonNull Context context, Uri data, boolean showRepoBtn) { if (data == null) return null; if (InputHelper.isEmpty(data.getHost()) || InputHelper.isEmpty(data.getScheme())) { String host = data.getHost(); @@ -85,10 +74,10 @@ public class SchemeParser { } } - return getIntentForURI(context, data); + return getIntentForURI(context, data, showRepoBtn); } - @Nullable private static Intent getIntentForURI(@NonNull Context context, @NonNull Uri data) { + @Nullable private static Intent getIntentForURI(@NonNull Context context, @NonNull Uri data, boolean showRepoBtn) { if (HOST_GISTS.equals(data.getHost())) { String gist = getGistId(data); if (gist != null) { @@ -99,12 +88,12 @@ public class SchemeParser { if (TextUtils.equals(authority, HOST_DEFAULT) || TextUtils.equals(authority, RAW_AUTHORITY) || TextUtils.equals(authority, API_AUTHORITY)) { Intent userIntent = getUser(context, data); - Intent pullRequestIntent = getPullRequestIntent(context, data); + Intent pullRequestIntent = getPullRequestIntent(context, data, showRepoBtn); Intent createIssueIntent = getCreateIssueIntent(context, data); - Intent issueIntent = getIssueIntent(context, data); + Intent issueIntent = getIssueIntent(context, data, showRepoBtn); Intent repoIntent = getRepo(context, data); - Intent commit = getCommit(context, data); - Intent commits = getCommits(context, data); + Intent commit = getCommit(context, data, showRepoBtn); + Intent commits = getCommits(context, data, showRepoBtn); Intent blob = getBlob(context, data); Optional intentOptional = returnNonNull(userIntent, pullRequestIntent, commit, commits, createIssueIntent, issueIntent, repoIntent, blob); @@ -119,7 +108,7 @@ public class SchemeParser { return null; } - @Nullable private static Intent getPullRequestIntent(@NonNull Context context, @NonNull Uri uri) { + @Nullable private static Intent getPullRequestIntent(@NonNull Context context, @NonNull Uri uri, boolean showRepoBtn) { List segments = uri.getPathSegments(); if (segments == null || segments.size() < 4) return null; String owner; @@ -145,10 +134,10 @@ public class SchemeParser { return null; } if (issueNumber < 1) return null; - return PullRequestPagerView.createIntent(context, repo, owner, issueNumber); + return PullRequestPagerView.createIntent(context, repo, owner, issueNumber, showRepoBtn); } - @Nullable private static Intent getIssueIntent(@NonNull Context context, @NonNull Uri uri) { + @Nullable private static Intent getIssueIntent(@NonNull Context context, @NonNull Uri uri, boolean showRepoBtn) { List segments = uri.getPathSegments(); if (segments == null || segments.size() < 4) return null; String owner; @@ -174,7 +163,7 @@ public class SchemeParser { return null; } if (issueNumber < 1) return null; - return IssuePagerView.createIntent(context, repo, owner, issueNumber); + return IssuePagerView.createIntent(context, repo, owner, issueNumber, showRepoBtn); } @Nullable private static Intent getRepo(@NonNull Context context, @NonNull Uri uri) { @@ -204,25 +193,25 @@ public class SchemeParser { return null; } - @Nullable private static Intent getCommits(@NonNull Context context, @NonNull Uri uri) { + @Nullable private static Intent getCommits(@NonNull Context context, @NonNull Uri uri, boolean showRepoBtn) { List segments = uri.getPathSegments(); if (segments == null || segments.isEmpty() || segments.size() < 4) return null; if (segments.get(3).equals("commits")) { String login = segments.get(1); String repoId = segments.get(2); String sha = segments.get(4); - return CommitPagerView.createIntent(context, repoId, login, sha); + return CommitPagerView.createIntent(context, repoId, login, sha, showRepoBtn); } return null; } - @Nullable private static Intent getCommit(@NonNull Context context, @NonNull Uri uri) { + @Nullable private static Intent getCommit(@NonNull Context context, @NonNull Uri uri, boolean showRepoBtn) { List segments = uri.getPathSegments(); if (segments == null || segments.size() < 4 || !"commit".equals(segments.get(2))) return null; String login = segments.get(0); String repoId = segments.get(1); String sha = segments.get(3); - return CommitPagerView.createIntent(context, repoId, login, sha); + return CommitPagerView.createIntent(context, repoId, login, sha, showRepoBtn); } @Nullable private static String getGistId(@NonNull Uri uri) { diff --git a/app/src/main/java/com/fastaccess/ui/modules/notification/NotificationsView.java b/app/src/main/java/com/fastaccess/ui/modules/notification/NotificationsView.java index bd7c9622..3c49364d 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/notification/NotificationsView.java +++ b/app/src/main/java/com/fastaccess/ui/modules/notification/NotificationsView.java @@ -75,7 +75,7 @@ public class NotificationsView extends BaseFragment implements private String sha; private String login; private String repoId; + private boolean showToRepoBtn; @Nullable @Override public Commit getCommit() { return commitModel; @@ -35,6 +36,7 @@ class CommitPagerPresenter extends BasePresenter implements sha = intent.getExtras().getString(BundleConstant.ID); login = intent.getExtras().getString(BundleConstant.EXTRA); repoId = intent.getExtras().getString(BundleConstant.EXTRA_TWO); + showToRepoBtn = intent.getExtras().getBoolean(BundleConstant.EXTRA_THREE); if (commitModel != null) { sendToView(CommitPagerMvp.View::onSetup); return; @@ -69,4 +71,8 @@ class CommitPagerPresenter extends BasePresenter implements return repoId; } + @Override public boolean showToRepoBtn() { + return showToRepoBtn; + } + } diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/CommitPagerView.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/CommitPagerView.java index 171ac29f..175bee0d 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/CommitPagerView.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/CommitPagerView.java @@ -56,11 +56,17 @@ public class CommitPagerView extends BaseActivity implements I private String login; private String repoId; private boolean isCollaborator; + private boolean showToRepoBtn; @Nullable @Override public Issue getIssue() { return issueModel; @@ -59,6 +60,7 @@ class IssuePagerPresenter extends BasePresenter implements I issueNumber = intent.getExtras().getInt(BundleConstant.ID); login = intent.getExtras().getString(BundleConstant.EXTRA); repoId = intent.getExtras().getString(BundleConstant.EXTRA_TWO); + showToRepoBtn = intent.getExtras().getBoolean(BundleConstant.EXTRA_THREE); if (issueModel != null) { issueNumber = issueModel.getNumber(); sendToView(IssuePagerMvp.View::onSetupIssue); @@ -120,6 +122,10 @@ class IssuePagerPresenter extends BasePresenter implements I return isCollaborator; } + @Override public boolean showToRepoBtn() { + return showToRepoBtn; + } + @Override public void onHandleConfirmDialog(@Nullable Bundle bundle) { if (bundle != null) { boolean proceedCloseIssue = bundle.getBoolean(BundleConstant.EXTRA); diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/IssuePagerView.java b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/IssuePagerView.java index 2d129a5b..d05f3845 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/IssuePagerView.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/IssuePagerView.java @@ -16,6 +16,7 @@ import com.fastaccess.R; import com.fastaccess.data.dao.FragmentPagerAdapterModel; import com.fastaccess.data.dao.LabelModel; import com.fastaccess.data.dao.MilestoneModel; +import com.fastaccess.data.dao.NameParser; import com.fastaccess.data.dao.model.Issue; import com.fastaccess.data.dao.model.User; import com.fastaccess.data.dao.types.IssueState; @@ -28,6 +29,7 @@ import com.fastaccess.helper.ParseDateFormat; import com.fastaccess.helper.ViewHelper; import com.fastaccess.ui.adapter.FragmentsPagerAdapter; import com.fastaccess.ui.base.BaseActivity; +import com.fastaccess.ui.modules.repos.RepoPagerView; import com.fastaccess.ui.modules.repos.extras.assignees.AssigneesView; import com.fastaccess.ui.modules.repos.extras.labels.LabelsView; import com.fastaccess.ui.modules.repos.extras.milestone.create.MilestoneActivityView; @@ -65,11 +67,17 @@ public class IssuePagerView extends BaseActivity private String login; private String repoId; private boolean isCollaborator; + private boolean showToRepoBtn; @Nullable @Override public PullRequest getPullRequest() { return pullRequest; @@ -60,6 +61,7 @@ class PullRequestPagerPresenter extends BasePresenter issueNumber = intent.getExtras().getInt(BundleConstant.ID); login = intent.getExtras().getString(BundleConstant.EXTRA); repoId = intent.getExtras().getString(BundleConstant.EXTRA_TWO); + showToRepoBtn = intent.getExtras().getBoolean(BundleConstant.EXTRA_THREE); if (pullRequest != null) { sendToView(PullRequestPagerMvp.View::onSetupIssue); return; @@ -119,6 +121,10 @@ class PullRequestPagerPresenter extends BasePresenter return getPullRequest() != null && getPullRequest().isMergeable() && !getPullRequest().isMerged(); } + @Override public boolean showToRepoBtn() { + return showToRepoBtn; + } + @Override public void onHandleConfirmDialog(@Nullable Bundle bundle) { if (bundle != null) { boolean proceedCloseIssue = bundle.getBoolean(BundleConstant.EXTRA); diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/PullRequestPagerView.java b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/PullRequestPagerView.java index 26f55e81..fb1622ac 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/PullRequestPagerView.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/PullRequestPagerView.java @@ -16,6 +16,7 @@ import com.fastaccess.R; import com.fastaccess.data.dao.FragmentPagerAdapterModel; import com.fastaccess.data.dao.LabelModel; import com.fastaccess.data.dao.MilestoneModel; +import com.fastaccess.data.dao.NameParser; import com.fastaccess.data.dao.model.PullRequest; import com.fastaccess.data.dao.model.User; import com.fastaccess.data.dao.types.IssueState; @@ -27,6 +28,7 @@ import com.fastaccess.helper.Logger; import com.fastaccess.helper.ViewHelper; import com.fastaccess.ui.adapter.FragmentsPagerAdapter; import com.fastaccess.ui.base.BaseActivity; +import com.fastaccess.ui.modules.repos.RepoPagerView; import com.fastaccess.ui.modules.repos.extras.assignees.AssigneesView; import com.fastaccess.ui.modules.repos.extras.labels.LabelsView; import com.fastaccess.ui.modules.repos.extras.milestone.create.MilestoneActivityView; @@ -65,11 +67,17 @@ public class PullRequestPagerView extends BaseActivity + + + app:showAsAction="never"/> \ No newline at end of file diff --git a/app/src/main/res/menu/pull_request_menu.xml b/app/src/main/res/menu/pull_request_menu.xml index 253bb6ad..5dd1ab9a 100644 --- a/app/src/main/res/menu/pull_request_menu.xml +++ b/app/src/main/res/menu/pull_request_menu.xml @@ -49,10 +49,16 @@ + + + app:showAsAction="never"/> \ No newline at end of file diff --git a/app/src/main/res/menu/share_menu.xml b/app/src/main/res/menu/share_menu.xml index 2e5ea11e..62854cb5 100644 --- a/app/src/main/res/menu/share_menu.xml +++ b/app/src/main/res/menu/share_menu.xml @@ -7,4 +7,12 @@ android:icon="@drawable/ic_share" android:title="@string/share" app:showAsAction="always"/> + + + \ No newline at end of file