Skip to content

Commit a8b1c43

Browse files
committed
WIP: diff view.
1 parent 8d655e6 commit a8b1c43

File tree

2 files changed

+36
-24
lines changed

2 files changed

+36
-24
lines changed

src/extension.ts

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import * as vscode from 'vscode';
22

33
// import Logger from './common/logger';
4-
import { uriHandler, CodingServer } from './codingServer';
5-
import { Panel } from './panel';
6-
import { ListItem, MRTreeDataProvider } from './tree/mr-tree';
7-
import { ReleaseTreeDataProvider } from './tree/release-tree';
8-
import { RepoInfo } from './typings/commonTypes';
4+
import {uriHandler, CodingServer} from './codingServer';
5+
import {Panel} from './panel';
6+
import {IFileNode, MRTreeDataProvider} from './tree/mr-tree';
7+
import {ReleaseTreeDataProvider} from './tree/release-tree';
8+
import {RepoInfo} from './typings/commonTypes';
99

1010
export async function activate(context: vscode.ExtensionContext) {
1111
const repoInfo = await CodingServer.getRepoParams();
@@ -35,8 +35,8 @@ export async function activate(context: vscode.ExtensionContext) {
3535

3636
const mrDataProvider = new MRTreeDataProvider(context, codingSrv);
3737
const releaseDataProvider = new ReleaseTreeDataProvider(context);
38-
vscode.window.createTreeView(`mrTreeView`, { treeDataProvider: mrDataProvider });
39-
vscode.window.createTreeView(`releaseTreeView`, { treeDataProvider: releaseDataProvider });
38+
vscode.window.createTreeView(`mrTreeView`, {treeDataProvider: mrDataProvider, showCollapseAll: true});
39+
vscode.window.createTreeView(`releaseTreeView`, {treeDataProvider: releaseDataProvider, showCollapseAll: true});
4040

4141
context.subscriptions.push(vscode.window.registerUriHandler(uriHandler));
4242
context.subscriptions.push(
@@ -79,7 +79,7 @@ export async function activate(context: vscode.ExtensionContext) {
7979
context.subscriptions.push(
8080
vscode.commands.registerCommand('codingPlugin.switchRepo', async () => {
8181
try {
82-
const { data } = await codingSrv.getRepoList();
82+
const {data} = await codingSrv.getRepoList();
8383
const list = data.map(i => ({
8484
label: i.name,
8585
description: i.depotPath.replace(`/p/`, ``)
@@ -103,6 +103,11 @@ export async function activate(context: vscode.ExtensionContext) {
103103
}
104104
}),
105105
);
106+
context.subscriptions.push(
107+
vscode.commands.registerCommand(`codingPlugin.showDiff`, async (file: IFileNode) => {
108+
await vscode.commands.executeCommand(`vscode.diff`, vscode.Uri);
109+
}),
110+
);
106111

107112
if (vscode.window.registerWebviewPanelSerializer) {
108113
// Make sure we register a serializer in activation event
@@ -114,5 +119,4 @@ export async function activate(context: vscode.ExtensionContext) {
114119
}
115120
}
116121

117-
export function deactivate() {
118-
}
122+
export function deactivate() {}

src/tree/mr-tree.ts

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ enum ItemType {
1818
Node = `node`,
1919
}
2020

21-
interface IFileNode extends IMRPathItem {
21+
export interface IFileNode extends IMRPathItem {
2222
parentPath?: string;
2323
children?: IFileNode[]
2424
}
@@ -163,15 +163,15 @@ export class MRItem extends ListItem<IMRData> {
163163
`mr-desc`,
164164
vscode.TreeItemCollapsibleState.None,
165165
{
166-
command: 'codingPlugin.showDetail',
167-
title: `${this.value.iid} ${this.value.title}`,
168-
arguments: [{
169-
...repoInfo,
170-
iid: this.value.iid,
171-
type: `mr`,
172-
accessToken: session?.accessToken,
173-
}],
174-
}),
166+
command: 'codingPlugin.showDetail',
167+
title: `${this.value.iid} ${this.value.title}`,
168+
arguments: [{
169+
...repoInfo,
170+
iid: this.value.iid,
171+
type: `mr`,
172+
accessToken: session?.accessToken,
173+
}],
174+
}),
175175
...files.map(f => new FileNode(f.name, f, (f.children || [])?.length > 0 ? vscode.TreeItemCollapsibleState.Expanded : vscode.TreeItemCollapsibleState.None)),
176176
];
177177
}
@@ -201,8 +201,8 @@ export class MRItem extends ListItem<IMRData> {
201201
private _insert(node: IFileNode, nodes: IFileNode[]) {
202202
for (const i of nodes) {
203203
if (i.parentPath === node.parentPath) {
204-
const hasSameRootNode = nodes.find(j => j.path === node.path);
205-
if (hasSameRootNode) {
204+
const hasSameParentNode = nodes.find(j => j.path === node.path);
205+
if (hasSameParentNode) {
206206
break;
207207
}
208208

@@ -235,9 +235,17 @@ export class FileNode extends ListItem<IFileNode> {
235235
public readonly label: string,
236236
public readonly value: IFileNode,
237237
public readonly collapsibleState: vscode.TreeItemCollapsibleState,
238-
public readonly command?: vscode.Command,
239238
) {
240-
super(label, value, collapsibleState, command);
239+
super(
240+
label,
241+
value,
242+
collapsibleState,
243+
collapsibleState === vscode.TreeItemCollapsibleState.None ? {
244+
command: `codingPlugin.showDiff`,
245+
title: ``,
246+
arguments: [value]
247+
} : undefined
248+
);
241249
}
242250

243251
public makeTree() {

0 commit comments

Comments
 (0)