From 5f12c02c8953a28b62f579dc99eb71b0e828c529 Mon Sep 17 00:00:00 2001 From: "bobo.yang" Date: Sun, 29 Dec 2024 20:29:37 +0800 Subject: [PATCH] feat: Add external link handler - Add new openLink handler to manage external URL navigation - Register openLink handler in message handler system - Implement URL opening functionality using vscode.env.openExternal --- src/handler/handlerRegister.ts | 2 ++ src/handler/openlinkHandler.ts | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 src/handler/openlinkHandler.ts diff --git a/src/handler/handlerRegister.ts b/src/handler/handlerRegister.ts index 90b80ae..f00e750 100644 --- a/src/handler/handlerRegister.ts +++ b/src/handler/handlerRegister.ts @@ -14,6 +14,7 @@ import { doVscodeCommand } from './vscodeCommandHandler'; import { readFile, writeFile, getIDEServicePort, getCurrentFileInfo } from './fileHandler'; import { getTopics, deleteTopic } from './topicHandler'; import { readConfig, writeConfig, readServerConfigBase, writeServerConfigBase } from './configHandler'; +import { openLink } from './openlinkHandler'; // According to the context menu selected by the user, add the corresponding context file @@ -83,4 +84,5 @@ messageHandler.registerHandler('getIDEServicePort', getIDEServicePort); messageHandler.registerHandler('readServerConfigBase', readServerConfigBase); messageHandler.registerHandler('writeServerConfigBase', writeServerConfigBase); +messageHandler.registerHandler('openLink', openLink); diff --git a/src/handler/openlinkHandler.ts b/src/handler/openlinkHandler.ts new file mode 100644 index 0000000..493a9c9 --- /dev/null +++ b/src/handler/openlinkHandler.ts @@ -0,0 +1,19 @@ +/* +Commands for handling configuration read and write +*/ + +import * as fs from 'fs'; +import * as path from 'path'; +import * as vscode from 'vscode'; +import yaml from 'yaml'; +import { regInMessage, regOutMessage } from '../util/reg_messages'; +import { MessageHandler } from './messageHandler'; +import { DevChatConfig } from '../util/config'; +import { logger } from '../util/logger'; + + +regInMessage({command: 'openLink', url: 'http://...'}); // when key is "", it will rewrite all config values +export async function openLink(message: any, panel: vscode.WebviewPanel|vscode.WebviewView): Promise { + const url = message.url; + vscode.env.openExternal(vscode.Uri.parse(url)); +} \ No newline at end of file