Skip to content

Commit a0d1679

Browse files
Copilotalexr00
andcommitted
Cache assignable users to avoid redundant API calls
- Store assignable users in _assignableUsers member variable - Reuse cached data in addReviewerCopilot instead of fetching again - Improves performance by avoiding duplicate getAssignableUsers() calls Co-authored-by: alexr00 <38270282+alexr00@users.noreply.github.com>
1 parent 1e59550 commit a0d1679

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/github/pullRequestOverview.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ export class PullRequestOverviewPanel extends IssueOverviewPanel<PullRequestMode
5454
private _repositoryDefaultBranch: string;
5555
private _existingReviewers: ReviewState[] = [];
5656
private _teamsCount = 0;
57+
private _assignableUsers: { [key: string]: IAccount[] } = {};
5758

5859
private _prListeners: vscode.Disposable[] = [];
5960
private _isUpdating: boolean = false;
@@ -292,6 +293,7 @@ export class PullRequestOverviewPanel extends IssueOverviewPanel<PullRequestMode
292293
this.registerPrListeners();
293294
this._repositoryDefaultBranch = defaultBranch!;
294295
this._teamsCount = orgTeamsCount;
296+
this._assignableUsers = assignableUsers;
295297
this.setPanelTitle(`Pull Request #${pullRequestModel.number.toString()}`);
296298

297299
const isCurrentlyCheckedOut = pullRequestModel.equals(this._folderRepositoryManager.activePullRequest);
@@ -304,7 +306,7 @@ export class PullRequestOverviewPanel extends IssueOverviewPanel<PullRequestMode
304306
const reviewState = this.getCurrentUserReviewState(this._existingReviewers, currentUser);
305307

306308
Logger.debug('pr.initialize', PullRequestOverviewPanel.ID);
307-
const users = assignableUsers[pullRequestModel.remote.remoteName] ?? [];
309+
const users = this._assignableUsers[pullRequestModel.remote.remoteName] ?? [];
308310
const copilotUser = users.find(user => COPILOT_ACCOUNTS[user.login]);
309311
const isCopilotAlreadyReviewer = this._existingReviewers.some(reviewer => !isITeam(reviewer.reviewer) && COPILOT_ACCOUNTS[reviewer.reviewer.login]);
310312
const baseContext = this.getInitializeContext(currentUser, pullRequest, timelineEvents, repositoryAccess, viewerCanEdit, users);
@@ -753,7 +755,7 @@ export class PullRequestOverviewPanel extends IssueOverviewPanel<PullRequestMode
753755

754756
private async addReviewerCopilot(message: IRequestMessage<void>): Promise<void> {
755757
try {
756-
const copilotUser = (await this._folderRepositoryManager.getAssignableUsers())[this._item.remote.remoteName].find(user => COPILOT_ACCOUNTS[user.login]);
758+
const copilotUser = this._assignableUsers[this._item.remote.remoteName]?.find(user => COPILOT_ACCOUNTS[user.login]);
757759
if (copilotUser) {
758760
await this._item.requestReview([copilotUser], []);
759761
const newReviewers = await this._item.getReviewRequests();

0 commit comments

Comments
 (0)