close websocket connection after closing serial plotter

This commit is contained in:
Francesco Spissu 2022-11-21 11:53:56 +01:00
parent fe3fbb189c
commit f84c15bea0
4 changed files with 19 additions and 0 deletions

View File

@ -46,6 +46,7 @@ export class MonitorManagerProxyClientImpl
private wsPort?: number;
private lastConnectedBoard: BoardsConfig.Config;
private onBoardsConfigChanged: Disposable | undefined;
private isMonitorWidgetOpen = false;
getWebSocketPort(): number | undefined {
return this.wsPort;
@ -174,6 +175,14 @@ export class MonitorManagerProxyClientImpl
return this.server().getCurrentSettings(board, port);
}
setMonitorWidgetStatus(value: boolean): void {
this.isMonitorWidgetOpen = value;
}
getMonitorWidgetStatus(): boolean {
return this.isMonitorWidgetOpen;
}
send(message: string): void {
if (!this.webSocket) {
return;

View File

@ -74,6 +74,10 @@ export class MonitorWidget extends ReactWidget {
this.monitorManagerProxy.startMonitor();
}
protected override onAfterAttach(msg: Message): void {
this.monitorManagerProxy.setMonitorWidgetStatus(this.isAttached);
}
onMonitorSettingsDidChange(settings: MonitorSettings): void {
this.settings = {
...this.settings,
@ -91,6 +95,7 @@ export class MonitorWidget extends ReactWidget {
}
override dispose(): void {
this.monitorManagerProxy.setMonitorWidgetStatus(this.isAttached);
super.dispose();
}

View File

@ -65,6 +65,9 @@ export class PlotterFrontendContribution extends Contribution {
ipcRenderer.on(CLOSE_PLOTTER_WINDOW, async () => {
if (!!this.window) {
if (!this.monitorManagerProxy.getMonitorWidgetStatus()) {
this.monitorManagerProxy.disconnect();
}
this.window = null;
}
});

View File

@ -37,6 +37,8 @@ export interface MonitorManagerProxyClient {
isWSConnected(): Promise<boolean>;
startMonitor(settings?: PluggableMonitorSettings): Promise<void>;
getCurrentSettings(board: Board, port: Port): Promise<MonitorSettings>;
setMonitorWidgetStatus(value: boolean): void;
getMonitorWidgetStatus(): boolean;
send(message: string): void;
changeSettings(settings: MonitorSettings): void;
}