Compare commits

...
Author SHA1 Message Date
Elephant Lumps 6226e2c48b changeset 2025-05-19 19:00:21 -07:00
Elephant Lumps faeee37d49 migrate accountLogoutClicked 2025-05-19 18:59:47 -07:00
10 changed files with 42 additions and 47 deletions
+5
View File
@@ -0,0 +1,5 @@
---
"claude-dev": minor
---
migrate accountLogoutClicked to protobus
+4
View File
@@ -12,4 +12,8 @@ service AccountService {
// Generates a secure nonce for state validation, stores it in secrets,
// and opens the authentication URL in the external browser.
rpc accountLoginClicked(EmptyRequest) returns (String);
// Handles the user clicking the logout button in the UI.
// Clears API keys and user state.
rpc accountLogoutClicked(EmptyRequest) returns (Empty);
}
@@ -0,0 +1,14 @@
import type { Empty } from "../../../shared/proto/common"
import type { EmptyRequest } from "../../../shared/proto/common"
import type { Controller } from "../index"
/**
* Handles the account logout action
* @param controller The controller instance
* @param _request The empty request object
* @returns Empty response
*/
export async function accountLogoutClicked(controller: Controller, _request: EmptyRequest): Promise<Empty> {
await controller.handleSignOut()
return {}
}
+2
View File
@@ -4,9 +4,11 @@
// Import all method implementations
import { registerMethod } from "./index"
import { accountLoginClicked } from "./accountLoginClicked"
import { accountLogoutClicked } from "./accountLogoutClicked"
// Register all account service methods
export function registerAllMethods(): void {
// Register each method with the registry
registerMethod("accountLoginClicked", accountLoginClicked)
registerMethod("accountLogoutClicked", accountLogoutClicked)
}
-4
View File
@@ -341,10 +341,6 @@ export class Controller {
case "openMention":
openMention(message.text)
break
case "accountLogoutClicked": {
await this.handleSignOut()
break
}
case "showAccountViewClicked": {
await this.postMessageToWebview({ type: "action", action: "accountButtonClicked" })
break
-1
View File
@@ -27,7 +27,6 @@ export interface WebviewMessage {
| "openExtensionSettings"
| "requestVsCodeLmModels"
| "toggleToolAutoApprove"
| "accountLogoutClicked"
| "showAccountViewClicked"
| "authStateChanged"
| "authCallback"
+13 -1
View File
@@ -5,7 +5,7 @@
// source: account.proto
/* eslint-disable */
import { EmptyRequest, String } from "./common"
import { Empty, EmptyRequest, String } from "./common"
export const protobufPackage = "cline"
@@ -28,5 +28,17 @@ export const AccountServiceDefinition = {
responseStream: false,
options: {},
},
/**
* Handles the user clicking the logout button in the UI.
* Clears API keys and user state.
*/
accountLogoutClicked: {
name: "accountLogoutClicked",
requestType: EmptyRequest,
requestStream: false,
responseType: Empty,
responseStream: false,
options: {},
},
},
} as const
+2
View File
@@ -6,6 +6,7 @@ import { GrpcHandlerWrapper, GrpcStreamingResponseHandlerWrapper } from "./grpc-
// Account Service
import { accountLoginClicked } from "../core/controller/account/accountLoginClicked"
import { accountLogoutClicked } from "../core/controller/account/accountLogoutClicked"
// Browser Service
import { getBrowserConnectionInfo } from "../core/controller/browser/getBrowserConnectionInfo"
@@ -82,6 +83,7 @@ export function addServices(
// Account Service
server.addService(proto.cline.AccountService.service, {
accountLoginClicked: wrapper(accountLoginClicked, controller),
accountLogoutClicked: wrapper(accountLogoutClicked, controller),
})
// Browser Service
@@ -76,8 +76,8 @@ export const ClineAccountView = () => {
}
const handleLogout = () => {
// First notify extension to clear API keys and state
vscode.postMessage({ type: "accountLogoutClicked" })
// Use gRPC client to notify extension to clear API keys and state
AccountServiceClient.accountLogoutClicked(EmptyRequest.create()).catch((err) => console.error("Failed to logout:", err))
// Then sign out of Firebase
handleSignOut()
}
@@ -17,13 +17,6 @@ export const ClineAccountInfoCard = () => {
)
}
const handleLogout = () => {
// First notify extension to clear API keys and state
vscode.postMessage({ type: "accountLogoutClicked" })
// Then sign out of Firebase
handleSignOut()
}
const handleShowAccount = () => {
vscode.postMessage({ type: "showAccountViewClicked" })
}
@@ -35,38 +28,6 @@ export const ClineAccountInfoCard = () => {
View Billing & Usage
</VSCodeButton>
) : (
// <div className="p-2 rounded-[2px] bg-[var(--vscode-dropdown-background)]">
// <div className="flex items-center gap-3">
// {user.photoURL ? (
// <img src={user.photoURL} alt="Profile" className="w-[38px] h-[38px] rounded-full flex-shrink-0" />
// ) : (
// <div className="w-[38px] h-[38px] rounded-full bg-[var(--vscode-button-background)] flex items-center justify-center text-xl text-[var(--vscode-button-foreground)] flex-shrink-0">
// {user.displayName?.[0] || user.email?.[0] || "?"}
// </div>
// )}
// <div className="flex flex-col gap-1 flex-1 overflow-hidden">
// {user.displayName && (
// <div className="text-[13px] font-bold text-[var(--vscode-foreground)] break-words">
// {user.displayName}
// </div>
// )}
// {user.email && (
// <div className="text-[13px] text-[var(--vscode-descriptionForeground)] break-words overflow-hidden text-ellipsis">
// {user.email}
// </div>
// )}
// <div className="flex gap-2 flex-wrap mt-1">
// <VSCodeButton
// appearance="secondary"
// onClick={handleLogout}
// className="scale-[0.85] origin-left w-fit mt-0.5 mb-0 -mr-3">
// Log out
// </VSCodeButton>
// </div>
// </div>
// </div>
// </div>
<div>
<VSCodeButton onClick={handleLogin} className="mt-0">
Sign Up with Cline