Archived
fix: prevent terminal autostart after close
This commit is contained in:
@@ -37,6 +37,7 @@ export class TerminalPanel extends LitElement {
|
|||||||
private suppressTerminalInput = false;
|
private suppressTerminalInput = false;
|
||||||
private observedCwd: string | undefined;
|
private observedCwd: string | undefined;
|
||||||
private loadedCwd: string | undefined;
|
private loadedCwd: string | undefined;
|
||||||
|
private autoStartConsumedCwd: string | undefined;
|
||||||
|
|
||||||
override connectedCallback(): void {
|
override connectedCallback(): void {
|
||||||
super.connectedCallback();
|
super.connectedCallback();
|
||||||
@@ -65,6 +66,7 @@ export class TerminalPanel extends LitElement {
|
|||||||
if (cwd !== this.observedCwd) {
|
if (cwd !== this.observedCwd) {
|
||||||
this.observedCwd = cwd;
|
this.observedCwd = cwd;
|
||||||
this.loadedCwd = undefined;
|
this.loadedCwd = undefined;
|
||||||
|
this.autoStartConsumedCwd = undefined;
|
||||||
this.terminals = [];
|
this.terminals = [];
|
||||||
this.selectedId = undefined;
|
this.selectedId = undefined;
|
||||||
this.disposeTerminalView();
|
this.disposeTerminalView();
|
||||||
@@ -99,10 +101,11 @@ export class TerminalPanel extends LitElement {
|
|||||||
this.error = undefined;
|
this.error = undefined;
|
||||||
try {
|
try {
|
||||||
if (this.workspace === undefined) return;
|
if (this.workspace === undefined) return;
|
||||||
|
const shouldAutoStart = this.consumeAutoStart();
|
||||||
const terminals = await terminalsApi.terminals(this.workspace.projectId, this.workspace.id);
|
const terminals = await terminalsApi.terminals(this.workspace.projectId, this.workspace.id);
|
||||||
this.terminals = terminals;
|
this.terminals = terminals;
|
||||||
this.selectPreferredLoadedTerminal({ replaceUrl: true });
|
this.selectPreferredLoadedTerminal({ replaceUrl: true });
|
||||||
if (terminals.length === 0 && this.autoStart) await this.startTerminal();
|
if (terminals.length === 0 && shouldAutoStart) await this.startTerminal();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.error = error instanceof Error ? error.message : String(error);
|
this.error = error instanceof Error ? error.message : String(error);
|
||||||
} finally {
|
} finally {
|
||||||
@@ -115,6 +118,13 @@ export class TerminalPanel extends LitElement {
|
|||||||
this.selectPreferredLoadedTerminal({ replaceUrl: true });
|
this.selectPreferredLoadedTerminal({ replaceUrl: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private consumeAutoStart(): boolean {
|
||||||
|
const cwd = this.workspace?.path;
|
||||||
|
if (!this.autoStart || cwd === undefined || this.autoStartConsumedCwd === cwd) return false;
|
||||||
|
this.autoStartConsumedCwd = cwd;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
private shouldReloadForRequestedTerminal(): boolean {
|
private shouldReloadForRequestedTerminal(): boolean {
|
||||||
const cwd = this.workspace?.path;
|
const cwd = this.workspace?.path;
|
||||||
return this.visible
|
return this.visible
|
||||||
|
|||||||
Reference in New Issue
Block a user