Adds "view repository" alert action from Issues (#425)

This commit is contained in:
Rizwan Mohamed Ibrahim
2017-09-25 22:16:17 +05:30
committed by Ryan Nystrom
parent 2b609287d1
commit 79cc91ae68
5 changed files with 27 additions and 0 deletions

View File

@@ -115,6 +115,7 @@ extension GithubClient {
mentionableUsers: mentionableUsers,
timelinePages: [newPage] + (prependResult?.timelinePages ?? []),
viewerCanUpdate: issueType.viewerCanUpdate,
hasIssuesEnabled: repository?.hasIssuesEnabled ?? false,
viewerCanAdminister: canAdmin
)

View File

@@ -24,6 +24,7 @@ struct IssueResult {
let mentionableUsers: [AutocompleteUser]
let timelinePages: [IssueTimelinePage]
let viewerCanUpdate: Bool
let hasIssuesEnabled: Bool
let viewerCanAdminister: Bool
var timelineViewModels: [ListDiffable] {

View File

@@ -261,6 +261,23 @@ IssueTextActionsViewDelegate {
self?.setStatus(close: close)
})
}
func viewRepoAction() -> UIAlertAction? {
guard let result = current else {
return nil
}
let repo = RepositoryDetails(
owner: model.owner,
name: model.repo,
hasIssuesEnabled: current?.hasIssuesEnabled ?? false
)
let repoViewController = RepositoryViewController(client: client, repo: repo)
return UIAlertAction(title: NSLocalizedString("Open Repository", comment: ""), style: .default) { [weak self] _ in
guard let strongSelf = self else { return }
strongSelf.show(repoViewController, sender: nil)
}
}
func onMore(sender: UIBarButtonItem) {
let alert = UIAlertController.configured(preferredStyle: .actionSheet)
@@ -271,6 +288,9 @@ IssueTextActionsViewDelegate {
alert.addAction(shareAction(sender: sender))
alert.addAction(safariAction())
if let viewRepo = viewRepoAction() {
alert.addAction(viewRepo)
}
alert.addAction(UIAlertAction(title: Strings.cancel, style: .cancel))
alert.popoverPresentationController?.barButtonItem = sender
present(alert, animated: true)

View File

@@ -194,6 +194,7 @@ public final class IssueOrPullRequestQuery: GraphQLQuery {
" repository(owner: $owner, name: $repo) {" +
" __typename" +
" name" +
" hasIssuesEnabled" +
" viewerCanAdminister" +
" mentionableUsers(first: 100) {" +
" __typename" +
@@ -742,6 +743,8 @@ public final class IssueOrPullRequestQuery: GraphQLQuery {
public let __typename: String
/// The name of the repository.
public let name: String
/// Indicates if the repository has issues feature enabled.
public let hasIssuesEnabled: Bool
/// Indicates whether the viewer has admin permissions on this repository.
public let viewerCanAdminister: Bool
/// A list of Users that can be mentioned in the context of the repository.
@@ -752,6 +755,7 @@ public final class IssueOrPullRequestQuery: GraphQLQuery {
public init(reader: GraphQLResultReader) throws {
__typename = try reader.value(for: Field(responseName: "__typename"))
name = try reader.value(for: Field(responseName: "name"))
hasIssuesEnabled = try reader.value(for: Field(responseName: "hasIssuesEnabled"))
viewerCanAdminister = try reader.value(for: Field(responseName: "viewerCanAdminister"))
mentionableUsers = try reader.value(for: Field(responseName: "mentionableUsers", arguments: ["first": 100]))
issueOrPullRequest = try reader.optionalValue(for: Field(responseName: "issueOrPullRequest", arguments: ["number": reader.variables["number"]]))

View File

@@ -1,6 +1,7 @@
query IssueOrPullRequest($owner: String!, $repo: String!, $number: Int!, $page_size: Int!, $before: String) {
repository(owner: $owner, name: $repo) {
name
hasIssuesEnabled
viewerCanAdminister
mentionableUsers(first: 100) {
nodes {