diff options
| author | Nate Sesti <33237525+sestinj@users.noreply.github.com> | 2023-07-16 16:11:15 -0700 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-16 16:11:15 -0700 | 
| commit | eab69781a3e3b5236916d9057ce29aba2e868913 (patch) | |
| tree | 75fb6a71f6fe7a3b304aa363c8956987789d23d7 /extension/src | |
| parent | fcfbbf562ac4b576bc80259fa9665b6067ccdcaa (diff) | |
| parent | 6e2634f70662ce04207e4a1fad2e27761179b123 (diff) | |
| download | sncontinue-eab69781a3e3b5236916d9057ce29aba2e868913.tar.gz sncontinue-eab69781a3e3b5236916d9057ce29aba2e868913.tar.bz2 sncontinue-eab69781a3e3b5236916d9057ce29aba2e868913.zip | |
Merge pull request #271 from continuedev/dev-data-analytics
record accept/reject
Diffstat (limited to 'extension/src')
| -rw-r--r-- | extension/src/activation/environmentSetup.ts | 8 | ||||
| -rw-r--r-- | extension/src/diffs.ts | 46 | ||||
| -rw-r--r-- | extension/src/suggestions.ts | 60 | 
3 files changed, 54 insertions, 60 deletions
| diff --git a/extension/src/activation/environmentSetup.ts b/extension/src/activation/environmentSetup.ts index df609a34..69a3b75a 100644 --- a/extension/src/activation/environmentSetup.ts +++ b/extension/src/activation/environmentSetup.ts @@ -400,6 +400,14 @@ function serverPath(): string {    return sPath;  } +export function devDataPath(): string { +  const sPath = path.join(getContinueGlobalPath(), "dev_data"); +  if (!fs.existsSync(sPath)) { +    fs.mkdirSync(sPath); +  } +  return sPath; +} +  function serverVersionPath(): string {    return path.join(serverPath(), "server_version.txt");  } diff --git a/extension/src/diffs.ts b/extension/src/diffs.ts index 2860258d..0bab326a 100644 --- a/extension/src/diffs.ts +++ b/extension/src/diffs.ts @@ -4,6 +4,7 @@ import * as fs from "fs";  import * as vscode from "vscode";  import { extensionContext, ideProtocolClient } from "./activation/activate";  import { getMetaKeyLabel } from "./util/util"; +import { devDataPath } from "./activation/environmentSetup";  interface DiffInfo {    originalFilepath: string; @@ -13,7 +14,9 @@ interface DiffInfo {    range: vscode.Range;  } -export const DIFF_DIRECTORY = path.join(os.homedir(), ".continue", "diffs").replace(/^C:/, "c:"); +export const DIFF_DIRECTORY = path +  .join(os.homedir(), ".continue", "diffs") +  .replace(/^C:/, "c:");  class DiffManager {    // Create a temporary file in the global .continue directory which displays the updated version @@ -222,6 +225,8 @@ class DiffManager {          );          this.cleanUpDiff(diffInfo);        }); + +    recordAcceptReject(true, diffInfo);    }    rejectDiff(newFilepath?: string) { @@ -251,11 +256,50 @@ class DiffManager {        .then(() => {          this.cleanUpDiff(diffInfo);        }); + +    recordAcceptReject(false, diffInfo);    }  }  export const diffManager = new DiffManager(); +function recordAcceptReject(accepted: boolean, diffInfo: DiffInfo) { +  const collectOn = vscode.workspace +    .getConfiguration("continue") +    .get<boolean>("dataSwitch"); + +  if (collectOn) { +    const devDataDir = devDataPath(); +    const suggestionsPath = path.join(devDataDir, "suggestions.json"); + +    // Initialize suggestions list +    let suggestions = []; + +    // Check if suggestions.json exists +    if (fs.existsSync(suggestionsPath)) { +      const rawData = fs.readFileSync(suggestionsPath, "utf-8"); +      suggestions = JSON.parse(rawData); +    } + +    // Add the new suggestion to the list +    suggestions.push({ +      accepted, +      timestamp: Date.now(), +      suggestion: diffInfo.originalFilepath, +    }); + +    // Send the suggestion to the server +    ideProtocolClient.sendAcceptRejectSuggestion(accepted); + +    // Write the updated suggestions back to the file +    fs.writeFileSync( +      suggestionsPath, +      JSON.stringify(suggestions, null, 4), +      "utf-8" +    ); +  } +} +  export async function acceptDiffCommand(newFilepath?: string) {    diffManager.acceptDiff(newFilepath);    ideProtocolClient.sendAcceptRejectDiff(true); diff --git a/extension/src/suggestions.ts b/extension/src/suggestions.ts index 6e5a444f..c2373223 100644 --- a/extension/src/suggestions.ts +++ b/extension/src/suggestions.ts @@ -1,9 +1,7 @@  import * as vscode from "vscode";  import { sendTelemetryEvent, TelemetryEvent } from "./telemetry";  import { openEditorAndRevealRange } from "./util/vscode"; -import { translate, readFileAtRange } from "./util/vscode"; -import * as fs from "fs"; -import * as path from "path"; +import { translate } from "./util/vscode";  import { registerAllCodeLensProviders } from "./lang-server/codeLens";  import { extensionContext, ideProtocolClient } from "./activation/activate"; @@ -214,62 +212,6 @@ function selectSuggestion(          : suggestion.newRange;    } -  let workspaceDir = vscode.workspace.workspaceFolders -    ? vscode.workspace.workspaceFolders[0]?.uri.fsPath -    : undefined; - -  let collectOn = vscode.workspace -    .getConfiguration("continue") -    .get<boolean>("dataSwitch"); - -  if (workspaceDir && collectOn) { -    let continueDir = path.join(workspaceDir, ".continue"); - -    // Check if .continue directory doesn't exists -    if (!fs.existsSync(continueDir)) { -      fs.mkdirSync(continueDir); -    } - -    let suggestionsPath = path.join(continueDir, "suggestions.json"); - -    // Initialize suggestions list -    let suggestions = []; - -    // Check if suggestions.json exists -    if (fs.existsSync(suggestionsPath)) { -      let rawData = fs.readFileSync(suggestionsPath, "utf-8"); -      suggestions = JSON.parse(rawData); -    } - -    const accepted = -      accept === "new" || (accept === "selected" && suggestion.newSelected); -    suggestions.push({ -      accepted, -      timestamp: Date.now(), -      suggestion: suggestion.newContent, -    }); -    ideProtocolClient.sendAcceptRejectSuggestion(accepted); - -    // Write the updated suggestions back to the file -    fs.writeFileSync( -      suggestionsPath, -      JSON.stringify(suggestions, null, 4), -      "utf-8" -    ); - -    // If it's not already there, add .continue to .gitignore -    const gitignorePath = path.join(workspaceDir, ".gitignore"); -    if (fs.existsSync(gitignorePath)) { -      const gitignoreData = fs.readFileSync(gitignorePath, "utf-8"); -      const gitIgnoreLines = gitignoreData.split("\n"); -      if (!gitIgnoreLines.includes(".continue")) { -        fs.appendFileSync(gitignorePath, "\n.continue\n"); -      } -    } else { -      fs.writeFileSync(gitignorePath, ".continue\n"); -    } -  } -    rangeToDelete = new vscode.Range(      rangeToDelete.start,      new vscode.Position(rangeToDelete.end.line, 0) | 
