diff --git a/Classes/Issues/PullRequest+IssueType.swift b/Classes/Issues/PullRequest+IssueType.swift index cc17990a..058ae6a4 100644 --- a/Classes/Issues/PullRequest+IssueType.swift +++ b/Classes/Issues/PullRequest+IssueType.swift @@ -44,6 +44,7 @@ extension IssueOrPullRequestQuery.Data.Repository.IssueOrPullRequest.AsPullReque for node in timeline.nodes ?? [] { guard let node = node else { continue } + if let comment = node.asIssueComment { if let model = createCommentModel( id: comment.fragments.nodeFields.id, @@ -123,10 +124,29 @@ extension IssueOrPullRequestQuery.Data.Repository.IssueOrPullRequest.AsPullReque pullRequest: false ) results.append(model) + } else if let thread = node.asPullRequestReviewThread { + results += commentModels(thread: thread, width: width) } } return results } + private func commentModels(thread: Timeline.Node.AsPullRequestReviewThread, width: CGFloat) -> [ListDiffable] { + var results = [ListDiffable]() + for node in thread.comments.nodes ?? [] { + guard let fragments = node?.fragments else { continue } + + if let model = createCommentModel( + id: fragments.nodeFields.id, + commentFields: fragments.commentFields, + reactionFields: fragments.reactionFields, + width: width + ) { + results.append(model) + } + } + return results + } + } diff --git a/Resources/Info.plist b/Resources/Info.plist index 55a9a933..b31ea16d 100644 --- a/Resources/Info.plist +++ b/Resources/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.0.0 CFBundleVersion - 388 + 392 LSApplicationQueriesSchemes org-appextension-feature-password-management diff --git a/gql/API.swift b/gql/API.swift index 1687ea00..6ed12919 100644 --- a/gql/API.swift +++ b/gql/API.swift @@ -317,8 +317,9 @@ public final class IssueOrPullRequestQuery: GraphQLQuery { " __typename" + " nodes {" + " __typename" + + " ...reactionFields" + + " ...nodeFields" + " ...commentFields" + - " position" + " path" + " diffHunk" + " }" + @@ -326,6 +327,7 @@ public final class IssueOrPullRequestQuery: GraphQLQuery { " }" + " ... on PullRequestReview {" + " __typename" + + " ...nodeFields" + " ...commentFields" + " state" + " submittedAt" + @@ -957,11 +959,13 @@ public final class IssueOrPullRequestQuery: GraphQLQuery { state = try reader.value(for: Field(responseName: "state")) submittedAt = try reader.optionalValue(for: Field(responseName: "submittedAt")) + let nodeFields = try NodeFields(reader: reader) let commentFields = try CommentFields(reader: reader) - fragments = Fragments(commentFields: commentFields) + fragments = Fragments(nodeFields: nodeFields, commentFields: commentFields) } public struct Fragments { + public let nodeFields: NodeFields public let commentFields: CommentFields } @@ -1340,8 +1344,6 @@ public final class IssueOrPullRequestQuery: GraphQLQuery { public struct Node: GraphQLMappable { public let __typename: String - /// The line index in the diff to which the comment applies. - public let position: Int? /// The path to which the comment applies. public let path: String /// The diff hunk to which the comment applies. @@ -1351,15 +1353,18 @@ public final class IssueOrPullRequestQuery: GraphQLQuery { public init(reader: GraphQLResultReader) throws { __typename = try reader.value(for: Field(responseName: "__typename")) - position = try reader.optionalValue(for: Field(responseName: "position")) path = try reader.value(for: Field(responseName: "path")) diffHunk = try reader.value(for: Field(responseName: "diffHunk")) + let reactionFields = try ReactionFields(reader: reader) + let nodeFields = try NodeFields(reader: reader) let commentFields = try CommentFields(reader: reader) - fragments = Fragments(commentFields: commentFields) + fragments = Fragments(reactionFields: reactionFields, nodeFields: nodeFields, commentFields: commentFields) } public struct Fragments { + public let reactionFields: ReactionFields + public let nodeFields: NodeFields public let commentFields: CommentFields } } diff --git a/gql/IssueOrPullRequest.graphql b/gql/IssueOrPullRequest.graphql index 929964f8..e1917ab5 100644 --- a/gql/IssueOrPullRequest.graphql +++ b/gql/IssueOrPullRequest.graphql @@ -173,14 +173,16 @@ query IssueOrPullRequest($owner: String!, $repo: String!, $number: Int!, $page_s ... on PullRequestReviewThread { comments(first:$page_size) { nodes { + ...reactionFields + ...nodeFields ...commentFields - position path diffHunk } } } ... on PullRequestReview { + ...nodeFields ...commentFields state submittedAt