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