Skip to content

Commit a745d1f

Browse files
authored
Comments don't show when PR is on non-default repo (#8126)
Fixes #8050
1 parent c3fd524 commit a745d1f

File tree

2 files changed

+28
-9
lines changed

2 files changed

+28
-9
lines changed

src/github/githubRepository.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -227,13 +227,12 @@ export class GitHubRepository extends Disposable {
227227

228228
public async ensureCommentsController(): Promise<void> {
229229
try {
230+
await this.ensure();
230231
if (this.commentsController) {
231232
return;
232233
}
233-
234-
await this.ensure();
235234
this.commentsController = vscode.comments.createCommentController(
236-
`${PullRequestCommentController.PREFIX}-${this.remote.gitProtocol.normalizeUri()?.authority}-${this.remote.owner}-${this.remote.repositoryName}`,
235+
`${PullRequestCommentController.PREFIX}-${this.remote.gitProtocol.normalizeUri()?.authority}-${this.remote.remoteName}-${this.remote.owner}-${this.remote.repositoryName}`,
237236
`Pull Request (${this.remote.owner}/${this.remote.repositoryName})`,
238237
);
239238
this.commentsHandler = new PRCommentControllerRegistry(this.commentsController, this.telemetry);

src/view/pullRequestCommentControllerRegistry.ts

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,15 @@ interface PullRequestCommentHandlerInfo {
2020
dispose: () => void;
2121
}
2222

23+
interface PRCommentingRangeProviderInfo {
24+
provider: vscode.CommentingRangeProvider2;
25+
refCount: number;
26+
dispose: () => void;
27+
}
28+
2329
export class PRCommentControllerRegistry extends Disposable implements vscode.CommentingRangeProvider, CommentReactionHandler {
2430
private _prCommentHandlers: { [key: number]: PullRequestCommentHandlerInfo } = {};
25-
private _prCommentingRangeProviders: { [key: number]: vscode.CommentingRangeProvider2 } = {};
31+
private _prCommentingRangeProviders: { [key: number]: PRCommentingRangeProviderInfo } = {};
2632
private readonly _activeChangeListeners: Map<FolderRepositoryManager, vscode.Disposable> = new Map();
2733
public readonly resourceHints = { schemes: [Schemes.Pr] };
2834

@@ -40,8 +46,8 @@ export class PRCommentControllerRegistry extends Disposable implements vscode.Co
4046
return;
4147
}
4248

43-
const provideCommentingRanges = this._prCommentingRangeProviders[params.prNumber].provideCommentingRanges.bind(
44-
this._prCommentingRangeProviders[params.prNumber],
49+
const provideCommentingRanges = this._prCommentingRangeProviders[params.prNumber].provider.provideCommentingRanges.bind(
50+
this._prCommentingRangeProviders[params.prNumber].provider,
4551
);
4652

4753
return provideCommentingRanges(document, token);
@@ -108,13 +114,27 @@ export class PRCommentControllerRegistry extends Disposable implements vscode.Co
108114
}
109115

110116
public registerCommentingRangeProvider(prNumber: number, provider: vscode.CommentingRangeProvider2): vscode.Disposable {
111-
this._prCommentingRangeProviders[prNumber] = provider;
117+
if (this._prCommentingRangeProviders[prNumber]) {
118+
this._prCommentingRangeProviders[prNumber].refCount += 1;
119+
return this._prCommentingRangeProviders[prNumber];
120+
}
112121

113-
return {
122+
this._prCommentingRangeProviders[prNumber] = {
123+
provider,
124+
refCount: 1,
114125
dispose: () => {
115-
delete this._prCommentingRangeProviders[prNumber];
126+
if (!this._prCommentingRangeProviders[prNumber]) {
127+
return;
128+
}
129+
130+
this._prCommentingRangeProviders[prNumber].refCount -= 1;
131+
if (this._prCommentingRangeProviders[prNumber].refCount === 0) {
132+
delete this._prCommentingRangeProviders[prNumber];
133+
}
116134
}
117135
};
136+
137+
return this._prCommentingRangeProviders[prNumber];
118138
}
119139

120140
override dispose() {

0 commit comments

Comments
 (0)