Skip to content

Commit f7502e3

Browse files
committed
change(webview): mr detail.
1 parent 365fe39 commit f7502e3

File tree

5 files changed

+20
-35
lines changed

5 files changed

+20
-35
lines changed

package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,7 @@
117117
"ky": "^0.24.0",
118118
"nanoid": "^3.1.16",
119119
"react": "^17.0.0",
120-
"react-dom": "^17.0.0",
121-
"simple-git": "^2.21.0"
120+
"react-dom": "^17.0.0"
122121
},
123122
"devDependencies": {
124123
"@types/react": "^16.9.53",

src/common/utils.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,12 @@ export function parseCloneUrl(url: string): IRepoInfo | null {
5757
const [team, project, repo] = str.split(`/`);
5858
return { team, project, repo: repo || project };
5959
}
60+
61+
export function getNonce() {
62+
let text = '';
63+
const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
64+
for (let i = 0; i < 32; i++) {
65+
text += possible.charAt(Math.floor(Math.random() * possible.length));
66+
}
67+
return text;
68+
}

src/panel.ts

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import * as vscode from 'vscode';
22
import * as path from 'path';
33

4-
import { IMRWebViewDetail } from './typings/commonTypes'
4+
import { IMRWebViewDetail } from './typings/commonTypes';
5+
import { getNonce } from './common/utils';
56

67
export class Panel {
78
/**
@@ -142,27 +143,24 @@ export class Panel {
142143
}
143144

144145
private _getHtmlForWebview(webview: vscode.Webview) {
145-
const appPathOnDisk = vscode.Uri.file(path.join(this._extensionPath, 'out/webviews/main.js'));
146-
const appUri = appPathOnDisk.with({ scheme: 'vscode-resource' });
146+
const appPathOnDisk = vscode.Uri.joinPath(this._extensionUri, 'out/webviews/main.js');
147+
const appUri = webview.asWebviewUri(appPathOnDisk);
148+
const nonce = getNonce();
147149

148150
return `<!DOCTYPE html>
149151
<html lang="en">
150152
<head>
151153
<meta charset="UTF-8">
152-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
153154
<title>Merge Request Overview</title>
154-
155+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
155156
<meta http-equiv="Content-Security-Policy"
156-
content="default-src 'unsafe-inline';
157-
img-src https:;
158-
script-src 'unsafe-eval' 'unsafe-inline' vscode-resource:;
159-
connect-src 'self' https: *.coding.net;
160-
style-src vscode-resource: 'unsafe-inline';">
157+
content="default-src 'unsafe-eval'; style-src vscode-resource: 'unsafe-inline' http: https: data:;; img-src vscode-resource: https:; script-src 'nonce-${nonce}' 'unsafe-eval'; connect-src https:">
161158
</head>
162159
<body>
163160
<div id="root"></div>
164-
<script src="${appUri}"></script>
161+
<script nonce="${nonce}" src="${appUri}"></script>
165162
</body>
166163
</html>`;
167164
}
168165
}
166+

src/typings/commonTypes.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { IMRDetail, IMRDetailResponse, UserResponse } from './respResult';
1+
import { IMRDetail, UserResponse } from './respResult';
22

33
export interface IRepoInfo {
44
team: string;

yarn.lock

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -898,18 +898,6 @@
898898
minimatch "^3.0.4"
899899
strip-json-comments "^3.1.1"
900900

901-
"@kwsites/file-exists@^1.1.1":
902-
version "1.1.1"
903-
resolved "https://registry.yarnpkg.com/@kwsites/file-exists/-/file-exists-1.1.1.tgz#ad1efcac13e1987d8dbaf235ef3be5b0d96faa99"
904-
integrity sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==
905-
dependencies:
906-
debug "^4.1.1"
907-
908-
"@kwsites/promise-deferred@^1.1.1":
909-
version "1.1.1"
910-
resolved "https://registry.yarnpkg.com/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz#8ace5259254426ccef57f3175bc64ed7095ed919"
911-
integrity sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==
912-
913901
"@mrmlnc/readdir-enhanced@^2.2.1":
914902
version "2.2.1"
915903
resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
@@ -5914,15 +5902,6 @@ simple-get@^3.0.3:
59145902
once "^1.3.1"
59155903
simple-concat "^1.0.0"
59165904

5917-
simple-git@^2.21.0:
5918-
version "2.21.0"
5919-
resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-2.21.0.tgz#d25d3fdc6a139cd7f80f197541a6f9f6e9d4cbc8"
5920-
integrity sha512-rohCHmEjD/ESXFLxF4bVeqgdb4Awc65ZyyuCKl3f7BvgMbZOBa/Ye3HN/GFnvruiUOAWWNupxhz3Rz5/3vJLTg==
5921-
dependencies:
5922-
"@kwsites/file-exists" "^1.1.1"
5923-
"@kwsites/promise-deferred" "^1.1.1"
5924-
debug "^4.1.1"
5925-
59265905
slash@^1.0.0:
59275906
version "1.0.0"
59285907
resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"

0 commit comments

Comments
 (0)