|
6 | 6 | import * as path from 'path'; |
7 | 7 | import * as vscode from 'vscode'; |
8 | 8 | import { getGitChangeType } from '../../common/diffHunk'; |
| 9 | +import { FILE_LIST_LAYOUT } from '../../common/settingKeys'; |
9 | 10 | import { toReviewUri } from '../../common/uri'; |
10 | 11 | import { OctokitCommon } from '../../github/common'; |
11 | | -import { FolderRepositoryManager } from '../../github/folderRepositoryManager'; |
| 12 | +import { FolderRepositoryManager, SETTINGS_NAMESPACE } from '../../github/folderRepositoryManager'; |
12 | 13 | import { IResolvedPullRequestModel, PullRequestModel } from '../../github/pullRequestModel'; |
| 14 | +import { DirectoryTreeNode } from './directoryTreeNode'; |
13 | 15 | import { GitFileChangeNode } from './fileChangeNode'; |
14 | 16 | import { TreeNode, TreeNodeParent } from './treeNode'; |
15 | 17 |
|
@@ -89,6 +91,23 @@ export class CommitNode extends TreeNode implements vscode.TreeItem { |
89 | 91 | return fileChangeNode; |
90 | 92 | }); |
91 | 93 |
|
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); |
93 | 112 | } |
94 | 113 | } |
0 commit comments