@@ -5,6 +5,7 @@ import { uriHandler, CodingServer } from './codingServer';
5
5
import { Panel } from './panel' ;
6
6
import { ListItem , MRTreeDataProvider } from './tree/mr-tree' ;
7
7
import { ReleaseTreeDataProvider } from './tree/release-tree' ;
8
+ import { RepoInfo } from './typings/commonTypes' ;
8
9
9
10
export async function activate ( context : vscode . ExtensionContext ) {
10
11
const repoInfo = await CodingServer . getRepoParams ( ) ;
@@ -24,15 +25,16 @@ export async function activate(context: vscode.ExtensionContext) {
24
25
context . workspaceState . update ( `session` , codingSrv . session ) ;
25
26
}
26
27
27
- const treeDataProvider = new MRTreeDataProvider ( context , codingSrv ) ;
28
- const tree = vscode . window . createTreeView ( `mrTreeView` , { treeDataProvider } ) ;
29
- vscode . window . registerTreeDataProvider ( `releaseTreeView` , new ReleaseTreeDataProvider ( context ) ) ;
28
+ const mrDataProvider = new MRTreeDataProvider ( context , codingSrv ) ;
29
+ const releaseDataProvider = new ReleaseTreeDataProvider ( context ) ;
30
+ const mrTree = vscode . window . createTreeView ( `mrTreeView` , { treeDataProvider : mrDataProvider } ) ;
31
+ const releaseTree = vscode . window . createTreeView ( `releaseTreeView` , { treeDataProvider : releaseDataProvider } ) ;
30
32
31
33
context . subscriptions . push ( vscode . window . registerUriHandler ( uriHandler ) ) ;
32
34
context . subscriptions . push (
33
35
vscode . commands . registerCommand ( 'codingPlugin.show' , ( ) => {
34
36
Panel . createOrShow ( context ) ;
35
- tree . reveal ( { } as ListItem ) ;
37
+ mrTree . reveal ( { } as ListItem ) ;
36
38
} ) ,
37
39
) ;
38
40
context . subscriptions . push (
@@ -47,7 +49,7 @@ export async function activate(context: vscode.ExtensionContext) {
47
49
if ( ! session ?. accessToken ) {
48
50
console . error ( `No token provided.` ) ;
49
51
} else {
50
- treeDataProvider . refresh ( ) ;
52
+ mrDataProvider . refresh ( ) ;
51
53
}
52
54
} ) ,
53
55
) ;
@@ -57,29 +59,40 @@ export async function activate(context: vscode.ExtensionContext) {
57
59
await codingSrv . logout ( ) ;
58
60
vscode . window . showInformationMessage ( `Logout successfully.` ) ;
59
61
} finally {
60
- treeDataProvider . refresh ( ) ;
62
+ mrDataProvider . refresh ( ) ;
61
63
}
62
64
} ) ,
63
65
) ;
64
66
context . subscriptions . push (
65
67
vscode . commands . registerCommand ( 'codingPlugin.refresh' , ( ) => {
66
- treeDataProvider . refresh ( ) ;
68
+ mrDataProvider . refresh ( ) ;
67
69
} ) ,
68
70
) ;
69
71
context . subscriptions . push (
70
72
vscode . commands . registerCommand ( 'codingPlugin.switchRepo' , async ( ) => {
71
- vscode . window . showQuickPick ( [
72
- {
73
- label : `1` ,
74
- description : `1`
75
- } ,
76
- {
77
- label : `2` ,
78
- description : `2`
79
- } ,
80
- ] ) . then ( ( selection ) => {
81
- console . log ( selection )
82
- } )
73
+ try {
74
+ const { data } = await codingSrv . getRepoList ( ) ;
75
+ const list = data . map ( i => ( {
76
+ label : i . name ,
77
+ description : i . depotPath . replace ( `/p/` , `` )
78
+ . replace ( `/d/` , `/` )
79
+ . replace ( `/git` , `` ) ,
80
+ } ) ) ;
81
+ const selection = await vscode . window . showQuickPick ( list ) ;
82
+ if ( ! selection )
83
+ return ;
84
+
85
+ const r = context . workspaceState . get ( `repoInfo` ) as RepoInfo ;
86
+ context . workspaceState . update ( `repoInfo` , {
87
+ team : r ?. team ,
88
+ project : selection ?. description . replace ( `/${ selection ?. label } ` , `` ) ,
89
+ repo : selection ?. label ,
90
+ } ) ;
91
+ mrDataProvider . refresh ( ) ;
92
+ releaseDataProvider . refresh ( ) ;
93
+ } catch ( e ) {
94
+ vscode . window . showWarningMessage ( `Repo list: fetch failed.` ) ;
95
+ }
83
96
} ) ,
84
97
) ;
85
98
@@ -93,4 +106,5 @@ export async function activate(context: vscode.ExtensionContext) {
93
106
}
94
107
}
95
108
96
- export function deactivate ( ) { }
109
+ export function deactivate ( ) {
110
+ }
0 commit comments