MCPcopy
hub / github.com/gencay/vscode-chatgpt / resolveWebviewView

Method resolveWebviewView

src/chatgpt-view-provider.ts:34–80  ·  view source on GitHub ↗
(
		webviewView: vscode.WebviewView,
		_context: vscode.WebviewViewResolveContext,
		_token: vscode.CancellationToken,
	)

Source from the content-addressed store, hash-verified

32 }
33
34 public resolveWebviewView(
35 webviewView: vscode.WebviewView,
36 _context: vscode.WebviewViewResolveContext,
37 _token: vscode.CancellationToken,
38 ) {
39 this.webView = webviewView;
40
41 webviewView.webview.options = {
42 // Allow scripts in the webview
43 enableScripts: true,
44
45 localResourceRoots: [
46 this.context.extensionUri
47 ]
48 };
49
50 webviewView.webview.html = this.getWebviewHtml(webviewView.webview);
51
52 webviewView.webview.onDidReceiveMessage(async data => {
53 switch (data.type) {
54 case 'addFreeTextQuestion':
55 this.sendApiRequest(data.value);
56 break;
57 case 'editCode':
58 vscode.window.activeTextEditor?.insertSnippet(new vscode.SnippetString(data.value));
59 break;
60 case 'openNew':
61 const document = await vscode.workspace.openTextDocument({
62 content: data.value,
63 language: data.language
64 });
65 vscode.window.showTextDocument(document);
66 break;
67 case 'clearConversation':
68 this.prepareConversation(true);
69 break;
70 default:
71 break;
72 }
73 });
74
75 if (this.leftOverMessage != null) {
76 // If there were any messages that wasn't delivered, render after resolveWebView is called.
77 this.sendMessage(this.leftOverMessage);
78 this.leftOverMessage = null;
79 }
80 }
81
82 private async prepareConversation(reset?: boolean): Promise<boolean> {
83 this.sessionToken = await this.context.globalState.get("chatgpt-session-token") as string;

Callers

nothing calls this directly

Calls 4

getWebviewHtmlMethod · 0.95
sendApiRequestMethod · 0.95
prepareConversationMethod · 0.95
sendMessageMethod · 0.95

Tested by

no test coverage detected