11import * as vscode from 'vscode' ;
22import * as path from 'path' ;
33
4- import { CodingServer } from '../codingServer' ;
5- import { RepoInfo , SessionData } from '../typings/commonTypes' ;
6- import { IMRDiffStat , IMRData , IMRPathItem } from '../typings/respResult' ;
4+ import { CodingServer } from '../codingServer' ;
5+ import { RepoInfo , SessionData } from '../typings/commonTypes' ;
6+ import { IMRDiffStat , IMRData , IMRPathItem } from '../typings/respResult' ;
77
88enum MRType {
99 Open = `open` ,
@@ -21,6 +21,8 @@ enum ItemType {
2121export interface IFileNode extends IMRPathItem {
2222 parentPath ?: string ;
2323 children ?: IFileNode [ ]
24+ newSha ?: string ;
25+ oldSha ?: string ;
2426}
2527
2628type ITreeNode = string | number | IMRDiffStat | IFileNode | IMRData ;
@@ -74,7 +76,7 @@ export class MRTreeDataProvider implements vscode.TreeDataProvider<ListItem<ITre
7476 return [ ] ;
7577 }
7678
77- const { data : { list} } = resp ;
79+ const { data : { list } } = resp ;
7880 if ( ! list . length ) {
7981 return [
8082 new ListItem ( `0 merge requests in this category` , `noData` , vscode . TreeItemCollapsibleState . None ) ,
@@ -91,7 +93,7 @@ export class MRTreeDataProvider implements vscode.TreeDataProvider<ListItem<ITre
9193 i . title ,
9294 i ,
9395 vscode . TreeItemCollapsibleState . Collapsed ,
94- this . _context
96+ this . _context ,
9597 ) ;
9698 } ) ;
9799 } )
@@ -101,7 +103,7 @@ export class MRTreeDataProvider implements vscode.TreeDataProvider<ListItem<ITre
101103 }
102104 case ItemType . MRItem : {
103105 return this . _service . getMRDiff ( ( element . value as IMRData ) . iid )
104- . then ( ( { data : { diffStat} } ) => {
106+ . then ( ( { data : { diffStat } } ) => {
105107 return element . getChildren ( diffStat ) ;
106108 } ) ;
107109 }
@@ -153,7 +155,7 @@ export class MRItem extends ListItem<IMRData> {
153155 }
154156
155157 async getChildren ( diffStat : IMRDiffStat ) : Promise < ListItem < string | number | IFileNode > [ ] > {
156- const files = this . _transformTree ( diffStat . paths ) ;
158+ const files = this . _transformTree ( diffStat ) ;
157159 const repoInfo = this . context . workspaceState . get ( `repoInfo` , { } ) ;
158160 const session = this . context . workspaceState . get ( `session` , { } as SessionData ) ;
159161
@@ -176,10 +178,10 @@ export class MRItem extends ListItem<IMRData> {
176178 ] ;
177179 }
178180
179- private _transformTree ( paths : IMRPathItem [ ] ) {
181+ private _transformTree ( diff : IMRDiffStat ) {
180182 let nodes : IFileNode [ ] = [ ] ;
181- paths . forEach ( p => {
182- nodes = this . _makeTree ( p , nodes ) ;
183+ diff . paths . forEach ( p => {
184+ nodes = this . _makeTree ( { ... p , newSha : diff . newSha , oldSha : diff . oldSha } , nodes ) ;
183185 } ) ;
184186
185187 return nodes ;
@@ -191,7 +193,7 @@ export class MRItem extends ListItem<IMRData> {
191193 rawArr . forEach ( ( i , idx ) => {
192194 const curPath = rawArr . slice ( 0 , idx + 1 ) . join ( `/` ) ;
193195 const parentPath = rawArr . slice ( 0 , idx ) . join ( `/` ) ;
194- const f = { ...node , name : i , path : curPath , parentPath, children : [ ] } ;
196+ const f = { ...node , name : i , path : curPath , parentPath, children : [ ] } ;
195197 nodes = this . _insert ( f , nodes ) ;
196198 } ) ;
197199
@@ -243,8 +245,8 @@ export class FileNode extends ListItem<IFileNode> {
243245 collapsibleState === vscode . TreeItemCollapsibleState . None ? {
244246 command : `codingPlugin.showDiff` ,
245247 title : `` ,
246- arguments : [ value ]
247- } : undefined
248+ arguments : [ value ] ,
249+ } : undefined ,
248250 ) ;
249251 }
250252
0 commit comments