Skip to content

Commit 2a80247

Browse files
authored
Unable to open PR editor: Cannot read properties of undefined (reading 'toLowerCase' (#6388)
Fixes #6385
1 parent 6de1eb0 commit 2a80247

3 files changed

Lines changed: 40 additions & 26 deletions

File tree

src/github/pullRequestModel.ts

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,11 @@ import { IssueModel } from './issueModel';
7272
import {
7373
convertRESTPullRequestToRawPullRequest,
7474
convertRESTReviewEvent,
75-
getAvatarWithEnterpriseFallback,
7675
getReactionGroup,
7776
insertNewCommitsSinceReview,
7877
parseGraphQLComment,
7978
parseGraphQLReaction,
79+
parseGraphQLReviewers,
8080
parseGraphQLReviewEvent,
8181
parseGraphQLReviewThread,
8282
parseGraphQLTimelineEvents,
@@ -975,30 +975,7 @@ export class PullRequestModel extends IssueModel<PullRequest> implements IPullRe
975975
return [];
976976
}
977977

978-
const reviewers: (IAccount | ITeam)[] = [];
979-
for (const reviewer of data.repository.pullRequest.reviewRequests.nodes) {
980-
if (reviewer.requestedReviewer?.login) {
981-
const account: IAccount = {
982-
login: reviewer.requestedReviewer.login,
983-
url: reviewer.requestedReviewer.url,
984-
avatarUrl: getAvatarWithEnterpriseFallback(reviewer.requestedReviewer.avatarUrl, undefined, remote.isEnterprise),
985-
email: reviewer.requestedReviewer.email,
986-
name: reviewer.requestedReviewer.name,
987-
id: reviewer.requestedReviewer.id
988-
};
989-
reviewers.push(account);
990-
} else if (reviewer.requestedReviewer) {
991-
const team: ITeam = {
992-
name: reviewer.requestedReviewer.name,
993-
url: reviewer.requestedReviewer.url,
994-
avatarUrl: getAvatarWithEnterpriseFallback(reviewer.requestedReviewer.avatarUrl, undefined, remote.isEnterprise),
995-
id: reviewer.requestedReviewer.id!,
996-
org: remote.owner,
997-
slug: reviewer.requestedReviewer.slug!
998-
};
999-
reviewers.push(team);
1000-
}
1001-
}
978+
const reviewers: (IAccount | ITeam)[] = parseGraphQLReviewers(data, remote);
1002979
Logger.debug('Get Review Requests - done', PullRequestModel.ID);
1003980
return reviewers;
1004981
}

src/github/queriesShared.gql

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,11 @@ query GetReviewRequests($owner: String!, $name: String!, $number: Int!) {
357357
email
358358
name
359359
}
360+
... on Bot {
361+
id
362+
login
363+
avatarUrl
364+
}
360365
}
361366
}
362367
}

src/github/utils.ts

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { IComment, IReviewThread, Reaction, SPECIAL_COMMENT_AUTHORS, SubjectType
1414
import { DiffHunk, parseDiffHunk } from '../common/diffHunk';
1515
import { GitHubRef } from '../common/githubRef';
1616
import Logger from '../common/logger';
17-
import { Remote } from '../common/remote';
17+
import { GitHubRemote, Remote } from '../common/remote';
1818
import { Resource } from '../common/resources';
1919
import { GITHUB_ENTERPRISE, OVERRIDE_DEFAULT_BRANCH, PR_SETTINGS_NAMESPACE, URI } from '../common/settingKeys';
2020
import * as Common from '../common/timelineEvent';
@@ -594,6 +594,38 @@ function parseAuthor(
594594
}
595595
}
596596

597+
export function parseGraphQLReviewers(data: GraphQL.GetReviewRequestsResponse, remote: GitHubRemote): (IAccount | ITeam)[] {
598+
if (!data.repository) {
599+
return [];
600+
}
601+
const reviewers: (IAccount | ITeam)[] = [];
602+
for (const reviewer of data.repository.pullRequest.reviewRequests.nodes) {
603+
if (reviewer.requestedReviewer?.login) {
604+
const account: IAccount = {
605+
login: reviewer.requestedReviewer.login,
606+
url: reviewer.requestedReviewer.url,
607+
avatarUrl: getAvatarWithEnterpriseFallback(reviewer.requestedReviewer.avatarUrl, undefined, remote.isEnterprise),
608+
email: reviewer.requestedReviewer.email,
609+
name: reviewer.requestedReviewer.name,
610+
id: reviewer.requestedReviewer.id,
611+
specialDisplayName: SPECIAL_COMMENT_AUTHORS[reviewer.requestedReviewer.login] ? (reviewer.requestedReviewer.name ?? SPECIAL_COMMENT_AUTHORS[reviewer.requestedReviewer.login].name) : undefined,
612+
};
613+
reviewers.push(account);
614+
} else if (reviewer.requestedReviewer) {
615+
const team: ITeam = {
616+
name: reviewer.requestedReviewer.name,
617+
url: reviewer.requestedReviewer.url,
618+
avatarUrl: getAvatarWithEnterpriseFallback(reviewer.requestedReviewer.avatarUrl, undefined, remote.isEnterprise),
619+
id: reviewer.requestedReviewer.id!,
620+
org: remote.owner,
621+
slug: reviewer.requestedReviewer.slug!
622+
};
623+
reviewers.push(team);
624+
}
625+
}
626+
return reviewers;
627+
}
628+
597629
function parseActor(
598630
author: { login: string; url: string; avatarUrl: string; } | null,
599631
githubRepository: GitHubRepository,

0 commit comments

Comments
 (0)