diff --git a/src/github/pullRequestManager.ts b/src/github/pullRequestManager.ts index 9482f30d3b..268da75782 100644 --- a/src/github/pullRequestManager.ts +++ b/src/github/pullRequestManager.ts @@ -621,14 +621,20 @@ export class PullRequestManager { } async getReviewRequests(pullRequest: PullRequestModel): Promise { - const { remote, octokit } = await pullRequest.githubRepository.ensure(); + const githubRepository = pullRequest.githubRepository; + const { remote, octokit } = await githubRepository.ensure(); const result = await octokit.pullRequests.getReviewRequests({ owner: remote.owner, repo: remote.repositoryName, number: pullRequest.prNumber }); - return result.data.users.map(user => convertRESTUserToAccount(user)); + let repositoryReturnsAvatar = true + if(result.data.users.length) { + repositoryReturnsAvatar = await githubRepository.ensureRepositoryReturnsAvatar(result.data.users[0].avatar_url); + } + + return result.data.users.map(user => convertRESTUserToAccount(user, repositoryReturnsAvatar)); } async getPullRequestComments(pullRequest: PullRequestModel): Promise { @@ -667,7 +673,8 @@ export class PullRequestManager { */ private async getPullRequestReviewComments(pullRequest: PullRequestModel): Promise { Logger.debug(`Fetch comments of PR #${pullRequest.prNumber} - enter`, PullRequestManager.ID); - const { remote, octokit } = await (pullRequest as PullRequestModel).githubRepository.ensure(); + const githubRepository = (pullRequest as PullRequestModel).githubRepository; + const { remote, octokit } = await githubRepository.ensure(); const reviewData = await octokit.pullRequests.getComments({ owner: remote.owner, repo: remote.repositoryName, @@ -675,7 +682,13 @@ export class PullRequestManager { per_page: 100 }); Logger.debug(`Fetch comments of PR #${pullRequest.prNumber} - done`, PullRequestManager.ID); - const rawComments = reviewData.data.map(comment => this.addCommentPermissions(convertPullRequestsGetCommentsResponseItemToComment(comment), remote)); + + let repositoryReturnsAvatar = true + if(reviewData.data.length) { + repositoryReturnsAvatar = await githubRepository.ensureRepositoryReturnsAvatar(reviewData.data[0].user.avatar_url); + } + + const rawComments = reviewData.data.map(comment => this.addCommentPermissions(convertPullRequestsGetCommentsResponseItemToComment(comment, repositoryReturnsAvatar), remote)); return rawComments; } @@ -816,7 +829,8 @@ export class PullRequestManager { return this.addCommentToPendingReview(pullRequest, pendingReviewId, body, { inReplyTo: reply_to.graphNodeId }); } - const { octokit, remote } = await pullRequest.githubRepository.ensure(); + const githubRepository = pullRequest.githubRepository; + const { octokit, remote } = await githubRepository.ensure(); try { let ret = await octokit.pullRequests.createCommentReply({ @@ -827,7 +841,9 @@ export class PullRequestManager { in_reply_to: Number(reply_to.id) }); - return this.addCommentPermissions(convertPullRequestsGetCommentsResponseItemToComment(ret.data), remote); + const repositoryReturnsAvatar = await githubRepository.ensureRepositoryReturnsAvatar(ret.data.user.avatar_url); + + return this.addCommentPermissions(convertPullRequestsGetCommentsResponseItemToComment(ret.data, repositoryReturnsAvatar), remote); } catch (e) { this.handleError(e); } @@ -967,7 +983,8 @@ export class PullRequestManager { return this.addCommentToPendingReview(pullRequest as PullRequestModel, pendingReviewId, body, { path: commentPath, position }); } - const { octokit, remote } = await (pullRequest as PullRequestModel).githubRepository.ensure(); + const githubRepository = (pullRequest as PullRequestModel).githubRepository; + const { octokit, remote } = await githubRepository.ensure(); try { let ret = await octokit.pullRequests.createComment({ @@ -980,7 +997,9 @@ export class PullRequestManager { position: position }); - return this.addCommentPermissions(convertPullRequestsGetCommentsResponseItemToComment(ret.data), remote); + const repositoryReturnsAvatar = await githubRepository.ensureRepositoryReturnsAvatar(ret.data.user.avatar_url); + + return this.addCommentPermissions(convertPullRequestsGetCommentsResponseItemToComment(ret.data, repositoryReturnsAvatar), remote); } catch (e) { this.handleError(e); } @@ -1119,7 +1138,8 @@ export class PullRequestManager { return this.editPendingReviewComment(pullRequest, comment.graphNodeId, text); } - const { octokit, remote } = await pullRequest.githubRepository.ensure(); + const githubRepository = pullRequest.githubRepository; + const { octokit, remote } = await githubRepository.ensure(); const ret = await octokit.pullRequests.editComment({ owner: remote.owner, @@ -1128,7 +1148,9 @@ export class PullRequestManager { comment_id: comment.id }); - return this.addCommentPermissions(convertPullRequestsGetCommentsResponseItemToComment(ret.data), remote); + const repositoryReturnsAvatar = await githubRepository.ensureRepositoryReturnsAvatar(ret.data.user.avatar_url); + + return this.addCommentPermissions(convertPullRequestsGetCommentsResponseItemToComment(ret.data, repositoryReturnsAvatar), remote); } catch (e) { throw new Error(formatError(e)); } diff --git a/src/github/utils.ts b/src/github/utils.ts index 17b8d8e731..b67a42cb09 100644 --- a/src/github/utils.ts +++ b/src/github/utils.ts @@ -110,11 +110,11 @@ export function updateCommentCommands(vscodeComment: vscode.Comment, commentCont } } -export function convertRESTUserToAccount(user: Octokit.PullRequestsGetAllResponseItemUser): IAccount { +export function convertRESTUserToAccount(user: Octokit.PullRequestsGetAllResponseItemUser, repositoryReturnsAvatar: boolean): IAccount { return { login: user.login, url: user.html_url, - avatarUrl: user.avatar_url + avatarUrl: repositoryReturnsAvatar ? user.avatar_url : undefined }; } @@ -212,7 +212,7 @@ export function convertIssuesCreateCommentResponseToComment(comment: Octokit.Iss }; } -export function convertPullRequestsGetCommentsResponseItemToComment(comment: Octokit.PullRequestsGetCommentsResponseItem | Octokit.PullRequestsEditCommentResponse): Comment { +export function convertPullRequestsGetCommentsResponseItemToComment(comment: Octokit.PullRequestsGetCommentsResponseItem | Octokit.PullRequestsEditCommentResponse, repositoryReturnsAvatar: boolean): Comment { let ret: Comment = { url: comment.url, id: comment.id, @@ -223,7 +223,7 @@ export function convertPullRequestsGetCommentsResponseItemToComment(comment: Oct commitId: comment.commit_id, originalPosition: comment.original_position, originalCommitId: comment.original_commit_id, - user: convertRESTUserToAccount(comment.user), + user: convertRESTUserToAccount(comment.user, repositoryReturnsAvatar), body: comment.body, createdAt: comment.created_at, htmlUrl: comment.html_url,