Skip to content

Commit e9cf1fb

Browse files
Copilotalexr00
andcommitted
Modify GraphQL query to exclude pending reviews from last review
Co-authored-by: alexr00 <38270282+alexr00@users.noreply.github.com>
1 parent 255ccfc commit e9cf1fb

File tree

4 files changed

+28
-16
lines changed

4 files changed

+28
-16
lines changed

src/github/graphql.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -317,10 +317,12 @@ export interface LatestUpdatesResponse {
317317
export interface LatestReviewCommitResponse {
318318
repository: {
319319
pullRequest: {
320-
viewerLatestReview: {
321-
commit: {
322-
oid: string;
323-
}
320+
reviews: {
321+
nodes: {
322+
commit: {
323+
oid: string;
324+
}
325+
}[];
324326
};
325327
};
326328
} | null;

src/github/pullRequestModel.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -598,6 +598,7 @@ export class PullRequestModel extends IssueModel<PullRequest> implements IPullRe
598598
async getViewerLatestReviewCommit(): Promise<{ sha: string } | undefined> {
599599
Logger.debug(`Fetch viewers latest review commit`, IssueModel.ID);
600600
const { query, remote, schema } = await this.githubRepository.ensure();
601+
const currentUser = (await this.githubRepository.getAuthenticatedUser()).login;
601602

602603
try {
603604
const { data } = await query<LatestReviewCommitResponse>({
@@ -606,15 +607,17 @@ export class PullRequestModel extends IssueModel<PullRequest> implements IPullRe
606607
owner: remote.owner,
607608
name: remote.repositoryName,
608609
number: this.number,
610+
author: currentUser,
609611
},
610612
});
611613

612614
if (data.repository === null) {
613615
Logger.error('Unexpected null repository while getting last review commit', PullRequestModel.ID);
614616
}
615617

616-
return data.repository?.pullRequest.viewerLatestReview ? {
617-
sha: data.repository?.pullRequest.viewerLatestReview.commit.oid,
618+
const latestReview = data.repository?.pullRequest.reviews.nodes[0];
619+
return latestReview ? {
620+
sha: latestReview.commit.oid,
618621
} : undefined;
619622
}
620623
catch (e) {

src/github/queriesShared.gql

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -342,12 +342,14 @@ query IssueTimelineEvents($owner: String!, $name: String!, $number: Int!, $last:
342342
}
343343
}
344344

345-
query LatestReviewCommit($owner: String!, $name: String!, $number: Int!) {
345+
query LatestReviewCommit($owner: String!, $name: String!, $number: Int!, $author: String!) {
346346
repository(owner: $owner, name: $name) {
347347
pullRequest(number: $number) {
348-
viewerLatestReview {
349-
commit {
350-
oid
348+
reviews(first: 1, author: $author, states: [APPROVED, CHANGES_REQUESTED, COMMENTED, DISMISSED]) {
349+
nodes {
350+
commit {
351+
oid
352+
}
351353
}
352354
}
353355
}

src/test/builders/graphql/latestReviewCommitBuilder.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,21 @@ import { RateLimitBuilder } from './rateLimitBuilder';
1010

1111
type Repository = NonNullable<LatestReviewCommitResponse['repository']>;
1212
type PullRequest = Repository['pullRequest'];
13-
type ViewerLatestReview = PullRequest['viewerLatestReview'];
14-
type Commit = ViewerLatestReview['commit'];
13+
type Reviews = PullRequest['reviews'];
14+
type ReviewNode = Reviews['nodes'][0];
15+
type Commit = ReviewNode['commit'];
1516

1617
export const LatestReviewCommitBuilder = createBuilderClass<LatestReviewCommitResponse>()({
1718
repository: createLink<Repository>()({
1819
pullRequest: createLink<PullRequest>()({
19-
viewerLatestReview: createLink<ViewerLatestReview>()({
20-
commit: createLink<Commit>()({
21-
oid: { default: 'abc' },
22-
}),
20+
reviews: createLink<Reviews>()({
21+
nodes: [
22+
createLink<ReviewNode>()({
23+
commit: createLink<Commit>()({
24+
oid: { default: 'abc' },
25+
}),
26+
}),
27+
],
2328
}),
2429
}),
2530
}),

0 commit comments

Comments
 (0)