copyToClipboard protobus migration (#3615)

This commit is contained in:
canvrno 2025-05-19 10:37:34 -07:00 committed by GitHub
parent 43357c1100
commit 644280bbb4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 47 additions and 11 deletions

View File

@ -0,0 +1,5 @@
---
"claude-dev": patch
---
copyToClipboard protobus migration

View File

@ -8,6 +8,9 @@ import "common.proto";
// Service for file-related operations
service FileService {
// Copies text to clipboard
rpc copyToClipboard(StringRequest) returns (Empty);
// Opens a file in the editor
rpc openFile(StringRequest) returns (Empty);

View File

@ -0,0 +1,20 @@
import * as vscode from "vscode"
import { Controller } from ".."
import { Empty, StringRequest } from "../../../shared/proto/common"
/**
* Copies text to the system clipboard
* @param controller The controller instance
* @param request The request containing the text to copy
* @returns Empty response
*/
export async function copyToClipboard(controller: Controller, request: StringRequest): Promise<Empty> {
try {
if (request.value) {
await vscode.env.clipboard.writeText(request.value)
}
} catch (error) {
console.error("Error copying to clipboard:", error)
}
return Empty.create()
}

View File

@ -607,14 +607,6 @@ export class Controller {
break
}
case "copyToClipboard": {
try {
await vscode.env.clipboard.writeText(message.text || "")
} catch (error) {
console.error("Error copying to clipboard:", error)
}
break
}
case "updateTerminalConnectionTimeout": {
if (message.shellIntegrationTimeout !== undefined) {
const timeout = message.shellIntegrationTimeout

View File

@ -53,7 +53,6 @@ export interface WebviewMessage {
| "toggleWindsurfRule"
| "toggleWorkflow"
| "deleteClineRule"
| "copyToClipboard"
| "updateTerminalConnectionTimeout"
| "setActiveQuote"

View File

@ -906,6 +906,15 @@ export const FileServiceDefinition = {
name: "FileService",
fullName: "cline.FileService",
methods: {
/** Copies text to clipboard */
copyToClipboard: {
name: "copyToClipboard",
requestType: StringRequest,
requestStream: false,
responseType: Empty,
responseStream: false,
options: {},
},
/** Opens a file in the editor */
openFile: {
name: "openFile",

View File

@ -19,6 +19,7 @@ import { checkpointDiff } from "../core/controller/checkpoints/checkpointDiff"
import { checkpointRestore } from "../core/controller/checkpoints/checkpointRestore"
// File Service
import { copyToClipboard } from "../core/controller/file/copyToClipboard"
import { openFile } from "../core/controller/file/openFile"
import { openImage } from "../core/controller/file/openImage"
import { deleteRuleFile } from "../core/controller/file/deleteRuleFile"
@ -100,6 +101,7 @@ export function addServices(
// File Service
server.addService(proto.cline.FileService.service, {
copyToClipboard: wrapper(copyToClipboard, controller),
openFile: wrapper(openFile, controller),
openImage: wrapper(openImage, controller),
deleteRuleFile: wrapper(deleteRuleFile, controller),

View File

@ -199,8 +199,14 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
}
if (textToCopy !== null) {
vscode.postMessage({ type: "copyToClipboard", text: textToCopy })
e.preventDefault()
try {
FileServiceClient.copyToClipboard({ value: textToCopy }).catch((err) => {
console.error("Error copying to clipboard:", err)
})
e.preventDefault()
} catch (error) {
console.error("Error copying to clipboard:", error)
}
}
}
}