11import * as vscode from 'vscode' ;
22import * as path from 'path' ;
33
4+ import { IMRWebViewDetail } from './typings/commonTypes'
5+
46export class Panel {
57 /**
68 * Track the currently panel. Only allow a single panel to exist at a time.
@@ -14,7 +16,7 @@ export class Panel {
1416 private readonly _extensionPath : string ;
1517 private _disposables : vscode . Disposable [ ] = [ ] ;
1618
17- public static createOrShow ( context : vscode . ExtensionContext ) {
19+ public static createOrShow ( context : vscode . ExtensionContext , data : IMRWebViewDetail ) {
1820 const { extensionUri, extensionPath } = context ;
1921 const column = vscode . window . activeTextEditor
2022 ? vscode . window . activeTextEditor . viewColumn
@@ -39,7 +41,7 @@ export class Panel {
3941 } ,
4042 ) ;
4143
42- Panel . currentPanel = new Panel ( panel , extensionUri , extensionPath ) ;
44+ Panel . currentPanel = new Panel ( panel , extensionUri , extensionPath , data ) ;
4345 }
4446
4547 public static revive (
@@ -50,21 +52,21 @@ export class Panel {
5052 Panel . currentPanel = new Panel ( panel , extensionUri , extensionPath ) ;
5153 }
5254
53- private constructor ( panel : vscode . WebviewPanel , extensionUri : vscode . Uri , extensionPath : string ) {
55+ private constructor ( panel : vscode . WebviewPanel , extensionUri : vscode . Uri , extensionPath : string , mr ?: IMRWebViewDetail ) {
5456 this . _panel = panel ;
5557 this . _extensionUri = extensionUri ;
5658 this . _extensionPath = extensionPath ;
5759
5860 // Set the webview's initial html content
59- this . _update ( ) ;
61+ this . _update ( mr ) ;
6062
6163 // Listen for when the panel is disposed
6264 // This happens when the user closes the panel or when the panel is closed programatically
6365 this . _panel . onDidDispose ( ( ) => this . dispose ( ) , null , this . _disposables ) ;
6466
6567 // Update the content based on view changes
6668 this . _panel . onDidChangeViewState (
67- ( e ) => {
69+ ( ) => {
6870 if ( this . _panel . visible ) {
6971 this . _update ( ) ;
7072 }
@@ -114,28 +116,28 @@ export class Panel {
114116 }
115117 }
116118
117- private _update ( ) {
119+ private _update ( data ?: IMRWebViewDetail ) {
118120 const webview = this . _panel . webview ;
119121
120122 // Vary the webview's content based on where it is located in the editor.
121123 switch ( this . _panel . viewColumn ) {
122124 case vscode . ViewColumn . Two :
123- this . _updateForCat ( webview ) ;
125+ this . _updateForCat ( webview , data ) ;
124126 return ;
125127
126128 case vscode . ViewColumn . Three :
127- this . _updateForCat ( webview ) ;
129+ this . _updateForCat ( webview , data ) ;
128130 return ;
129131
130132 case vscode . ViewColumn . One :
131133 default :
132- this . _updateForCat ( webview ) ;
134+ this . _updateForCat ( webview , data ) ;
133135 return ;
134136 }
135137 }
136138
137- private _updateForCat ( webview : vscode . Webview ) {
138- this . _panel . title = `Coding cat ${ Date . now ( ) } ` ;
139+ private _updateForCat ( webview : vscode . Webview , data ?: IMRWebViewDetail ) {
140+ this . _panel . title = `Merge Request ${ data ?. iid || `` } ` ;
139141 this . _panel . webview . html = this . _getHtmlForWebview ( webview ) ;
140142 }
141143
@@ -148,18 +150,17 @@ export class Panel {
148150 <head>
149151 <meta charset="UTF-8">
150152 <meta name="viewport" content="width=device-width, initial-scale=1.0">
151- <title>Coding Cat </title>
152-
153+ <title>Merge Request Overview </title>
154+
153155 <meta http-equiv="Content-Security-Policy"
154156 content="default-src 'unsafe-inline';
155157 img-src https:;
156158 script-src 'unsafe-eval' 'unsafe-inline' vscode-resource:;
157- connect-src 'self' https:;
159+ connect-src 'self' https: *.coding.net ;
158160 style-src vscode-resource: 'unsafe-inline';">
159161 </head>
160162 <body>
161163 <div id="root"></div>
162-
163164 <script src="${ appUri } "></script>
164165 </body>
165166 </html>` ;
0 commit comments