mirror of
https://github.com/zhigang1992/GitHawk.git
synced 2026-06-04 19:43:31 +08:00
Adds "view repository" alert action from Issues (#425)
This commit is contained in:
committed by
Ryan Nystrom
parent
2b609287d1
commit
79cc91ae68
@@ -115,6 +115,7 @@ extension GithubClient {
|
||||
mentionableUsers: mentionableUsers,
|
||||
timelinePages: [newPage] + (prependResult?.timelinePages ?? []),
|
||||
viewerCanUpdate: issueType.viewerCanUpdate,
|
||||
hasIssuesEnabled: repository?.hasIssuesEnabled ?? false,
|
||||
viewerCanAdminister: canAdmin
|
||||
)
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ struct IssueResult {
|
||||
let mentionableUsers: [AutocompleteUser]
|
||||
let timelinePages: [IssueTimelinePage]
|
||||
let viewerCanUpdate: Bool
|
||||
let hasIssuesEnabled: Bool
|
||||
let viewerCanAdminister: Bool
|
||||
|
||||
var timelineViewModels: [ListDiffable] {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"]]))
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user