Skip to content

Commit fbb9f49

Browse files
committed
Add directory tree for commits nodes
Part of #3424
1 parent 21b3a78 commit fbb9f49

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

src/view/treeNodes/commitNode.ts

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@
66
import * as path from 'path';
77
import * as vscode from 'vscode';
88
import { getGitChangeType } from '../../common/diffHunk';
9+
import { FILE_LIST_LAYOUT } from '../../common/settingKeys';
910
import { toReviewUri } from '../../common/uri';
1011
import { OctokitCommon } from '../../github/common';
11-
import { FolderRepositoryManager } from '../../github/folderRepositoryManager';
12+
import { FolderRepositoryManager, SETTINGS_NAMESPACE } from '../../github/folderRepositoryManager';
1213
import { IResolvedPullRequestModel, PullRequestModel } from '../../github/pullRequestModel';
14+
import { DirectoryTreeNode } from './directoryTreeNode';
1315
import { GitFileChangeNode } from './fileChangeNode';
1416
import { TreeNode, TreeNodeParent } from './treeNode';
1517

@@ -89,6 +91,23 @@ export class CommitNode extends TreeNode implements vscode.TreeItem {
8991
return fileChangeNode;
9092
});
9193

92-
return Promise.resolve(fileChangeNodes);
94+
let result: TreeNode[] = [];
95+
const layout = vscode.workspace.getConfiguration(SETTINGS_NAMESPACE).get<string>(FILE_LIST_LAYOUT);
96+
if (layout === 'tree') {
97+
// tree view
98+
const dirNode = new DirectoryTreeNode(this, '');
99+
fileChangeNodes.forEach(f => dirNode.addFile(f));
100+
dirNode.finalize();
101+
if (dirNode.label === '') {
102+
// nothing on the root changed, pull children to parent
103+
result.push(...dirNode.children);
104+
} else {
105+
result.push(dirNode);
106+
}
107+
} else {
108+
// flat view
109+
result = fileChangeNodes;
110+
}
111+
return Promise.resolve(result);
93112
}
94113
}

0 commit comments

Comments
 (0)