From 970894c3fd20c40a7ffe2c3dd8ea6b7e15c1df24 Mon Sep 17 00:00:00 2001 From: Leo dev Date: Mon, 9 Feb 2026 16:48:36 +0100 Subject: [PATCH] Use localhost setting --- package.json | 5 +++++ src/client.ts | 18 +++++++++++++----- src/extension.ts | 13 ++++++++++--- src/move.ts | 4 ++-- src/run.ts | 9 +++++---- 5 files changed, 35 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 939169a..14f640e 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,11 @@ "type": "boolean", "default": false, "description": "Automatically start the server when vscode starts" + }, + "devrun.useLocalhostServer": { + "type": "boolean", + "default": false, + "description": "Use localhost:3000 as the DevRun run submission server (for development usage)" } } } diff --git a/src/client.ts b/src/client.ts index 4264aff..1c0e437 100644 --- a/src/client.ts +++ b/src/client.ts @@ -9,11 +9,18 @@ export function getCookies(): string | undefined { export function setCookies(c: string) { cookies = c; } +function getOrigin(useLocalhost: boolean) { + return useLocalhost ? "http://localhost:3000" : "https://dev-run.netlify.app"; +} -export async function addRun(problem: string, mode: string): Promise { +export async function addRun( + useLocalhost: boolean, + problem: string, + mode: string, +): Promise { return ( await axios.put( - "http://localhost:3000/api/run", + getOrigin(useLocalhost) + "/api/run", { problem, category: mode, @@ -27,9 +34,9 @@ export async function addRun(problem: string, mode: string): Promise { ).data.runId; } -export async function submitRun(runId: string) { +export async function submitRun(useLocalhost: boolean, runId: string) { await axios.post( - "http://localhost:3000/api/run", + getOrigin(useLocalhost) + "/api/run", { runId, }, @@ -42,13 +49,14 @@ export async function submitRun(runId: string) { } export async function addRunMoves( + useLocalhost: boolean, runId: string, file: string | null, language: string | null, moves: LiveRunMove[], ) { await axios.post( - "http://localhost:3000/api/run/move", + getOrigin(useLocalhost) + "/api/run/move", { runId, file, diff --git a/src/extension.ts b/src/extension.ts index f3c08b5..ffea279 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -5,6 +5,8 @@ import os from "os"; import { exec } from "child_process"; import net from "net"; +var globalStatusBarItem: vscode.StatusBarItem | undefined; + export function activate(context: vscode.ExtensionContext) { const config = vscode.workspace.getConfiguration("devrun"); const statusBarItem = vscode.window.createStatusBarItem( @@ -12,13 +14,18 @@ export function activate(context: vscode.ExtensionContext) { 10, ); + globalStatusBarItem = statusBarItem; + statusBarItem.text = "$(clock) No active run"; statusBarItem.show(); + const useLocalhost = config.get("useLocalhostServer") || false; + context.subscriptions.push( vscode.commands.registerCommand( "devrun-vscode.startRun", - async (problemId?: string) => startRun(statusBarItem, problemId), + async (problemId?: string) => + startRun(useLocalhost, statusBarItem, problemId), ), ); @@ -34,7 +41,7 @@ export function activate(context: vscode.ExtensionContext) { ); if (isStop === "Yes") { - stopRun(); + stopRun(useLocalhost); statusBarItem.text = "$(clock) No active run"; } }), @@ -95,7 +102,7 @@ export function activate(context: vscode.ExtensionContext) { } export function deactivate() { - stopRun(); + stopServer(globalStatusBarItem as any); } export function canConnect( diff --git a/src/move.ts b/src/move.ts index 1f8250e..bb4ac63 100644 --- a/src/move.ts +++ b/src/move.ts @@ -4,7 +4,7 @@ import { LiveRunMove } from "./types"; import { addRunMoves } from "./client"; import path from "path"; -export function startMonitoring(runId: string) { +export function startMonitoring(useLocalhost: boolean, runId: string) { const dmp = new diff_match_patch(); let moveId = 0; @@ -29,7 +29,7 @@ export function startMonitoring(runId: string) { moves = []; try { - await addRunMoves(runId, file, language, batch); + await addRunMoves(useLocalhost, runId, file, language, batch); } finally { isSending = false; } diff --git a/src/run.ts b/src/run.ts index 75a71a9..0e87a43 100644 --- a/src/run.ts +++ b/src/run.ts @@ -11,6 +11,7 @@ export var currentRun: { } | null = null; export async function startRun( + useLocalhost: boolean, statusBarItem: vscode.StatusBarItem, problemId?: string, ) { @@ -40,7 +41,7 @@ export async function startRun( if (!mode) return; - const runId = await addRun(problemId, mode); + const runId = await addRun(useLocalhost, problemId, mode); let start = Date.now(); @@ -48,7 +49,7 @@ export async function startRun( id: runId, problemId, start: new Date(), - stopMonitoring: startMonitoring(runId), + stopMonitoring: startMonitoring(useLocalhost, runId), interval: setInterval(() => { const elapsed = Date.now() - start; @@ -65,10 +66,10 @@ export async function startRun( await vscode.commands.executeCommand("setContext", "devrun.runActive", true); } -export async function stopRun() { +export async function stopRun(useLocalhost: boolean) { if (currentRun) { clearInterval(currentRun.interval); - submitRun(currentRun.id); + submitRun(useLocalhost, currentRun.id); currentRun = null; }