Skip to content

Commit eaaa39d

Browse files
Copilotalexr00
andcommitted
Address review feedback: add owner/repo, use scheme constant, listen for timeline changes
Co-authored-by: alexr00 <38270282+alexr00@users.noreply.github.com>
1 parent 861832d commit eaaa39d

File tree

4 files changed

+17
-8
lines changed

4 files changed

+17
-8
lines changed

src/common/uri.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -521,17 +521,21 @@ export function createPRNodeUri(
521521
}
522522

523523
export interface CommitsNodeUriParams {
524+
owner: string;
525+
repo: string;
524526
prNumber: number;
525527
commitsCount: number;
526528
}
527529

528-
export function createCommitsNodeUri(prNumber: number, commitsCount: number): vscode.Uri {
530+
export function createCommitsNodeUri(owner: string, repo: string, prNumber: number, commitsCount: number): vscode.Uri {
529531
const params: CommitsNodeUriParams = {
532+
owner,
533+
repo,
530534
prNumber,
531535
commitsCount
532536
};
533537

534-
return vscode.Uri.parse(`commitsnode:${prNumber}`).with({
538+
return vscode.Uri.parse(`${Schemes.CommitsNode}:${owner}/${repo}/${prNumber}`).with({
535539
scheme: Schemes.CommitsNode,
536540
query: JSON.stringify(params)
537541
});

src/view/commitsDecorationProvider.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import * as vscode from 'vscode';
77
import { TreeDecorationProvider } from './treeDecorationProviders';
8-
import { fromCommitsNodeUri, Schemes } from '../common/uri';
8+
import { createCommitsNodeUri, fromCommitsNodeUri, Schemes } from '../common/uri';
99
import { FolderRepositoryManager } from '../github/folderRepositoryManager';
1010
import { PullRequestModel } from '../github/pullRequestModel';
1111

@@ -15,9 +15,14 @@ export class CommitsDecorationProvider extends TreeDecorationProvider {
1515
super();
1616
}
1717

18-
registerPullRequestPropertyChangedListeners(_folderManager: FolderRepositoryManager, _model: PullRequestModel): vscode.Disposable {
19-
// No need to listen for changes since commit count doesn't change dynamically
20-
return { dispose: () => { } };
18+
registerPullRequestPropertyChangedListeners(_folderManager: FolderRepositoryManager, model: PullRequestModel): vscode.Disposable {
19+
return model.onDidChange(e => {
20+
if (e.timeline) {
21+
// Timeline changed, which may include new commits, so update the decoration
22+
const uri = createCommitsNodeUri(model.remote.owner, model.remote.repositoryName, model.number, model.item.commits.length);
23+
this._onDidChangeFileDecorations.fire(uri);
24+
}
25+
});
2126
}
2227

2328
provideFileDecoration(

src/view/treeDecorationProviders.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { PullRequestModel } from '../github/pullRequestModel';
1111
import { RepositoriesManager } from '../github/repositoriesManager';
1212

1313
export abstract class TreeDecorationProvider extends Disposable implements vscode.FileDecorationProvider {
14-
private _onDidChangeFileDecorations: vscode.EventEmitter<vscode.Uri | vscode.Uri[]> = this._register(new vscode.EventEmitter<
14+
protected _onDidChangeFileDecorations: vscode.EventEmitter<vscode.Uri | vscode.Uri[]> = this._register(new vscode.EventEmitter<
1515
vscode.Uri | vscode.Uri[]
1616
>());
1717
onDidChangeFileDecorations?: vscode.Event<vscode.Uri | vscode.Uri[] | undefined> | undefined = this._onDidChangeFileDecorations.event;

src/view/treeNodes/commitsCategoryNode.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export class CommitsNode extends TreeNode implements vscode.TreeItem {
2727
this._pr = pr;
2828
this._folderRepoManager = reposManager;
2929
this.collapsibleState = vscode.TreeItemCollapsibleState.Collapsed;
30-
this.resourceUri = createCommitsNodeUri(pr.number, pr.item.commits.length);
30+
this.resourceUri = createCommitsNodeUri(pr.remote.owner, pr.remote.repositoryName, pr.number, pr.item.commits.length);
3131

3232
this.childrenDisposables = [];
3333
this.childrenDisposables.push(this._pr.onDidChangeReviewThreads(() => {

0 commit comments

Comments
 (0)