From 2c3738cfbfdc0d91b5d9da80544bef79f8ce9a79 Mon Sep 17 00:00:00 2001 From: Brett Saviano Date: Tue, 2 Jul 2024 10:33:17 -0400 Subject: [PATCH] Use default web application for CodeLens links --- src/extension.ts | 29 ++++++++++--------- src/providers/ObjectScriptCodeLensProvider.ts | 4 +-- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index e2b4f23b..05d2b11a 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -138,7 +138,6 @@ import { FileDecorationProvider } from "./providers/FileDecorationProvider"; import { RESTDebugPanel } from "./commands/restDebugPanel"; import { modifyWsFolder } from "./commands/addServerNamespaceToWorkspace"; import { WebSocketTerminalProfileProvider, launchWebSocketTerminal } from "./commands/webSocketTerminal"; -import { getCSPToken } from "./utils/getCSPToken"; import { setUpTestController } from "./commands/unitTest"; const packageJson = vscode.extensions.getExtension(extensionId).packageJSON; @@ -1387,20 +1386,24 @@ export async function activate(context: vscode.ExtensionContext): Promise { vscode.commands.registerCommand( "vscode-objectscript.openPathInBrowser", async (path: string, docUri: vscode.Uri) => { - if (typeof path == "string" && docUri && docUri instanceof vscode.Uri) { + if (typeof path == "string" && docUri instanceof vscode.Uri) { const api = new AtelierAPI(docUri); - let uri = vscode.Uri.parse( - `${api.config.https ? "https" : "http"}://${api.config.host}:${api.config.port}${ - api.config.pathPrefix - }${path}` + // Get the default web application for this namespace. + // If it can't be determined, fall back to the /csp/ web application. + const app: string = + (await api + .getCSPApps(true) + .then((data) => data.result.content.find((a) => a.default)?.name) + .catch(() => { + // Swallow errors + })) ?? `/csp/${api.ns}`; + vscode.env.openExternal( + vscode.Uri.parse( + `${api.config.https ? "https" : "http"}://${api.config.host}:${api.config.port}${ + api.config.pathPrefix + }${app}${path}` + ) ); - const token = await getCSPToken(api, path.split("?")[0]).catch(() => ""); - if (token.length > 0) { - uri = uri.with({ - query: uri.query.length ? `${uri.query}&CSPCHD=${token}` : `CSPCHD=${token}`, - }); - } - vscode.env.openExternal(uri); } } ), diff --git a/src/providers/ObjectScriptCodeLensProvider.ts b/src/providers/ObjectScriptCodeLensProvider.ts index 5ca678f5..7f50978c 100644 --- a/src/providers/ObjectScriptCodeLensProvider.ts +++ b/src/providers/ObjectScriptCodeLensProvider.ts @@ -70,7 +70,7 @@ export class ObjectScriptCodeLensProvider implements vscode.CodeLensProvider { command: "vscode-objectscript.openPathInBrowser", tooltip: "Open graphical editor in an external browser", arguments: [ - `/csp/${api.config.ns.toLowerCase()}/EnsPortal.${ + `/EnsPortal.${ xdataName == "BPL" ? `BPLEditor.zen?BP=${className}.BPL` : `DTLEditor.zen?DT=${className}.DTL` }`, document.uri, @@ -87,7 +87,7 @@ export class ObjectScriptCodeLensProvider implements vscode.CodeLensProvider { title: "Test KPI", command: "vscode-objectscript.openPathInBrowser", tooltip: "Open testing page in an external browser", - arguments: [`/csp/${api.config.ns.toLowerCase()}/${className}.cls`, document.uri], + arguments: [`/${className}.cls`, document.uri], }; } if (cmd) result.push(new vscode.CodeLens(new vscode.Range(i, 0, i, 80), cmd));