From b756de10e470f8abb453569afa93bd6f46bc0211 Mon Sep 17 00:00:00 2001 From: Iheuzio Date: Fri, 23 Jun 2023 14:43:58 -0400 Subject: [PATCH] fix(redundant-code): Fixing redundant code --- extension.js | 148 +++++++++++++++++++++++++-------------------------- 1 file changed, 74 insertions(+), 74 deletions(-) diff --git a/extension.js b/extension.js index 48021b3..1d69106 100644 --- a/extension.js +++ b/extension.js @@ -261,82 +261,82 @@ function activate(context) { context.subscriptions.push(refreshFilesCommand); vscode.window.registerTreeDataProvider('selectedFiles', fileDataProvider); - const provider = { - resolveWebviewView(webviewView) { - webviewView.webview.options = { - enableScripts: true - }; - webviewView.webview.html = getWebviewContent(); - webviewView.webview.onDidReceiveMessage(async message => { - if (message.command === 'submitQuestion') { - const question = message.text; - const selectedUris = message.selectedUris; - - // Update the selectedFiles array based on the selectedUris - selectedFiles.forEach(file => { - file.selected = selectedUris.includes(file.uri.fsPath); - }); - +const provider = { + resolveWebviewView(webviewView) { + webviewView.webview.options = { + enableScripts: true + }; + webviewView.webview.html = getWebviewContent(); + webviewView.webview.onDidReceiveMessage(async message => { + if (message.command === 'toggleFileSelection') { + const uri = message.uri; + const file = selectedFiles.find(file => file.uri.fsPath === uri); + if (file) { + file.toggleSelected(); fileDataProvider.refresh(); - - const fileContents = selectedFiles - .filter(file => file.selected) - .map(file => { - const document = vscode.workspace.textDocuments.find(doc => doc.uri.fsPath === file.uri.fsPath); - if (document) { - const lines = document.getText().split('\n'); - const formattedLines = lines.map(line => `\t${line}`).join('\n'); - return `${file.uri.fsPath}:\n\`\`\`\n${formattedLines}\n\`\`\``; - } - return ''; - }) - .join('\n\n'); - - // Call OpenAI API with the question and file contents - try { - const chatCompletion = await openai.createChatCompletion({ - model: "gpt-3.5-turbo-16k", - messages: [ - { role: "system", content: "Answer the coding questions, only provide the code and documentation, explaining the solution after providing the code." }, - { role: "user", content: question }, - { role: "assistant", content: fileContents } - ], - }); - - // Extract the answer from the OpenAI response - const answer = chatCompletion.data.choices[0].message.content; - - // Update the webview content to display only the OpenAI response - webviewView.webview.html = getWebviewContent(answer, question); - } catch (error) { - // Handle any errors from the OpenAI API - console.error("Failed to get OpenAI response:", error); - webviewView.webview.html = getWebviewContent(`Failed to get response from OpenAI API. Error: ${error.message}`, question); - } - } else if (message.command === 'toggleFileSelection') { - const uri = message.uri; - const file = selectedFiles.find(file => file.uri.fsPath === uri); - if (file) { - file.toggleSelected(); - fileDataProvider.refresh(); - } - } else if (message.command === 'clearSelectedFiles') { - const clearedFiles = selectedFiles.filter(file => file.selected === false); - selectedFiles.length = 0; // Clear the array - clearedFiles.forEach(file => { - fileDataProvider.refresh(); - }); - webviewView.webview.html = getWebviewContent(); - } else if (message.command === 'refreshFiles') { - fileDataProvider.refresh(); - webviewView.webview.html = getWebviewContent(); } - }); - } - }; - - context.subscriptions.push(vscode.window.registerWebviewViewProvider('gpt-context-sidebar', provider)); - + } else if (message.command === 'clearSelectedFiles') { + const clearedFiles = selectedFiles.filter(file => file.selected === false); + selectedFiles.length = 0; // Clear the array + clearedFiles.forEach(file => { + fileDataProvider.refresh(); + }); + webviewView.webview.html = getWebviewContent(); + } else if (message.command === 'refreshFiles') { + fileDataProvider.refresh(); + webviewView.webview.html = getWebviewContent(); + } else if (message.command === 'submitQuestion') { + const question = message.text; + const selectedUris = message.selectedUris; + + // Update the selectedFiles array based on the selectedUris + selectedFiles.forEach(file => { + file.selected = selectedUris.includes(file.uri.fsPath); + }); + + fileDataProvider.refresh(); + + const fileContents = selectedFiles + .filter(file => file.selected) + .map(file => { + const document = vscode.workspace.textDocuments.find(doc => doc.uri.fsPath === file.uri.fsPath); + if (document) { + const lines = document.getText().split('\n'); + const formattedLines = lines.map(line => `\t${line}`).join('\n'); + return `${file.uri.fsPath}:\n\`\`\`\n${formattedLines}\n\`\`\``; + } + return ''; + }) + .join('\n\n'); + + // Call OpenAI API with the question and file contents + try { + const chatCompletion = await openai.createChatCompletion({ + model: "gpt-3.5-turbo-16k", + messages: [ + { role: "system", content: "Answer the coding questions, only provide the code and documentation, explaining the solution after providing the code." }, + { role: "user", content: question }, + { role: "assistant", content: fileContents } + ], + }); + + // Extract the answer from the OpenAI response + const answer = chatCompletion.data.choices[0].message.content; + + // Update the webview content to display only the OpenAI response + webviewView.webview.html = getWebviewContent(answer, question); + } catch (error) { + // Handle any errors from the OpenAI API + console.error("Failed to get OpenAI response:", error); + webviewView.webview.html = getWebviewContent(`Failed to get response from OpenAI API. Error: ${error.message}`, question); + } + } + }); + } +}; + +context.subscriptions.push(vscode.window.registerWebviewViewProvider('gpt-context-sidebar', provider)); + }