mirror of
https://github.com/andrepimenta/claude-code-chat.git
synced 2025-12-10 23:09:50 +00:00
Fix panel sending multiple prompts
This commit is contained in:
@@ -86,6 +86,7 @@ class ClaudeChatProvider {
|
||||
private _webview: vscode.Webview | undefined;
|
||||
private _webviewView: vscode.WebviewView | undefined;
|
||||
private _disposables: vscode.Disposable[] = [];
|
||||
private _messageHandlerDisposable: vscode.Disposable | undefined;
|
||||
private _totalCost: number = 0;
|
||||
private _totalTokensInput: number = 0;
|
||||
private _totalTokensOutput: number = 0;
|
||||
@@ -299,7 +300,13 @@ class ClaudeChatProvider {
|
||||
}
|
||||
|
||||
private _setupWebviewMessageHandler(webview: vscode.Webview) {
|
||||
webview.onDidReceiveMessage(
|
||||
// Dispose of any existing message handler
|
||||
if (this._messageHandlerDisposable) {
|
||||
this._messageHandlerDisposable.dispose();
|
||||
}
|
||||
|
||||
// Set up new message handler
|
||||
this._messageHandlerDisposable = webview.onDidReceiveMessage(
|
||||
message => this._handleWebviewMessage(message),
|
||||
null,
|
||||
this._disposables
|
||||
@@ -351,6 +358,7 @@ class ClaudeChatProvider {
|
||||
// Only reinitialize if we have a webview (sidebar)
|
||||
if (this._webview) {
|
||||
this._initializeWebview();
|
||||
// Set up message handler for the webview
|
||||
this._setupWebviewMessageHandler(this._webview);
|
||||
}
|
||||
}
|
||||
@@ -2160,6 +2168,12 @@ class ClaudeChatProvider {
|
||||
this._panel = undefined;
|
||||
}
|
||||
|
||||
// Dispose message handler if it exists
|
||||
if (this._messageHandlerDisposable) {
|
||||
this._messageHandlerDisposable.dispose();
|
||||
this._messageHandlerDisposable = undefined;
|
||||
}
|
||||
|
||||
while (this._disposables.length) {
|
||||
const disposable = this._disposables.pop();
|
||||
if (disposable) {
|
||||
|
||||
Reference in New Issue
Block a user