Introduce separate event handler for deploying

This commit is contained in:
R. Richard 2019-08-26 10:40:25 +02:00
parent 24c994c41e
commit aa465955ed

View File

@ -2,7 +2,7 @@ import { ChangeDetectorRef, Component, OnInit } from '@angular/core';
import { WebSocketService } from '../services/websocket.service'; import { WebSocketService } from '../services/websocket.service';
import { WebSocketMessage } from '../message-types/websocket-message'; import { WebSocketMessage } from '../message-types/websocket-message';
import { IDEMessage } from '../message-types/ide-message'; import { IDEMessage } from '../message-types/ide-message';
import { ProcessManagerService } from '../services/processmanager.service'; import { DeployMessage } from '../message-types/deploy-message';
import { DeploymentNotificationService } from '../services/deployment-notification.service'; import { DeploymentNotificationService } from '../services/deployment-notification.service';
import { config } from '../config'; import { config } from '../config';
import { LanguageMap } from './language-map'; import { LanguageMap } from './language-map';
@ -54,7 +54,6 @@ export class IdeComponent implements OnInit {
constructor(private webSocketService: WebSocketService, constructor(private webSocketService: WebSocketService,
private changeDetectorRef: ChangeDetectorRef, private changeDetectorRef: ChangeDetectorRef,
private processManagerService: ProcessManagerService,
private deploymentNotificationService: DeploymentNotificationService) { } private deploymentNotificationService: DeploymentNotificationService) { }
ngOnInit() { ngOnInit() {
@ -62,7 +61,6 @@ export class IdeComponent implements OnInit {
this.subscribeWS(); this.subscribeWS();
this.subscribeFirstLanguageDetection(); this.subscribeFirstLanguageDetection();
this.requestCode(); this.requestCode();
this.initProcessManagerService();
this.resetAutoSaveCountdown(); this.resetAutoSaveCountdown();
} }
@ -71,6 +69,10 @@ export class IdeComponent implements OnInit {
this.command_handlers[message.key](message); this.command_handlers[message.key](message);
this.changeDetectorRef.detectChanges(); this.changeDetectorRef.detectChanges();
}); });
this.webSocketService.observeKey<DeployMessage>('deploy.finish').subscribe(
message => this.deployHandler(message)
);
} }
subscribeFirstLanguageDetection() { subscribeFirstLanguageDetection() {
@ -79,24 +81,6 @@ export class IdeComponent implements OnInit {
); );
} }
initProcessManagerService() {
this.processManagerService.init();
this.processManagerService.subscribeCallback(
config.ide.deployProcessName,
() => this.deploymentNotificationService.deploying.next(false)
);
this.processManagerService.subscribeSuccessCallback(
config.ide.deployProcessName,
message => this.setDeployButtonState(DeployButtonState.DEPLOYED)
);
this.processManagerService.subscribeErrorCallback(
config.ide.deployProcessName,
() => this.setDeployButtonState(DeployButtonState.FAILED)
);
}
reloadHandler(message: WebSocketMessage) { reloadHandler(message: WebSocketMessage) {
this.requestCode(); this.requestCode();
} }
@ -115,6 +99,15 @@ export class IdeComponent implements OnInit {
this.setCodeState(CodeState.SAVED); this.setCodeState(CodeState.SAVED);
} }
deployHandler(message: WebSocketMessage) {
if (message['status'] === 'success') {
this.setDeployButtonState(DeployButtonState.DEPLOYED);
} else if (message['status'] === 'error') {
this.setDeployButtonState(DeployButtonState.FAILED);
}
this.deploymentNotificationService.deploying.next(false);
}
autoDetectEditorLanguageIfEnabled(filename: string) { autoDetectEditorLanguageIfEnabled(filename: string) {
if (!config.ide.autoDetectFileLanguage) { if (!config.ide.autoDetectFileLanguage) {
return; return;
@ -167,7 +160,7 @@ export class IdeComponent implements OnInit {
} }
deployCode() { deployCode() {
this.processManagerService.restartProcess(config.ide.deployProcessName); this.webSocketService.send({'key': 'deploy.start'});
this.setDeployButtonState(DeployButtonState.DEPLOYING); this.setDeployButtonState(DeployButtonState.DEPLOYING);
this.deploymentNotificationService.deploying.next(true); this.deploymentNotificationService.deploying.next(true);
} }