( webviewView: vscode.WebviewView, _context: vscode.WebviewViewResolveContext, _token: vscode.CancellationToken, )
| 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; |
nothing calls this directly
no test coverage detected