|
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