From 711294c0d74c3142841f0b421aad3bdcac7e6d65 Mon Sep 17 00:00:00 2001 From: thewahome Date: Mon, 18 Nov 2024 22:56:46 +0300 Subject: [PATCH] [partial] delete workspace item --- .../commands/deleteWorkspaceItemCommand.ts | 36 +++++++++++++++++++ vscode/microsoft-kiota/src/extension.ts | 9 ++--- 2 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 vscode/microsoft-kiota/src/commands/deleteWorkspaceItemCommand.ts diff --git a/vscode/microsoft-kiota/src/commands/deleteWorkspaceItemCommand.ts b/vscode/microsoft-kiota/src/commands/deleteWorkspaceItemCommand.ts new file mode 100644 index 0000000000..8e93385a26 --- /dev/null +++ b/vscode/microsoft-kiota/src/commands/deleteWorkspaceItemCommand.ts @@ -0,0 +1,36 @@ +import * as vscode from "vscode"; +import * as rpc from "vscode-jsonrpc/node"; + +import { extensionId } from "../constants"; +import { WorkspaceTreeItem } from "../providers/workspaceTreeProvider"; +import { Command } from "./Command"; +import { connectToKiota, KiotaLogEntry } from "../kiotaInterop"; +import { isPluginType } from "../util"; + +export class DeleteWorkspaceItemCommand extends Command { + constructor(private _context: vscode.ExtensionContext) { + super(); + } + + public getName(): string { + return `${extensionId}.workspace.deleteItem`; + } + + public async execute(workspaceTreeItem: WorkspaceTreeItem): Promise { + const result = await deleteItem(this._context, isPluginType(workspaceTreeItem.category!) ? "plugin" : "client", workspaceTreeItem.label); + vscode.window.showInformationMessage(`Delete item: ${workspaceTreeItem.label}`); + } +} + +export function deleteItem(context: vscode.ExtensionContext, workspaceItemType: string, key: string): Promise { + return connectToKiota(context, async (connection) => { + const request = new rpc.RequestType1( + workspaceItemType + ); + const result = await connection.sendRequest( + request, + key + ); + return result; + }); +}; \ No newline at end of file diff --git a/vscode/microsoft-kiota/src/extension.ts b/vscode/microsoft-kiota/src/extension.ts index 1a8cbbd433..e2fabe9b9b 100644 --- a/vscode/microsoft-kiota/src/extension.ts +++ b/vscode/microsoft-kiota/src/extension.ts @@ -4,6 +4,7 @@ import TelemetryReporter from '@vscode/extension-telemetry'; import * as vscode from "vscode"; import { CloseDescriptionCommand } from './commands/closeDescriptionCommand'; +import { DeleteWorkspaceItemCommand } from './commands/deleteWorkspaceItemCommand'; import { EditPathsCommand } from './commands/editPathsCommand'; import { GenerateClientCommand } from './commands/generate/generateClientCommand'; import { displayGenerationResults } from './commands/generate/generation-util'; @@ -81,6 +82,7 @@ export async function activate( const statusCommand = new StatusCommand(); const selectLockCommand = new SelectLockCommand(openApiTreeProvider); const updateClientsCommand = new UpdateClientsCommand(context); + const deleteWorkspaceItemCommand = new DeleteWorkspaceItemCommand(context); await loadTreeView(context, workspaceTreeProvider, regenerateCommand); await checkForLockFileAndPrompt(context); @@ -129,15 +131,10 @@ export async function activate( await regenerateCommand.execute({ clientOrPluginKey, clientOrPluginObject, generationType }); }), registerCommandWithTelemetry(reporter, migrateFromLockFileCommand.getName(), async (uri: vscode.Uri) => await migrateFromLockFileCommand.execute(uri)), + registerCommandWithTelemetry(reporter, deleteWorkspaceItemCommand.getName(), async (workspaceTreeItem: WorkspaceTreeItem) => await deleteWorkspaceItemCommand.execute(workspaceTreeItem)), ); - context.subscriptions.push( - vscode.commands.registerCommand('kiota.workspace.delete', (workspaceTreeItem: WorkspaceTreeItem) => { - vscode.window.showInformationMessage(`Delete item: ${workspaceTreeItem.label}`); - }) - ); - // create a new status bar item that we can now manage kiotaStatusBarItem = vscode.window.createStatusBarItem( vscode.StatusBarAlignment.Right,